Modelo Relacional (Con restricciones de integridad)

Restriucciones de identificación (Eentidades débiles)

Las restricciones tipo ID siempre se dan en relaciones 1:M, con la restricción ID en la parte de muchos. El paso a tablas será dar estos 2 pasos:

  1. Dar el paso a talas de una relación 1:M
  2. Subrayar también la clave ajena. Y como ésta ya no podrá tener valores nulos, ya no tiene sentido poner la RI nulo(a0) ànulo(r)
ER Paso a tablas

Ejemplo:

Ejercicio 14

Pasa a tablas el siguiente ER.

Solución

Ejercicio 15

Piensa cómo sería el paso a tablas del ejercicio anterior si la relación “suministrar” la hubiéramos resuelto de la segunda forma que hemos visto en las relaciones 1:M, es decir, que tenga su propia tabla.

Solución

Pero las tablas ARTICLES y SUMBINISTRAMENTS tienen la misma clave (aunque con diferentes nombres): código de artículo + código de proveedor. Por tanto, se pueden fusionar las dos tablas y tendríamos exactamente la misma solución que en el ejercicio anterior.

Conclusión

En este ejercicio no tenía sentido resolverlo de esta forma (con otra tabla).

Restricciones de existencia (RE)

Existen dos formas de tratar las restricciones de existencia RE. Aplicaremos una u otra, dependiendo de si las parejas de ocurrencias relacionadas están en la misma tabla que la entidad que tiene la restricción o no:

  • a) Si están en la misma tabla, lo indicaremos con VNN
  • b) Si no, lo indicaremos con una RI similar a una clave ajena

Primero, la RE está expresada en la misma tabla: VNN.

Veámoslo con un ejemplo.

En este ejemplo todos los profesores deben pertenecer obligatoriamente a un departamento. Es decir, no puede haber profesores sin departamento. Dicho de otra manera todos los profesores deben estar en la relación

Vamos a deducir detalladamente, como daríamos el paso a tablas.

Primero damos el paso a tablas sin tener en cuenta la RE:

DEPARTAMENTOS = codigo + nombre

PROFESORES = dni + nombre + dep + fecha

  • C. Aj: dep --> DEPARTAMENTOS(codigo)
  • R.I: nulo(dep) -> nulo(fecha)

Ahora vamos a por la RE. Si pensamos en posibles ocurrencias, ¿qué significado tiene esa RE?

dni nombre dep fecha
1 Pep INF 4-3-12
2 Pepa INF
3 Pepet MAT
4 Pepi NULL

No queremos que pase esto: que haya profesores sin departamento (como es el caso del 4, Pepi). Por tanto, obligaremos a que en el campo dep no puedan haber valores nulos:

VNN: dep

Es decir, esa E significa que:

“Todos los profesores deben pertenecer obligatoriamente a un departamento”.

  • En qué tabla están “todos los profesores” ?
    • En la de PROFESORES
  • En qué tabla están las parejas “profesor-departamento” ?
    • En la de PROFESORES también

Vemos que para expresar la RE lo tenemos todo en la misma tabla. En ese caso expresaremos la RE como un VNN:

DEPARTAMENTOS = codigo + nombre

PROFESORES = dni + nombre + dep + fecha

  • C. Aj: dep àDEPARTAMENTOS(código)
  • R.I: nulo(dep) -> nulo(fecha)
  • VNN: dep

Pero como no vamos a dejar que el dep sea nulo, no tiene sentido esa RI y, por tanto, la quitaremos.

En resumen, el paso a tablas del ejemplo quedaría así:

Solución RE en la misma tabla

DEPARTAMENTOS = codigo + nombre

PROFESORES = dni + nombre + dep + fecha

  • C. Aj: dep àDEPARTAMENTOS(código)
  • VNN: dep

Segundo, la RE está expresada en tablas diferentes: R.I: Tipo

Veámoslo con un ejemplo:

Vamos a deducir detalladamente, como daríamos el paso a tablas. En este caso la lectura sería No puede existir ningún equipo sin jugadores. Dicho de otra manera todos los equipos deben estar en la relación

Primero damos el paso a tablas sin tener en cuenta la RE:

EQUIPOS = codigo + nombre

JUGADORES = dni + nombre + equipo + posicion

  • C. Ali: equipo --> EQUIPOS(codigo)
  • R.I: nulo(equipo) -> nulo(posicion)

Ahora vamos a por la RE. Si pensamos en posibles ocurrencias, ¿qué significado tiene esa RE?

JUGADORES = dni + nombre + equipo + posicion

dni nombre equipo posición
1 Pep VCF portero
2 Pepa VCF portero
3 Pepet BAR defensa
4 Pepi NULL NULL

