Ver Mensaje Individual
  #10 (permalink)  
Antiguo 19/11/2014, 13:05
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, 2 meses
Puntos: 2658
Respuesta: [Ayuda]Como insertar una tabla entera dentro de un atributo de otra tabla?

Cita:
Iniciado por tapiadiego335 Ver Mensaje
pero mi problema es la sintaxis de sql para la tabla TablaRelacionComisionProfesor
como se hace eso de referencia ?
Porque yo encontre que en vez de hacer una tabla que las relacione,hacen directamente la fk dentro las tablas con cosntraint algo asi,me podrías hacer la sintaxis por favor de esa talba en mysql
Vamos a los fundamentos:
Si tienes una relación N:M entre dos tablas cualesquiera, eso obligatoriamente crea una tercera tabla que administre la relación, en la cual cada PK de cada tabla es FK y PK de la tabla relacional.
Esto no es un invento ni una creación. Es una definición del modelo E-R.

Es decir que:
1) Deben existir físicamente las tablas que se relacionan.
2) Se debe crear una tercera tabla, que tendrán como PK iguales campos a cada una de las PK a las que se haga referencia.
3) Ese par o conjunto de campos se define como PK en su tabla (PK compuesta).
4) Cada campo que refiera a la PK de otra tabla se define como FK de esa tabla.
5) Para hacer un alta de la relación en la tabla relaciona se requiere un INSERT específico. No exiten operaciones automágicas en este tema.
6) Para hacer un insert exitoso en es tabla relacioanl, los valores que se insertan en la PK deben existir previamente en sus tablas referidas.

Esto último es crítico. Significa que para dar de alta un registro en la tabla profesor_comision, el valor a insertar en el idComision ya debe existir en la tabla COmisión, y el idProfesor debe existir en la tabla Profesor. Esto es mandatorio.


En cuanto a un ID propio de la tabla relacional, no es necesario y es contraproducente. Sólo se debe agregar un discriminante si y sólo si un mismo profesor pueda estar relacionado con la misma comisión más de una vez.
Obviamente no es el caso, pero puede darse n otros escenarios.

Nota de consejos:
1) No le pongas prefijos innecesarios a las tablas. Generan confusion. Una tabla no necesita llamarse "TablaProfesor", o TablaRelacionProfesorComision", Con sólo usar "Profesor", "Comision" y Profesor_comision", es suficiente.
2) Usa los mismos nombres en las PK que en las FK que hacen referencia (eso está bien en los ejemplos), evitan confusiones y permiten escribir codigo más limpio.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)