Cita:
Iniciado por tapiadiego335
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.