Elementos EER
Agregaciones
Vamos a ver cómo se resuelve a partir del siguiente ejemplo, donde la relación de la agregación es una binaria M:M, pero los pasos a seguir serían los mismos que si fuese una relación unaria o ternaria, tenga la conectividad que tenga.

Pasos a seguir:
-
Resolver la relación de la agregación sin tener en cuenta el resto del esquema ER, pero SIEMPRE debe salir una tabla nueva para la relación, aunque sea 1:1 o 1:M

-
Continuar con el diseño del resto del esquema. Para resolver las relaciones con la agregación, lo haremos como si estuvieran relacionadas con la tabla que ha salido antes en la relación de la agregación (en este caso, R).

Ejercicio 23
Pasa a tablas el siguiente ER.

Solución
Tener en cuenta
Para que la solución sea más sencilla he puesto la relación de la agregación (asignar) como una tabla a parte y con el nombre de la agregación (Usuarios). De esta manera una vez resuelta la agregación, la relación solucionar se relacioonará M:M entre la tabla Usuarios y la de Ejercicios.

Especializaciones / Generalizaciones
Vemos cómo sería el paso a tablas a partir del siguiente ejemplo:

-
Una tabla por cada superclase (con su clave y los atributos propios de la superclase):
Tabla EMPLEADOS EMPLEADOS = dni + nombre + ape1 + ape2 + d_nacimiento + dirección -
Una tabla para cada subclase (con la clave de la superclase y los atributos propios de la subclase). Y claves ajenas correspondientes.
Tabla COMERCIALES COMERCIALES = dni + comisión - C. Aj: dni -> EMPLEADOS(dni) Tabla TÉCNICOS TÉCNICOS = dni + nivel - C. Aj: dni -> EMPLEADOS(dni) Tabla INGENIEROS INGENIEROS = dni + licenciatura - C. Aj: dni -> EMPLEADOS(dni)
Si la especialización es Total:
- R.I. Empleados[dni] = Comerciales[dni] ∪ Técnicos[dni] ∪ Ingenieros[dni]
Si la especialización es Disjunta:
- R.I. Comerciales[dni] ∩ Técnicos[dni] = ∅
- R.I. Comerciales[dni] ∩ Ingenieros[dni] = ∅
- R.I. Técnicos[dni] ∩ Ingenieros[dni] = ∅
Parcial y Disjunta
Para los otros tipos de especialización (tanto parcial como superpuesta) no pondremos ninguna restricción de integridad, ya que no suponen ninguna limitación a los datos.
Otra forma, si la especialización es Total y Disjunta
Ninguna tabla para la superclase. Y una tabla por cada subclase: con la clave y los atributos de la superclase más los atributos propios de la subclase:
COMERCIALES = DNI + Nombre + Cog1 + Cog2 + Fecha_nace +Dirección + Comisión
TÉCNICOS = DNI + Nombre + Cog1 + Cog2 + Fecha_nace +Dirección + Nivel
INGENIEROS = DNI + Nombre + Cog1 + Cog2 + Fecha_nace +Dirección + Licenciatura
Pero esta opción:
- no es válida puesto que no podríamos controlar que el dni no se pueda repetir (por ejemplo, podría haber un comercial con el mismo dni que un técnico)
- no es válida para una especialización Parcial ya que no podríamos insertar a un empleado que no fuera de ninguna especialidad.
- no es válida para una especialización Superpuesta, puesto que si un empleado tiene muchas especialidades, sus datos aparecerían de forma repetida en más de una tabla.
Además, tiene el inconveniente de que, cuando buscamos a un empleado cualquiera, deberemos recorrer todas las tablas de las subclases para ver si está o no.
Esta opción NO es una buena práctica.
Ejercicio
Ejercicio 24
Pasa a tablas el siguiente ER.

Solución
