Sistemas de Información II
Tema 5. El modelo relacional Bibliografía: Elmasri y Navathe: “Fundamentos de Sistemas de Bases de Datos” 3ª edición, 2002 (Capítulo 7). Garcia-Molina, Ullman y Widom: “Database systems: the complete book”. Prentice-Hall (Capítulo 3). Carlos Castillo UPF – 2008 1
Temas de esta clase Conceptos del modelo relacional Convertir E-R a modelo relacional
2
Relación Relación ≃ tabla de datos Por eso se llaman bases de datos relacionales Título La guerra de las galaxias El señor de los anillos 1 Mar Adentro El viaje de Chihiro
Año
Duración
1977 2001 2004 2001
123 178 125 125
3
Conceptos Esquema Película(título,año,duración)
Atributos Tuplas
Título La guerra de las galaxias El señor de los anillos 1 Mar Adentro El viaje de Chihiro
Dominio=Textos
Año
Duración
1977 2001 2004 2001
123 178 125 125
Dominio=Enteros 4
Notación Atributos Relación R Dominio de Ai
Ai R(A1, A2, A3, ..., AN) dom(Ai)
R A 1, A 2, ... , A N ⊆ dom A 1× dom A 2 ×...×dom A N
Relación son algunas de todas las combinaciones posibles 5
Relación es un conjunto Por lo tanto, no está ordenado Notación para las tuplas t = <Mar Adentro, 2004, 125> ∈ Película
Notación para subconjunto de tupla t[año,duración] = <2004, 125>
6
Dominios Restricción de dominio t[A] = <x>
⇔ x ∈ dom(A)
En algunos casos ... NULL ∈ dom(A) En tal caso diremos que la relación acepta valores nulos
7
Claves candidatas y primarias Claves candidatas
Coche NMatrícula CCA-341 OFG-851 XTV-657 WGB-959
NMotor
Marca
Modelo ...
91234908123 53489787679 30752312386 50934187123
Toyota Fiat Ford Toyota
Yaris Fiorino Mustang Avensis
La elección de una clave primaria es arbitraria Se escoge una que tenga pocos atributos
8
Restricciones de claves Restricción de claves únicas K ⊆ claves(Relación)
∀ t1, t2 ∈ Relación, t1[K] ≠ t2[K] |K|
NULL
∉ K
Una clave puede ser Un atributo Varios atributos (clave compuesta) Incluso toda la tupla en algunos casos (evitarlo) 9
Llaves foráneas Empleado Nombre Apellido
DNI
FechaNac
DNI_Jefe Salario NumDept
Departamento Nombre Número
DNI_Jefe
Dirección
Trabaja_En DNI NúmProy
Proyecto Nombre
Número
Depto
Presupuesto 10
Integridad referencial Empleado Nombre Apellido
DNI
FechaNac
DNI_Jefe Salario NumDept
Departamento Nombre Número
DNI_Jefe
Dirección
Trabaja_En DNI NúmProy
Proyecto Nombre
Número
Depto
Presupuesto 11
Mejor nombre: ID_XXX[_rol] Mejor dominio: numérico Empleado Nombre Apellido ID_emp FechaNac ID_emp_jefe Salario ID_depto
Departamento Nombre ID_depto ID_emp_direct Dirección
Trabaja_En ID_emp ID_proy
Proyecto Nombre
ID_proy
Depto
Presupuesto 12
Mantener integridad referencial Al insertar Insertar clave foránea en la otra tabla Rechazar la inserción
Al eliminar Eliminar tuplas que apuntan a esta tupla “Cascada”
Actualizar valores en tuplas que apuntan a esta tupla
13
Convertir Entidad-Relación en Modelo Relacional
14
Convertir Entidad-Relación Se comienza con un modelo E-R Porque es más fácil de diseñar Tiene dos conceptos: entidad y relación
Traducir E-R a relacional, versión simple: 1)Cada entidad se transforma en una tabla con los mismos atributos 2)Se agregan claves donde sea necesario 3)Cada relación se transforma en una tabla en que los atributos son las claves de cada entidad participante
15
Traducción simple, paso 0 Año
Nombre Película
Apellido
Nombre Actúa
Actor
Produce
Estudio
Nombre
16
Traducción simple, paso 1 Año
Nombre Película
Apellido
Nombre Actor
Actúa
ID_Película
ID_Actor ID_Estudio Produce
Estudio
Nombre
17
Traducción simple, paso 2 Año
Nombre Película
Apellido
Nombre Actúa
ID_Película
Actor ID_Actor ID_Estudio
Película ID_Película 1 2 3 4
Actor ID_Actor 1 2 3 4
Estudio ID_Estudio 1 2 3 4
Produce
Nombre
La guerra de las galaxias El señor de los anillos 1 Mar Adentro El viaje de Chihiro
Nombre
Mark Cristopher Javier Hugo
Año
1977 2001 2004 2001
Estudio
Nombre
Apellido Hamill Lee Bardem Weaving
Nombre
Ghibli New Line Cinema Lucasfilms Sogecine
18
Traducción simple, paso 3 Año
Nombre Película
Apellido
Nombre Actúa
ID_Película
Actor ID_Actor ID_Estudio
Película ID_Película 1 2 3 4
Actor ID_Actor 1 2 3 4
Estudio ID_Estudio 1 2 3 4
Nombre
La guerra de las galaxias El señor de los anillos 1 Mar Adentro El viaje de Chihiro
Nombre
Mark Cristopher Javier Hugo
Nombre
Ghibli New Line Cinema Lucasfilms Sogecine
Apellido Hamill Lee Bardem Weaving
Año
Produce
1977 2001 2004 2001
Estudio
Nombre
Actúa ID_Actor 1 2 3 4
1 2 3 2
ID_Película
Produce ID_Película 1 2 3 4
3 2 4 1
ID_Estudio
19
Combinar relaciones A veces es posible combinar relaciones El caso típico son las relaciones 1-N Relaciones 1-1 deberían descartarse antes Año
Nombre
N
Película
Apellido
Nombre Actúa
ID_Película
N
Actor
ID_Actor ID_Estudio
N
Produce
1 Nombre
Estudio
20
Combinando relación 1-N (a) Año
Nombre Película
N
Actúa
N
ID_Película
1 2 3 4
Actor ID_Actor 1 2 3 4
Estudio ID_Estudio 1 2 3 4
Nombre
La guerra de las galaxias El señor de los anillos 1 Mar Adentro El viaje de Chihiro
Nombre
Mark Cristopher Javier Hugo
Nombre
Ghibli New Line Cinema Lucasfilms Sogecine
N
Actor
ID_Actor Produce
Película ID_Película
Apellido
Nombre
Año
1
ID_Estudio Estudio
Nombre
1977 2001 2004 2001
Actúa ID_Actor
Apellido
1 2 3 4
Hamill Lee Bardem Weaving
1 2 3 2
Produce ID_Película (1) 1 2 3 4
ID_Película
3 2 4 1
ID_Estudio (N)
21
Combinando relación 1-N (b) Estudio ID_Estudio 1 2 3 4
Año
Nombre
Nombre
Película
Ghibli New Line Cinema Lucasfilms Sogecine
ID_Película
N
Actúa
N
Nombre
1 2 3 4
Actúa ID_Actor 1 2 3 4
Mark Cristopher Javier Hugo
1 2 3 2
Película ID_Película 1 2 3 4
N ID_Actor
Produce
Actor ID_Actor
Apellido
Nombre
Apellido
1
Actor ID_Estudio Estudio
Nombre
Hamill Lee Bardem Weaving
ID_Película
Nombre
La guerra de las galaxias El señor de los anillos 1 Mar Adentro El viaje de Chihiro
Año
1977 2001 2004 2001
ID_Estudio 3 2 4 1
Produce ID_Película (1) 1 2 3 4
3 2 4 1
ID_Estudio (N)
22
Combinando relación 1-N (c) Estudio ID_Estudio 1 2 3 4
Nombre
Ghibli New Line Cinema Lucasfilms Sogecine
Año
Nombre
Actor ID_Actor
Nombre
1 2 3 4
Actúa ID_Actor 1 2 3 4
Mark Cristopher Javier Hugo
1 2 3 2
Película ID_Película 1 2 3 4
Apellido
Película
Hamill Lee Bardem Weaving
ID_Película
Nombre
N
Actúa
N
N ID_Actor
Produce
1
Actor ID_Estudio Estudio
Nombre
ID_Película
La guerra de las galaxias El señor de los anillos 1 Mar Adentro El viaje de Chihiro
Apellido
Nombre
Año
1977 2001 2004 2001
ID_Estudio 3 2 4 1
23
Traducción cuando hay subclases
24
E-R a relacional con subclases IDv Matrícula
IDp Vehículo
N
Dueño
1 Propietario
Nombre
d
Bus Pasajeros
Camión
Coche
Ejes
25
Opción 1: directo E-R IDv
Vehículo
N
Dueño
IDp
1 Propietario
Nombre
Matrícula d Bus Pasajeros
Bus IDv
Camión
Coche
Ejes
Pasajeros
Camión IDv
Propietario IDp Nombre Vehículo IDv
Matrícula
Dueño IDv
IDp
Ejes
Coche IDv 26
Opción 2: orientado a objetos IDv
Vehículo
N
Dueño
1 Propietario
IDp Nombre
Matrícula d Bus Pasajeros
Camión
Coche
Ejes
Bus IDv
Matrícula Pasajeros
Camión IDv
Matrícula
Coche IDv
Matrícula
Ejes
Propietario IDp Nombre Vehículo IDv
Matrícula
Dueño IDv
IDp
Nota: La tabla vehículo existe en este caso sí y sólo si hay especialización parcial
27
Opción 3: valores nulos IDv
Vehículo
N
Dueño
1 Propietario
IDp Nombre
Matrícula d Bus Pasajeros
Vehículo IDv
Camión
Propietario IDp Nombre
Coche
Ejes
Matrícula Pasajeros
Dueño IDv
IDp
Ejes
28
Desventaja opción orientado a objetos Queremos pocas entidades Cuando hay entidades “overlapped” podríamos tener que generar todas las combinaciones posibles
NPax
Barco
Barco_Pasajeros IDb NPax
o
Barco_Carga IDb Tons
Pasajeros
Carga
Tons
Barco_Pasajeros_Carga IDb NPax Tons
29
Ventaja de usar valores nulos Puede acelerar ciertas consultas, al evitar consultar varias tablas SELECT ejes FROM vehiculo,camion WHERE camion.idv=vehiculo.idv AND vehiculo.matricula='XXX-XXX'; SELECT ejes FROM camion WHERE camion.matricula='XXX-XXX';
30
Uso de espacio extra Directo E-R Se repiten las claves primarias
Orientado a objetos No se repite nada
Valores nulos Se repiten todos los atributos
La opción “Directo E-R” es una buena solución intermedia entre ambas 31
Resumen Modelo relacional Formalización de esquemas de tablas
Traducción E-R a relacional es directa en muchos casos
32