Negrita: Key
Negrita y subrayado: primary key
(fk): Foreign Key
Relación N:M
Cuando la cardinalidad de la relación entre dos entidades es varios a varios (N:M), la relación siempre se transforma en tabla, adoptando como clave primaria y a la vez foránea, las claves primarias de las dos entidades, y teniendo como atributos los propios de la relación.
ESQUEMA RELACIONAL
Entidad 1 (Id1, atributo1)
Entidad 2 (Id2, atributo2)
Relación (Id1(fk), Id2(fk), atributoRelación)
TABLA RESUMEN
ESQUEMA RELACIONAL |
DIAGRAMA REFERENCIAL |
Entidad1 (Id1, Atributos1) |
Id1 |
Relación 1:N
Relación uno a varios (1:N). Para estas relaciones tenemos dos casos distintos:
Caso 1:1
Se aplica cuando la entidad con cardinalidad máxima 1 es obligatoria, es decir (1,1).
ESQUEMA RELACIONAL
Entidad(1,1) (IdEntidad(1,1), Atributos_Entidad(1,1))
Entidad(N) (IdEntidad(N), Atributos_Entidad(N), IdEntidad(1,1)(fk))
Caso 0:1
Este caso se aplica cuando la entidad con cardinalidad máxima 1 no es obligatoria, es decir (0,1).
ESQUEMA RELACIONAL
Entidad(1) (IdEntidad(1), AtributosEntidad(1))
Entidad(N) (IdEntidad(N), AtributosEntidad(N))
Relación (IdEntidad(N)(fk), AtributosRelación, IdEntidad(1)(fk))
TABLA RESUMEN
CASOS |
ESQUEMA RELACIONAL |
DIAGRAMA REFERENCIAL |
(1,1) |
Entidad(1,1) (IdEntidad(1,1), Atributos_Entidad(1,1)) Entidad(N) (IdEntidad(N), Atributos_Entidad(N), IdEntidad(1,1)(fk)) |
IdEntidad(1,1) Entidad(N) —————–> Entidad(1,1) |
(0,1) |
Entidad(1) (IdEntidad(1), AtributosEntidad(1)) Entidad(N) (IdEntidad(N), AtributosEntidad(N)) Relación (IdEntidad(N)(fk), AtributosRelación, IdEntidad(1)(fk)) |
IdEntidad(1) Relación —————–> Entidad(1)IdEntidad(N) Relación —————–> Entidad(N) |
Relación 1:1
Para las relaciones 1:1 podemos encontrarnos con tres casos distintos:
Caso (1,1)(1,1)
Se unen ambas entidades en una tabla y se escoge como clave primaria una cualquiera de las dos.
ESQUEMA RELACIONAL
Entidad1yEntidad2 (Id1, Atributos1, Atributos2, Id2(fk))
Se puede elegir cúal clave será primaria y cuál foránea
Caso (1,1)(0,1)
La clave primaria de la entidad con cardinalidad (1,1) se propaga como clave foránea de la entidad con cardinalidad (0,1).
ESQUEMA RELACIONAL
Entidad(1,1) (IdEntidad(1,1), AtributosEntidad(1,1))
Entidad(0,1) (IdEntidad(0,1), AtributosEntidad(0,1), IdEntidad(1,1)(fk))
Caso (0,1)(0,1)
La relación se convierte en tabla y su clave primaria estará compuesta por las claves primarias de ambas entidades, que a la vez serán claves foráneas.
ESQUEMA RELACIONAL
Entidad1 (IdEntidad1, AtributosEntidad1)
Entidad2 (IdEntidad2, AtributosEntidad2)
Relación (IdEntidad1(fk), IdEntidad2(fk), AtributosRelación)
TABLA RESUMEN
CASOS |
ESQUEMA RELACIONAL |
DIAGRAMA REFERENCIAL |
(1,1) (1,1) | Entidad1yEntidad2 (Id1, Atributos1, Atributos2, Id2(fk)) Se puede elegir cúal clave será primaria y cuál foránea |
|
(1,1) (0,1) |
Entidad(1,1) (IdEntidad(1,1), AtributosEntidad(1,1)) Entidad(0,1) (IdEntidad(0,1), AtributosEntidad(0,1), IdEntidad(1,1)(fk)) |
IdEntidad(1,1) Entidad(0,1) –————-> Entidad(1,1) |
(0,1) (0,1) |
Entidad1 (IdEntidad1, AtributosEntidad1) Entidad2 (IdEntidad2, AtributosEntidad2) Relación (IdEntidad1(fk), IdEntidad2(fk), AtributosRelación) |
IdEntidad1 IdEntidad2 |
Relación Reflexiva
Pueden darse los siguientes casos:
Caso (1:1)
En la tabla resultante se agregará 2 veces el mismo atributo, como clave primaria y como clave foránea a ella misma.
ESQUEMA RELACIONAL
Entidad1 (IdEntidad1, AtributosEntidad1, IdRol(fk))
Caso (1:N)
Para este tipo hay dos casos:
- 1:N. Si tiene cardinalidad (1,N) se procede igual que en las relaciones 1:1
ESQUEMA RELACIONAL
Entidad1 (IdEntidad1, AtributosEntidad1, IdRol(fk))
Igual que el caso anterior
- 0:N. Si tiene cardinalidad (0,N) se crea una nueva tabla cuya clave será la de la entidad del lado de varios y, además, se propaga la clave a la nueva tabla como clave foránea.
ESQUEMA RELACIONAL
Entidad1 (IdEntidad1, Atributos1)
Rol (IdEntidad1, IdRol(fk))
Caso (N:M)
Se procede igual que las relaciones N:M. La relación se convierte en tabla y su clave primaria estará compuesta por la clave primaria de ambos roles. Estas a la vez serán clave primaria y foráneas.
ESQUEMA RELACIONAL
Entidad1 (IdEntidad1, Atributos1)
Rol (IdRol, AtributosRol)
Relación (IdEntidad1(fk), IdRol(fk), AtributosRelación)
Igual que las relaciones N:M Binarias
TABLA RESUMEN
CASOS |
ESQUEMA RELACIONAL |
DIAGRAMA REFERENCIAL |
(1,1) | Entidad1 (IdEntidad1, AtributosEntidad1, IdRol(fk)) | IdRol Entidad1 ————> Entidad1 |
(1,N) o (0,N) | (1,N) Entidad1 (IdEntidad1, AtributosEntidad1, IdRol(fk)) Igual que el caso anterior(0,N) Entidad1 (IdEntidad1, Atributos1) Rol (IdEntidad1, IdRol(fk)) |
(1,N) IdRol Entidad1 ————> Entidad1(0,N) IdEntidad1 Rol ————————> Entidad1 IdRol Rol ————————> Entidad1 |
(N,M) |
Entidad1 (IdEntidad1, Atributos1) Rol (IdRol, AtributosRol) Relación (IdEntidad1(fk), IdRol(fk), AtributosRelación) |
IdEntidad1 Relación —————–> Entidad1IdRol Relación ———————> Rol |
Relación Ternaria
La relación se convierte en tabla, conteniendo sus atributos más las claves primarias de todas las entidades que asocia como claves ajenas.
La clave primaria de la tabla resultante se compondrá de las claves de las entidades, teniendo en cuenta los siguientes casos:
Relación N:N:N
Clave primaria de la relación compuesta por las claves de las entidades que a la vez serán foráneas.
ESQUEMA RELACIONAL
Relación (Id1(fk), Id2(fk), Id3(fk))
Relación 1:N:N
Igual que la anterior, pero la clave de la entidad con cardinalidad máxima 1 sólo será foránea, pero no primaria.
ESQUEMA RELACIONAL
Relación (Id1(fk), Id2(fk), Id3(fk))
Relación 1:1:N
Las claves primarias de las entidades serán foráneas de la relación, y la clave de la entidad con cardinalidad máxima N será a la vez primaria de la relación.
ESQUEMA RELACIONAL
Relación (Id1(fk), Id2(fk), Id3(fk))
TABLA RESUMEN
CASOS |
ESQUEMA RELACIONAL |
DIAGRAMA REFERENCIAL |
N: N : N | Relación (Id1(fk), Id2(fk), Id3(fk)) | Id1 Id2 Id3 |
1 : N : N | Relación (Id1(fk), Id2(fk), Id3(fk)) | |
1 : 1 : N | Relación (Id1(fk), Id2(fk), Id3(fk)) |
Generalización
Para este tipo de relaciones tenemos 3 opciones:
Opción 1
Integrar todas las entidades en una única tabla absorbiendo los subtipos. Se crea una tabla que contiene todos los atributos de la superentidad, todos los de las subentidades y el atributo discriminatorio para distinguir a qué subentidad pertenece cada registro de la tabla. Esta regla puede aplicarse a cualquier tipo de jerarquía.
ESQUEMA RELACIONAL
Todas las subentidades dentro de la tabla de superentidad
Superentidad ( IdSuperentidad, AtributosEntidad, AtributosSub1, AtributosSub2)
Opción 2
Eliminación de la superentidad en jerarquías totales y exclusivas. transfiriendo los atributos de la superentidad a cada subentidad, creándose una tabla por cada subentidad, la superentidad no tendrá tabla y se elimina el atributo que distingue entre subentidades.
ESQUEMA RELACIONAL
Eliminación de la superentidad en jerarquías totales y exclusivas
Sub1 (IdSuperentidad, AtributosSuperentidad, AtributosSub1)
Sub2 (IdSuperentidad, AtributosSuperentidad, AtributosSub2)
Relación_Sub1 (Depende de la cardinalidad de la relación)
Relación_Sub2 (Depende de la cardinalidad de la relación)
Opción 3
Insertar una relación 1:1 entre la superentidad y las subentidades. Los atributos se mantienen y cada subentidad se identificará con una clave ajena referenciando a la clave primaria de la superentidad. La superentidad mantendrá una relación 1:1 con cada subentidad.
ESQUEMA RELACIONAL
Insertar relación 1:1 entre la superentidad y las subentidades
Superentidad (IdSuperentidad, AtributosSuperentidad)
Sub1 (IdSuperentidad, AtributosSub1)
Sub2 (IdSuperentidad, AtributosSub2)
Relación (Depende de la cardinalidad de la relación entre Supertipo y la otra entidad).
TABLA RESUMEN
CASOS |
ESQUEMA RELACIONAL |
Caso 1 |
Todas las subentidades dentro de la tabla de superentidad Superentidad ( IdSuperentidad, AtributosEntidad, AtributosSub1, AtributosSub2) |
Caso 2 |
Eliminación de la superentidad en jerarquías totales y exclusivas Sub1 (IdSuperentidad, AtributosSuperentidad, AtributosSub1) Sub2 (IdSuperentidad, AtributosSuperentidad, AtributosSub2) Relación_Sub1 (Depende de la cardinalidad de la relación) Relación_Sub2 (Depende de la cardinalidad de la relación) |
Caso 3 |
Insertar relación 1:1 entre la superentidad y las subentidades Superentidad (IdSuperentidad, AtributosSuperentidad) Sub1 (IdSuperentidad, AtributosSub1) Sub2 (IdSuperentidad, AtributosSub2) Relación (Depende de la cardinalidad de la relación entre Supertipo y la otra entidad) |
Espero que este recurso os sirva para entender y acelerar el proceso de Diseño y Desarrollo de una buena Base de Datos, un saludo!!
Libro recomendado:Aprende SQL en un fin de semana
0 comentarios