1. 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
2. Temas de esta clase
Conceptos del modelo relacional
Convertir E-R a modelo relacional
2
3. Relación
Relación ≃ tabla de datos
Por eso se llaman bases de datos
relacionales
Título Año Duración
La guerra de las galaxias 1977 123
El señor de los anillos 1 2001 178
Mar Adentro 2004 125
El viaje de Chihiro 2001 125
3
4. Conceptos
Esquema
Película(título,año,duración)
Atributos Título Año Duración
La guerra de las galaxias 1977 123
Tuplas El señor de los anillos 1 2001 178
Mar Adentro 2004 125
El viaje de Chihiro 2001 125
Dominio=Textos Dominio=Enteros
4
5. Notación
Atributos Ai
Relación R R(A1, A2, A3, ..., AN)
Dominio de Ai 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
6. 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
7. 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
8. Claves candidatas y primarias
Claves candidatas
Coche
NMatrícula NMotor Marca Modelo ...
CCA-341 91234908123 Toyota Yaris
OFG-851 53489787679 Fiat Fiorino
XTV-657 30752312386 Ford Mustang
WGB-959 50934187123 Toyota Avensis
La elección de una clave primaria es arbitraria
Se escoge una que tenga pocos atributos
8
9. 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
10. 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
11. 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
12. 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
13. 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
15. 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
16. Traducción simple, paso 0
Nombre Año Nombre Apellido
Película Actúa Actor
Produce Estudio
Nombre
16
17. Traducción simple, paso 1
Nombre Año Nombre Apellido
Película Actúa Actor
ID_Película ID_Actor
ID_Estudio
Produce Estudio
Nombre
17
18. Traducción simple, paso 2
Nombre Año Nombre Apellido
Película Actúa Actor
ID_Película ID_Actor
ID_Estudio
Produce Estudio
Película
ID_Película Nombre Año
1 La guerra de las galaxias 1977 Nombre
2 El señor de los anillos 1 2001
3 Mar Adentro 2004
4 El viaje de Chihiro 2001
Actor
ID_Actor Nombre Apellido
1 Mark Hamill
2 Cristopher Lee
3 Javier Bardem
4 Hugo Weaving
Estudio
ID_Estudio Nombre
1 Ghibli
2 New Line Cinema
3 Lucasfilms
4 Sogecine 18
19. Traducción simple, paso 3
Nombre Año Nombre Apellido
Película Actúa Actor
ID_Película ID_Actor
ID_Estudio
Película Produce Estudio
ID_Película Nombre Año
1 La guerra de las galaxias 1977
2 El señor de los anillos 1 2001 Nombre
3 Mar Adentro 2004
4 El viaje de Chihiro 2001
Actúa
Actor ID_Actor ID_Película
ID_Actor Nombre Apellido 1 1
1 Mark Hamill 2 2
2 Cristopher Lee 3 3
3 Javier Bardem 4 2
4 Hugo Weaving
Estudio Produce
ID_Estudio Nombre ID_Película ID_Estudio
1 Ghibli 1 3
2 New Line Cinema 2 2
3 Lucasfilms 3 4
4 Sogecine 4 1
19
20. Combinar relaciones
A veces es posible combinar relaciones
El caso típico son las relaciones 1-N
Relaciones 1-1 deberían descartarse antes
Nombre Año Nombre Apellido
Película N Actúa N Actor
ID_Película ID_Actor
ID_Estudio
N Produce 1 Estudio
Nombre
20
21. Combinando relación 1-N (a)
Nombre Año Nombre Apellido
Película N Actúa N Actor
ID_Película N ID_Actor ID_Estudio
Produce 1 Estudio
Película
ID_Película Nombre Año Nombre
1 La guerra de las galaxias 1977
2 El señor de los anillos 1 2001
3 Mar Adentro 2004
4 El viaje de Chihiro 2001
Actúa
Actor ID_Actor ID_Película
ID_Actor Nombre Apellido 1 1
1 Mark Hamill 2 2
2 Cristopher Lee 3 3
3 Javier Bardem 4 2
4 Hugo Weaving
Estudio Produce
ID_Estudio Nombre ID_Película (1) ID_Estudio (N)
1 Ghibli 1 3
2 New Line Cinema 2 2
3 Lucasfilms 3 4
4 Sogecine 4 1
21
22. Combinando relación 1-N (b)
Nombre Año Nombre Apellido
Estudio
ID_Estudio Nombre
Película N Actúa N Actor
1 Ghibli
2 New Line Cinema
3 Lucasfilms ID_Película N ID_Actor ID_Estudio
4 Sogecine
Produce 1 Estudio
Actor
ID_Actor Nombre Apellido Nombre
1 Mark Hamill
2 Cristopher Lee
3 Javier Bardem
4 Hugo Weaving
Actúa
ID_Actor ID_Película
1 1
2 2
3 3
4 2
Película
ID_Película Nombre Año ID_Estudio Produce
1 La guerra de las galaxias 1977 3 ID_Película (1) ID_Estudio (N)
2 El señor de los anillos 1 2001 2 1 3
3 Mar Adentro 2004 4 2 2
4 El viaje de Chihiro 2001 1 3 4
4 1
22
23. Combinando relación 1-N (c)
Estudio
ID_Estudio Nombre
1 Ghibli
2 New Line Cinema
3 Lucasfilms
4 Sogecine
Nombre Año Nombre Apellido
Actor
ID_Actor Nombre Apellido Película N Actúa N Actor
1 Mark Hamill
2 Cristopher Lee N
ID_Película ID_Actor ID_Estudio
3 Javier Bardem
4 Hugo Weaving
Produce 1 Estudio
Actúa
Nombre
ID_Actor ID_Película
1 1
2 2
3 3
4 2
Película
ID_Película Nombre Año ID_Estudio
1 La guerra de las galaxias 1977 3
2 El señor de los anillos 1 2001 2
3 Mar Adentro 2004 4
4 El viaje de Chihiro 2001 1
23
25. E-R a relacional con subclases
IDv IDp
Matrícula Vehículo N Dueño 1 Propietario Nombre
d
Bus Camión Coche
Pasajeros Ejes
25
26. Opción 1: directo E-R
IDv IDp
Vehículo N Dueño 1 Propietario
Matrícula Nombre
d
Propietario
Bus Camión Coche IDp Nombre
Pasajeros Ejes Vehículo
IDv Matrícula
Dueño
IDv IDp
Bus Camión Coche
IDv Pasajeros IDv Ejes IDv
26
27. Opción 2: orientado a objetos
IDv IDp
Vehículo N Dueño 1 Propietario
Matrícula Nombre
d
Propietario
Bus Camión Coche IDp Nombre
Pasajeros Ejes Vehículo
IDv Matrícula
Bus Dueño
IDv Matrícula Pasajeros IDv IDp
Camión
IDv Matrícula Ejes
Nota:
Coche La tabla vehículo existe en
este caso sí y sólo si hay
IDv Matrícula especialización parcial
27
28. Opción 3: valores nulos
IDv IDp
Vehículo N Dueño 1 Propietario
Matrícula Nombre
d
Propietario
Bus Camión Coche
IDp Nombre
Pasajeros Ejes Dueño
IDv IDp
Vehículo
IDv Matrícula Pasajeros Ejes
28
29. Desventaja opción
orientado a objetos
Queremos pocas entidades
Cuando hay entidades “overlapped”
podríamos tener que generar todas las
combinaciones posibles
Barco Barco_Pasajeros
IDb NPax
o Barco_Carga
IDb Tons
NPax Pasajeros Carga Tons
Barco_Pasajeros_Carga
IDb NPax Tons
29
30. 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
31. 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
32. Resumen
Modelo relacional
Formalización de esquemas de tablas
Traducción E-R a relacional es directa
en muchos casos
32