Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/09/2008, 05:45
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 4 meses
Puntos: 2658
Respuesta: cual es la mejor forma de diseñar

Esa es precisamente la visión de los programadores... Pero cuando trabajas en base de datos la visión es diferente. Lo que estás planteando es, disculpa, una visión muy antigua del modelo, previo incluso al desarrollo de la programación orientada a objetos.

Dime: ¿Cómo harías si se debe desarrollar una consulta que no está contemplada dentro del esquema inicial, usando el por ejemplo, ante la creación de nuevos cursos y nuevas facultades? ¿Cómo harías para programar un método flexible que pueda crear dinámicamente una tabla, sin saber a priori si vas a utilizar o no ciertos datos?

El principal problema de lo que planteas es que "congelas" el modelo de datos, de modo que si se produce, eventualmente, cualquier modificación al esquema inicial, hay que modificar toda la aplicación para adaptarla, mientras que en el otro caso solamente habría que incluir un registro...

Además, piensa esto: El sistema no tendría ninguna portabilidad, precisamente porque no permitiría cambiar las denominaciones de los items ingresados. ¿Y si el usuario quiere cambiarlos sin borrarlos?
Como ejemplo: Si la tabla contuviera cargos de una empresa de transporte, ¿qué pondrías como encargado de los transportes? ¿chofer o conductor? ¿Cómo llamarías a un transporte público de pasajeros? ¿Ómnibus, micro, microomnibus, camión, movil, vehiculo, bus, colectivo o uaua (como dicen en ciertas regiones)?
¿Y si el cargo deja de existir o simplemente no existe? ¿Cómo lo pones o lo sacas?

Una de las reglas principales del diseño de sistemas es: "La estructura del modelo de datos debe ser flexible, capaz de responder consultas que nunca se pensaron, y totalmente independiente de la aplicación que use los datos".

Resumen: Esas tablas SIEMPRE existen y DEBEN EXISTIR. Hace que los sistemas sean flexibles, fácilmente actualizables y muy portables.
Como anécdota, te cuento que lo de chofer o conductor ya lo hemos sufrido. En un desarrollo .Net los términos entre Argentina y México cambian... y eso implicó muchas horas de programación extra para sacarlos y poner otros.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)