Tema 7.1 - Modelo E/R al Modelo Relacional

💡
A lo largo del tema podremos referiremos al los siguientes términos de las formas indicadas:
  • Relación como tabla, entidad ó interrelación.
  • Atributo como columna.
  • Tupla como fila ó elemento.

Reglas de Transformación


⚠️
Pérdida de semántica
Al igual que en el modelo E/R, durante el modelado relacional, puede existir pérdida de semántica.
  • El modelo relacional no distingue entre entidades e interrelaciones.
  • En relaciones 1:N y 1:1 puede perderse el nombre de la interrelación.

Reglas Básicas

📦
Toda entidad se transforma en una relación (tabla). Los atributos de la entidad pasan a ser atributos de la relación (columnas).
🔀
Las interrelaciones pasarán por una transformación diferente dependiendo de su cardinalidad

Interrelaciones con cardinalidad N:M

📖
Toda interrelación con cardinalidad N:M se transforma en una relación (tabla).
🖌️
Crearemos una tabla cuyos atributos serán las claves primarias de las dos entidades que estan siendo relacionadas. La clave primaria de esta tabla será el conjunto de las claves primarias las tablas de las entidades relacionadas.
 
notion image

Interrelaciones con cardinalidad 1:N

📖
Una interrelación con cardinalidad 1:N puede transformarse o como un atributo de una tabla ya existente (propagación de clave) ó como una nueva tabla. Este nuevo atributo será siempre una clave ajena que apunta hacia el atributo principal de otra tabla.
🖌️
Propagación de clave
Normalmente, añadiremos una nueva clave en la entidad hacia donde apunta la flecha (teniendo en cuenta que la la flecha apunta a la entidad que se ubica junto a la cardinalidad *:N).
En este ejemplo, añadiríamos el atributo a la tabla libro como clave ajena que apuntaría a la tabla editorial.
En este ejemplo, añadiríamos el atributo a la tabla libro como clave ajena que apuntaría a la tabla editorial.
Resultado de trasnformar el esquema anterior (los atributos son de ejemplo)
Resultado de trasnformar el esquema anterior (los atributos son de ejemplo)
⚠️
En el caso del ejemplo, estamos perdiendo semántica ya que al situar el atributo en la tabla libro, no podemos asegurar que cada elemento en la tabla editorial, tenga al menos un elemento en la tabla libro que apunte a dicho elemento en la tabla editorial.
ℹ️
Características del nuevo atributo
Para determinar las propiedades del atributo que vamos a añadir, debemos fijarnos en la cardinalidad de la entidad (lado opuesto de la interrelación).
Si la cardinalidad mínima es 0
En este caso el atributo es opcional (admitirá valores nulos), por lo que lo marcaremos con un *
Si la cardinalidad mínima es 1
En este caso el atributo es obligatorio (no admitirá valores nulos), por lo que lo marcaremos con un NN
🖌️
Crear nueva tabla
Esta opción consiste en crear una nueva tabla para representar la interrelación de forma similar a como lo hemos hecho en para las de cardinalidad N:M
 
Querremos crear una tabla en lugar de propagar la clave en los siguientes casos:
  • Mantener la semántica de la interrelación
  • Cuando la interrelación tiene muchos atributos, y no queremos progarlos

Interrelaciones con cardinalidad 1:1

📖
Toda interrelación con cardinalida 1:1 se transforma igual que en las cardinalidades 1:N salvo que en este caso el atributo creado es marcado con la propiedad UNIQUE
💡
En caso de duda, debemos escoger situar el atributo en la entidad junto a la cardinalidad (lado opuesto de la interrelación) de 1:1 siempre que sea posible para evitar perder semántica
 

Reglas de transformación de los atributos y claves

🏷️
Los atributos que son claves candidatas se marcan con la propiedad UNIQUE
🏷️
Dado que un atributo no puede contener más de un valor, los atributos multivaluados requiren que creemos una nueva tabla.
 
Esta tabla tendrá solo dos columnas: Una con el identificador principal de la entidad que posee el atributo multivaluado, y otra para los valores de dicho atributo. Ambas columnas son parte de la clave primaria.
 
De esta manera, cada elemento de la tabla destinada al atributo, estará relacionado con un elemento de la tabla que contiene el atributo, pero como la clave primaria es compuesta, podemos relacionar varios subelementos al mismo elemento principal.
 
💡
Si no quisieramos que dos elementos puedan tener el mismo valor en un subelemento, pondríamos la propiedad UNIQUE a la columna de valores del subelemento (En la tabla del atributo multivaluado).
🏷️
Los atributos compuestos no pueden ser representados como tal sino que simplemente se expanden como atributos al mismo nivel que el resto.
♻️
Las opciones de borrado y modificación deben ser especificadas por el enunciado. Tanto borrado en cascada como borrado restringido. Sin embargo el borrado SET NULL no es posible cuando la clave es primaria (la clave primaria no puede ser puesta a null).
🌊
Para las dependencias en existencia e identificación usaremos una clave ajena con restricción de borrado y modificación en cascada.

Restricciones de interrelación

🛑
Restricciones de exclusión e inclusión
Estas restricciones requieren de usar un la restricción de verificación CHECK o ASSERT para comprobar si se cumple el requerimiento correspondiente.

Generalizaciones

📖
Le transformación de las generalizaciones busca representar tanto los subtipos como el supertipo detro del modelo relacional. Tenemos opciones para representar las generalizaciones:
Opción A: Una sola tabla
En dicha tabla se propagarán los atributos todos los subtipos, así como el atributo discriminante
Opción B: NN tablas
Esta opción consiste en crear únicamente NN tablas, una para cada una de los subtipos. En este caso no se crea una tabla para el supertipo
Opción C: N+1N+1 tablas
Esta opción consiste en crear NN tablas, una para cada una de los subtipos y una tabla adicional para el supertipo
ℹ️
Para expresar una generalización abierta o cerrada hacemos uso de la posibilidad de usar valores nulos en el atributo discriminan.