Transformación del Modelo Entidad Relación al Modelo Relacional.
Cada ENTIDAD del Modelo Entidad Relación se convertirá en una TABLA en el Modelo Relacional, de esta manera:
ENTIDAD (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1 |
Significados:
En el caso de las relaciones 1:N las ENTIDADES se convertirán en TABLAS y la entidad sobre la que recaiga la N añadirá tantos atributos como identificadores tenga la otra tabla (Clave/s Ajena/s) para recoger la información de la misma, de esta manera:
ENTIDAD_1 (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1, Atributo_2 ENTIDAD_2 (Identificador, Atributo_1, Atributo_2, …, Atributo_N, Identificador_Entidad_1) C.P: Identificador C.Aj: Identificador_Entidad_1 -> ENTIDAD_1 V.N.N: Atributo_1, Atributo_N |
Significados:
Consiguiendo que la información esté relacionada de esta manera:
ENTIDAD_1 | ||
Identificador | Atributo_1 | Atributo_2 |
1 | Información | Información |
2 | Información | Información |
… | … | … |
ENTIDAD_2 | |||
Identificador | Identificador_Entidad_1 | Atributo_1 | Atributo_N |
1 | 1 | Información | Información |
2 | 1 | Información | Información |
3 | Información | Información | |
4 | Información | Información | |
5 | 1 | Información | Información |
6 | Información | Información | |
… | … | … | … |
La clave ajena indica de dónde sale la información. El ejemplo indica que una ocurrencia de la ENTIDAD_1 se puede relacionar con 0 o N de la ENTIDAD_2. Es por ello que para ilustrar el ejemplo el Identificador ‘2’ no se utiliza en el atributo Identificador_Entidad_1, se han dejado en blanco algunos Identificador_Entidad_1 y el Identificador ‘1’ aparece muchas veces (N) en Identificador_Entidad_1 – reflejando que una ocurrencia de ENTIDAD_1 se puede relacionar con muchas de ENTIDAD_2.
Veamos el mismo ejemplo pero con la relación al revés:
ENTIDAD_1 (Identificador, Atributo_1, Atributo_2, …, Atributo_N, Identificador_Entidad_2) C.P: Identificador C.Aj: Identificador_Entidad_2 à ENTIDAD_2 V.N.N: Atributo_1, Atributo_2 ENTIDAD_2 (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1, Atributo_N |
En este caso la Clave Ajena se tendría que añadir en la ENTIDAD_1.
Ahora veamos qué pasa cuando alguna de las entidades es débil;es decir, tiene alguna Restricción de Existencia (RE):
En este caso estamos indicando que las ocurrencias de la ENTIDAD_2 se relacionan obligatoriamente con 1 (por la RE) ocurrencia de la ENTIDAD_1. Esto lo podemos reflejar en tabla obligando a que la Clave Ajena sea obligatoriamente introducida. Esto lo podemos hacer haciendo que la misma sea Valor NO Nulo.
ENTIDAD_1 (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1, Atributo_2 ENTIDAD_2 (Identificador, Atributo_1, Atributo_2, …, Atributo_N, Identificador_Entidad_1) C.P: Identificador C.Aj: Identificador_Entidad_1 à ENTIDAD_1 V.N.N: Atributo_1, Atributo_N, Identificador_Entidad_1 |
Haciendo la Clave Ajena valor NO nulo estamos obligando a que sea introducida la información, por lo que los ejemplos anteriores podrían quedar así:
ENTIDAD_1 | ||
Identificador | Atributo_1 | Atributo_2 |
1 | Información | Información |
2 | Información | Información |
… | … | … |
ENTIDAD_2 | |||
Identificador | Identificador_Entidad_1 | Atributo_1 | Atributo_N |
1 | 1 | Información | Información |
2 | 1 | Información | Información |
3 | 1 | Información | Información |
4 | 1 | Información | Información |
5 | 1 | Información | Información |
6 | 1 | Información | Información |
… | … | … | … |
El ejemplo indica que una ocurrencia de la ENTIDAD_1 se puede relacionar con 0 (como mínimo) o N (como máximo) de la ENTIDAD_2 y que cada ocurrencia de la ENTIDAD_2 se ha de relacionar con 1 (como mínimo) o 1 (como máximo);es decir, que se ha de relacionar sí o sí con una ocurrencia de la ENTIDAD_1. Es por ello que para ilustrar el ejemplo el Identificador ‘2’ de la ENTIDAD_1 no se utiliza en el atributo Identificador_Entidad_1. NO se ha dejado en blanco ningún Identificador_Entidad_1 porque es un Valor NO Nulo y el Identificador ‘1’ aparece muchas veces (N) en Identificador_Entidad_1 – reflejando que una ocurrencia de ENTIDAD_1 se puede relacionar con muchas de ENTIDAD_2.
¿Qué sucede cuando la RE está en el otro lado? Pues sucede que es un caso que NO podemos reflejar, dado que no se puede obligar de ninguna manera a introducir la información, por lo que tendríamos que reflejar una Pérdida Expresiva (PE). Veamos el caso:
ENTIDAD_1 (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1, Atributo_2 ENTIDAD_2 (Identificador, Atributo_1, Atributo_2, …, Atributo_N, Identificador_Entidad_1) C.P: Identificador C.Aj: Identificador_Entidad_1 à ENTIDAD_1 P.E: No se puede reflejar que ENTIDAD_1 se relacione obligatoriamente con ENTIDAD_2 V.N.N: Atributo_1, Atributo_N |
En el caso de las relaciones N:M las ENTIDADES se convertirán en TABLAS y la relación también (entidad-relación), siendo la clave primaria de la entidad-relación la combinación de las claves primarias de las entidades involucradas, de esta manera:
ENTIDAD_1 (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1, Atributo_2 ENTIDAD_2 (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1, Atributo_N RELACIONAR (Identificador_Entidad_1, Identificador_Entidad_2) C.P: Identificador_Entidad_1, Identificador_Entidad_2 C.Aj: Identificador_Entidad_1 à ENTIDAD_1 C.Aj: Identificador_Entidad_2 à ENTIDAD_2 |
Consiguiendo que la información esté relacionada de esta manera:
ENTIDAD_1 | ||
Identificador | Atributo_1 | Atributo_2 |
1 | Información | Información |
2 | Información | Información |
… | … | … |
ENTIDAD_2 | ||
Identificador | Atributo_1 | Atributo_N |
1 | Información | Información |
2 | Información | Información |
… | … | … |
RELACIONAR | |
Identificador_Entidad_1 | Identificador_Entidad_2 |
1 | 2 |
1 | 1 |
2 | 1 |
2 | 2 |
… | … |
Al ser Clave Primaria en conjunto lo que no se puede repetir es el conjunto de atributos. De esta manera se puede conseguir que una ocurrencia de la ENTIDAD_1 se pueda relacionar con varias ocurrencias de la ENTIDAD_2 y a la inversa.
Ahora veamos qué pasa cuando alguna de las entidades es débil;es decir, tiene alguna Restricción de Existencia (RE). ¿Qué sucede cuando hay RE en alguna de las entidades relacionadas? Pues sucede que es un caso que NO podemos reflejar, dado que no se puede obligar de ninguna manera a introducir la información, por lo que tendríamos que reflejar una Pérdida Expresiva (PE). Veamos el caso:
ENTIDAD_1 (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1, Atributo_2 P.E: No se puede reflejar que ENTIDAD_1 se relacione obligatoriamente con ENTIDAD_2 ENTIDAD_2 (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1, Atributo_N RELACIONAR (Identificador_Entidad_1, Identificador_Entidad_2) C.P: Identificador_Entidad_1, Identificador_Entidad_2 C.Aj: Identificador_Entidad_1 à ENTIDAD_1 C.Aj: Identificador_Entidad_2 à ENTIDAD_2 |
En el caso de que la RE estuviera en la ENTIDAD_2 habría que reflejar la PE en esta entidad o en las dos en el caso de que haya RE en las dos entidades.
Las Restricciones de Identificación (ID) son un caso especial de relación 1:N. La restricción siempre cae en el lado de la N y su paso a tablas lo único que conlleva es que la clave primaria de la entidad débil estará formada por los atributos identificadores de su entidad más los atributos identificadores de la otra entidad implicada, de esta manera:
ENTIDAD_1 (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1, Atributo_2 ENTIDAD_2 (Identificador, Atributo_1, Atributo_2, …, Atributo_N, Identificador_Entidad_1) C.P: Identificador, Identificador_Entidad_1 C.Aj: Identificador_Entidad_1 à ENTIDAD_1 V.N.N: Atributo_1, Atributo_N |
En el caso de que hayan atributos en las relaciones, los mismos habrá que reflejarlos en las entidades que lleven el peso de la relación, sin pérdida de todo lo expuesto anteriormente, de esta manera:
ENTIDAD_1 (Identificador, Atributo_1, Atributo_2, …, Atributo_N, Identificador_Entidad_2, Atributo_R ) C.P: Identificador C.Aj: Identificador_Entidad_2 à ENTIDAD_2 V.N.N: Atributo_1, Atributo_2 ENTIDAD_2 (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1, Atributo_N |
ENTIDAD_1 (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1, Atributo_2 ENTIDAD_2 (Identificador, Atributo_1, Atributo_2, …, Atributo_N) C.P: Identificador V.N.N: Atributo_1, Atributo_N RELACIONAR (Identificador_Entidad_1, Identificador_Entidad_2, Atributo_R) C.P: Identificador_Entidad_1, Identificador_Entidad_2 C.Aj: Identificador_Entidad_1 à ENTIDAD_1 C.Aj: Identificador_Entidad_2 à ENTIDAD_2 |