EQUIPOS = codigo + nombre

código nombre
VCF Valencia CF
BAR F.C. Barcelona
LEV Levante

No queremos que pase esto: que haya equipos sin jugadores (como es el caso del LEV). Por tanto, obligaremos a que en el campo código no puedan haber valores nulos:

Nueva restricción de integridad

R.I: EQUIPOS(código) JUGADORES(equipo)

Es decir, esa RE significa que:

“Todos los equipos deben tener obligatoriamente a algún jugador que juegue en él”.

  • En qué tabla están "todos los equipos" ?
    • En la de EQUIPOS
  • En qué tabla están las parejas “equipo-jugador” ?
    • En la otra tabla: la de JUGADORES

Vemos que para expresar la RE lo tenemos todo en tablas diferentes . En ese caso expresaremos la RE como una nueva RI:

Estamos indicando que para todos los elementos que tenemos en la columna EQUIPOS(codigo) debe existir un elemento en la columna JUGADORES(equipo) que coincida con él.

Representación de la RI

Esta nueva RI la hemos puesto como una restricción de la tabla de equipos pero a veces se suele representar como una restricción que debe cumplir la base de datos (ya que afecta a más de una tabla). En ese caso se pondría “fuera” de las 2 tablas, al final del esquema de paso a tablas.

R.I: EQUIPOS(código ) ÌJUGADORES(equipo)

Con lo que hemos visto ya sabemos cómo pasar a tablas las restricciones de existencia para cualquier tipo de relación. Sin embargo, ahora veremos cómo sería para las distintas posibilidades de grados y conectividades.

Relación binaria 1:M con RE en la parte del “Muchos”

ER Paso a tablas

Relación unaria 1:M con RE en la parte de “Muchos”.

ER Paso a tablas

Relación binaria 1:1 con una RE

ER Paso a tablas
  • Ahora no es necesario poner RI: nulo(a0) -> nulo(r) porque no estamos dejando que a0 sea nulo.
  • Si en lugar de poner a0 como clave ajena en B, lo hubiésemos hecho al revés (poner b0 como clave ajena en A), además de la RI del atributo de la relación, tendríamos la de la restricción de existencia. Por tanto, la primera solución es la buena, ya que te ahorras las RI.

Relación binaria 1:1 con doble RE

Este caso es especial . La entidad A está tan íntimamente relacionada con la entidad B, que puede considerarse la propia entidad. Por tanto, no tendremos una tabla para A y otra para B, sino que sólo tendremos una única tabla (le pondremos el nombre más adecuado), donde pondremos todos los atributos:

  • 1a solución : Ponemos los atributos de A en B:

  • 2a solución : Ponemos los atributos de B en A:

Relación unaria 1:1 con doble RE

Nota : las siguientes relaciones unarias...

  • 1:1 con una única E
  • 1:M con E en la parte de 1
  • 1:M con doble E

... son realmente unarias 1:1 con doble E. Por tanto, se resolverán igual.

Relación binaria 1:M con RE en la parte del “1”

ER Paso a tablas

Relación binaria 1:M con doble RE

ER Paso a tablas

Relación binaria M:M con una RE

ER Paso a tablas

Relación binaria M:M con doble RE

ER Paso a tablas

Relación unaria M:M con una RE

ER Paso a tablas

Relación unaria M:M con doble RE

ER Paso a tablas

Relación ternaria con RE

Por ejemplo, una 1:1:M, con RE en la parte del “Muchos”:

ER Paso a tablas

Dado que todas las ternarias generan tabla para la relación, cualquier RE que ponemos en alguna de las entidades (independientemente de la cardinalidad de la relación), provocará una RI como la anterior. Es decir:

Condición RI
Si A tiene una RE sobre R A[a0] R[a0]
Si B tiene una RE sobre R B[b0] R[b0]
Si C tiene una RE sobre R C[c0] R[c0]

Ejercicio 16

Pasa a tablas el siguiente ER.

Solución

Ejercicio 17

Pasa a tablas el siguiente ER.

Solución

Ejercicio 18

Pasa a tablas el siguiente ER.

Solución

Ejercicio 19

Pasa a tablas el siguiente ER.

Solución

Ejercicio 20

Pasa a tablas el siguiente ER.

Solución

Ejercicio 21

Pasa a tablas el siguiente ER

Solución

La siguiente solución no sería buena ya que obtenemos dos RI mientras que con la segunda solucióno no obtenemos ninguna.

Esta solución sería la buena, poniendo la pareja coche-piloto donde tenemos la RE:

Ejercicio 22

Pasa a tablas el siguiente ER

Solución

Ejercicios genéricos Ejercicios genéricos