Transformación modelo entidad-relación a modelo relacional
He preparado una tabla para hacer más fácil la transformación de un diagrama entidad-relación a un modelo relacional. Según la relación y la cardinalidad entre las entidades de nuestro diagrama, estas pueden transformarse a tablas o no.
Os dejo un archivo PDF con la tabla de transformaciones y paso a explicarosla:
Transformación modelo entidad-relación a modelo relacional
LEYENDA
Para el esquema relacional de los siguientes casos hay que tener en cuenta:
Negrita: Clave
Negrita y subrayado: clave primaria
(fk): Foreign Key (Clave foránea)
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)
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))
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)
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
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))
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, por tanto 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)
Libros recomendados
Aprende SQL en un fin de semana
The Coder Habits: Los 39 hábitos del programador profesional
Otros artículos
Antivirus ESET Nod32 100% Recomendado
Transformación modelo entidad-relación a modelo relacional – Javier Jiménez