Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/08/2013, 08:41
Avatar de replica
replica
 
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 19 años, 6 meses
Puntos: 2
Respuesta: Quiero proponer un caso

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola Replica:

En realidad en esto del modelado de datos no hay una "mejor" manera de hacer las cosas, aunque sí hay que tomar en cuenta algunas consideraciones:

Por ejemplo, en el primer caso, estás considerando 30 alumnos como máximo, pero qué pasa si fuera el caso de que no completaras el grupo??? imagina que alguna clases será tomada sólo por 20 alumnos... ¿cómo vas a manejar los campos restantes? si tu idea es poner los id's a tu tabla alumnos, entonces estás forzando a que todos los grupos sean de 30 alumnos, no menos... y si piensas en la posibilidad de poner campos NULL, entonces no podrías definir las relaciones de FK, y una tabla sin relaciones de integridad, se convierte en simplemente en un montón de basura.
Sí, en el primer caso pensé en poner campos nulos. En realidad, (creo) que no pasaría nada, si está nulo es que no hay alumnos y punto, no hay ninguna tabla de donde sacar los datos de ese alumno, porque no hay. Y esta tabla de horarios no iba a prestar su clave a ninguna otra tabla, así que mi pensamiento es que se puede sostener sin problema (no llegué a ponerla en producción). Estudiando el caso con un poco más detenimiento, llegué a la conclusión de que no era el caso correcto, y derivé en el segundo.

Cita:
El segundo modelo es un poco más flexible, aunque no veo la necesidad de el campo para saber si está escrito o no... es decir, por un lado tienes la tabla de alumnos, por otro lado la tabla de maestros y finalmente la tabla de horarios-maestro... ahora bien, la cuarta tabla lo único que debería de incluir es el id del alumno y el id de de la tabla horarios-maestros... si un alumno NO VA A TOMAR CIERTA CLASE, entonces simplemente NO APARECE EN ESTA TABLA. es decir, en la cuarta tabla sólo aparecerían las clases que toman cada alumno... para evitar que un alumno esté "repetido" en una misma clase, simplemente defines una llave compuesta... (es la misma validación de la que hablabas en el primer caso)

Hay mucha tela de donde cortar, pero en definitiva, creo que el primer modelo más que facilitarte las cosas, terminaría por complicarlas.

Saludos
Leo.
Sí tengo la necesidad de saber si acude o no, porque el alumno está inscrito en esa clase, y es en esa tabla donde guardo la información de que pertenece a esa hora, ese día y con ese profesor.

El caso es tan flexible que el alumno es capaz de pedir que le cambien la hora a otro día y con otro profesor, y necesito saber si ha tomado clases o no, y cuántas.

La clave principal de esa segunda tabla, obviamente, es compuesta (Id de horario + Id de alumno).