IIC2413 / Syllabus-2020-1

36 stars 22 forks source link

Tablas en relaciones #131

Closed juakoke closed 4 years ago

juakoke commented 4 years ago

Tengo una tabla que es una relación. Esta tabla relaciona 2 tablas en una relación 1 es a N, entonces en la tabla de relación tengo los id de las otras tablas solamente. Mi pregunta es que esos id serían llaves foráneas, pero una de esas sería primaria también al mismo tiempo en la misma tabla, es correcto el siguiente codigo para crear la tabla de la relacion? CREATE TABLE Relacion (did_1 INT PRIMARY KEY, cid INT, FOREIGN KEY(did) REFERENCES Tabla_1(did) ON DELETE CASCADE, FOREIGN KEY(cid) REFERENCES Tabla_2(cid) ON DELETE CASCADE);

nivek0o0 commented 4 years ago

Sí, ese comando va a funcionar perfecto, siempre y cuando did y cid sean primary key o unique en sus respectivas tablas.

Ahora, si la relación es estrictamente 1:N entonces no es necesaria una tabla intermedia. Puedes simplemente poner la PK de la tabla que es 1 en las filas de la tabla que es N como FK, para indicar una especie de "pertenencia".

Si pudieras llegar a tener un caso 0:N, necesitarías la tabla intermedia para evitar dejar un null en la columna FK de la tabla que está del lado N.