La forma en que se transformará una relación del diagrama E/R al modelo Relacional dependerá de su cardinalidad:
- Cardinalidad N:M.- Una relación con cardinalidad N:M siempre se transformará en una tabla nueva que tendrá como clave primaria compuesta la concatenación de las claves primarias de las entidades que relaciona, cada una de las cuales, además de ser parte de la clave primaria de la nueva tabla, será clave ajena que referenciará a la tabla de procedencia (a la tabla donde este atributo es clave primaria).
Si la relación contiene atributos, éstos pasarán a formar parte de la nueva tabla. En este caso es importante que comprobemos que la clave primaria compuesta de la nueva tabla es suficiente, siendo habitual que deba completarse con algún atributo procedente de la relación, especialmente si es de tipo fecha.
- Cardinalidad 1:N o N:1.- Para transformar una relación de uno a muchos o de muchos a uno hay dos soluciones:
A) Propagar la clave primaria de la entidad con cardinalidad 1 a la tabla resultante de transformar la entidad con cardinalidad N donde será una clave ajena que referenciará a la tabla donde es clave primaria.
B) Transformar la relación en una nueva tabla, como si se tratara de una relación N:M.
Para decidir sobre una u otra solución nos fijaremos en la cardinalidad de la entidad que tiene cardinalidad máxima 1:
Si esa cardinalidad es (1,1) optaremos por propagar la clave desde la entidad con cardinalidad máxima 1 a la entidad con cardinalidad máxima N, donde será clave ajena. Los posibles atributos de la relación se pasarán a la entidad con tipo N.
Si esa cardinalidad es (0,1) optaremos por crear una nueva tabla que tendrá como clave primaria la clave primaria de la entidad con cardinalidad N, y como clave ajena la clave primaria de la entidad con cardinalidad 1. La nueva tabla acogerá los posibles atributos de la relación.
Nótese que si en este caso optásemos por propagar la clave nos encontraríamos con que todos los inmuebles no vendidos tendrían nulo el valor del DNI.
Resumen del paso al modelo relacional de la relación UNO a MUCHOS
|
Cardinalidades de entidad
|
¿Cómo pasamos al modelo relacional?
|
|
(1,n) y (0,1)
|
CREAR nueva tabla con las claves primarias de ambas entidades y los propios atributos de la relación. La clave primaria de esta nueva tabla será la que corresponde a la entidad de cardinalidad N. Las claves ajenas serán los atributos que hemos propagado de ambas entidades y referenciarán a ellas respectivamente.
|
|
(1,n) y (1,1)
|
PROPAGAR la clave primaria desde la entidad con cardinalidad máxima 1 hacia la entidad con cardinalidad máxima N siendo además clave ajena que referenciará a su tabla de procedencia. Los atributos de la relación también se propagarán a la entidad con cardinalidad N.
|
Después de observar los dos posibles casos, en la mayoría de los casos cuando nos encontramos con una relación UNO a MUCHOS en los que se podría emplear la creación de una nueva tabla, también se utiliza la PROPAGACIÓN de clave de la entidad con cardinalidad máxima 1 hacia la entidad con cardinalidad máxima N. La ventaja de crear una nueva tabla tan sólo es para evitar el almacenamiento de valores NULL.
- Cardinalidad 1:1.- La transformación de relaciones con cardinalidad de uno a uno presenta dos posibilidades:
A).- Crear una nueva tabla.
B).- Propagar la clave primaria de una de las entidades, como clave ajena, a la tabla resultante de la otra entidad.
Para elegir una u otra opción debemos prestar atención a las cardinalidades de las dos entidades relacionadas:
La opción A será recomendable si las cardinalidades de las entidades son (0,1) y (0,1). En este caso crearemos una nueva tabla, con el mismo tratamiento visto para el caso de M:N, pues en ambas entidades habrá ocurrencias no relacionadas con las de la otra entidad.
La opción B se elegirá si al menos una cardinalidad de entidad es (1,1). Podemos tener dos casos:
-
- Si las cardinalidades de las entidades son (0,1) y (1,1) entonces la propagación se hará desde la entidad con cardinalidad (1,1) hacia la que tiene cardinalidad (0,1).
- Si las cardinalidades de las entidades son (1,1) y (1,1) entonces podemos elegir propagar la clave primaria de una de las tablas hacia la otra o viceversa.
Supongamos el siguiente esquema E/R:
Un análisis detallado de las cardinalidades de las entidades indica que todo grupo tiene un profesor tutor, pero no todo profesor es tutor de un grupo. Lo correcto será exportar la clave primaria de PROFESOR a GRUPO, donde será clave ajena, evitando con ello los valores nulos que se producirían en caso contrario.
Resumen del paso al modelo relacional de la relación UNO a UNO
|
Cardinalidades de entidad
|
¿Cómo pasamos al modelo relacional? |
|
(0,1) y (0,1)
|
CREAR nueva tabla poniendo como clave primaria una de las claves primarias de alguna de las entidades que relaciona.
|
|
(1,1) y (1,1)
|
PROPAGAR la clave primaria desde una entidad cualquiera hacia la otra convirtiéndose en clave ajena.
|
|
(0,1) y (1,1)
|
PROPAGAR la clave primaria desde la entidad con cardinalidad (1,1) hacia la entidad con cardinalidad (0,1). Siendo allí clave ajena.
|
Si una cardinalidad de entidad es (1,1) siempre vamos a propagar la clave y no crearemos ninguna tabla nueva. Tendremos que fijarnos en la cardinalidad de la otra entidad para saber si podemos propagar la clave de la entidad que que decidamos nosotros como diseñadores o bien debemos propagar la clave de una de ellas hacia la otra.
- Relaciones no binarias, con grado distinto a 2.
Las relaciones de grado 1 o reflexivas se transforman siguiendo las pautas indicadas anteriormente, con la salvedad de que en vez de dos entidades distintas se trata de la misma entidad.
Las relaciones de grado 3 o superior es recomendable descomponerlas en varias de grado 2, pero no siempre es posible sin que se pierda semántica asociada a la situación real. En este caso suelen transformarse creando una nueva tabla que contendrá como claves ajenas las tres claves primarias de las entidades que relaciona. La elección de la clave primaria dependerá de la cardinalidad:
Cómo elegir la clave primaria en las relaciones ternarias
|
Cardinalidad de la relación
|
Clave primaria de la nueva tabla
|
|
M:N:P
|
Compuesta por las distintas claves primarias de las entidades relacionadas.
|
|
M:N:1
|
Compuesta por las dos claves primarias de las entidades etiquetadas con cardinalidad M y N.
|
|
N:1:1
|
Compuesta por la clave primaria de la entidad etiquetada con cardinalidad N y cualquiera de las claves primarias de las entidades etiquetadas con cardinalidad 1.
|
|
1:1:1
|
Compuesta por las claves primarias de dos entidades cualesquiera.
|
- Relaciones con restricciones de exclusividad, inclusividad, exclusión e inclusión.
Al transformar el diagrama E/R al modelo Relacional no se tienen en cuenta las posibles restricciones de las relaciones. La implementación de esas restricciones se realizará con disparadores que se estudiarán más adelante.
...