You are on page 1of 32

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 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
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
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
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 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
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

Nombre Año Nombre Apellido

Película Actúa Actor

Produce Estudio

Nombre

16
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
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
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
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
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
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
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
Traducción cuando hay
subclases

24
E-R a relacional con subclases

IDv IDp

Matrícula Vehículo N Dueño 1 Propietario Nombre

Bus Camión Coche

Pasajeros Ejes

25
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
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
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
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
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