Algebra Relacional
Tema 6. Álgebra 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 5). Dr. Carlos Castillo UPF – 2005
1
Operaciones
Proyectar () Seleccionar () Producto cartesiano (×) Join ó Reunir ( ) Operacionesde conjuntos
Unir (∪) Intersectar (∩) Restar (–)
2
Proyección ()
Selecciona el valor de ciertos atributos de todas las tuplas de una relación
A1,A2,...,An(R) = { t[A1,A2,...,An] : t ∈ R }
Selecciona columnas completas
3
Proyección () ejemplos
Película ID_Película
1 2 3 4
Nombre
La guerra de las galaxias El señor de los anillos 1 Mar Adentro El viaje de Chihiro
Año1977 2001 2004 2001
Actor ID_Actor
1 2 3 4
Nombre
Mark Cristopher Javier Hugo
Apellido
Hamill Lee Bardem Weaving
Año(Película) = {,,,} ID_Película,Año(Película) = {,,,} Nombre(Actor) = {,,,}
4
Proyección () en SQL
A
(R) 1,A2,...,An
SELECT A1,A2,...,An FROM R
5
Selección ()
Selecciona el valor de ciertas tuplas
condición(R) = { t∈R : condición(t) escierto}
Selecciona filas completas
6
Selección () ejemplos
Película ID_Película
1 2 3 4
Nombre
La guerra de las galaxias La comunidad del anillo Mar Adentro El viaje de Chihiro
Año
1977 2001 2004 2001
Actor ID_Actor
1 2 3 4
Nombre
Mark Cristopher Javier Hugo
Apellido
Hamill Lee Bardem Weaving
Apellido=Lee(Actor) = {} Año>2000(Película) = {, }
7
Selección ()en SQL
condición(R)
SELECT * FROM R WHERE condición
8
Composición de selección y proyección ,
Película ID_Película
1 2 3 4
Nombre
La guerra de las galaxias La comunidad del anillo Mar Adentro El viaje de Chihiro
Año
1977 2001 2004 2001
Actor ID_Actor
1 2 3 4
Nombre
Mark Cristopher Javier Hugo
Apellido
Hamill Lee Bardem Weaving
Nombre(Apellido=Lee(Actor))= {} Nombre(Año>2000(Película)) = {, }
9
Composición ( y ) en SQL
A1,A2,...,An(condición(R))
SELECT A1,A2,...,An FROM R WHERE condición
10
Eliminar duplicados ()
Elimina tuplas duplicadas en una relación
Película ID_Película
1 2 3 4
(R)
Nombre
La guerra de las galaxias La comunidad del anillo Mar adentro El viaje de Chihiro
Año
1977 2001 2004 2001ID_Estudio
3 2 4 1
(Año(Película) = { 1997, 2001, 2004 }
11
Operación en SQL
(R)
SELECT DISTINCT * FROM R
12
Producto cartesiano (×)
A × B = {(a,b): a ∈ A ∧ b ∈ B} Ejemplo:
A = {s,t} B = {u,v,w} A × B = {s,t} × {u,v,w} { (s,u),(s,v),(s,w),(t,u),(t,v),(t,w) }
La cardinalidad es |A × B| = |A||B|
13
Película ID_Película
1 2 3 4
Producto cartesiano (×) ejemplosNombre
La guerra de las galaxias La comunidad del anillo Mar adentro El viaje de Chihiro
Año
1977 2001 2004 2001
ID_Estudio
3 2 4 1
Estudio ID_Estudio
1 2 3 4
Nombre
Ghibli New Line Cinema Lucasfilms Sogecine
Película×Estudio =
{ , , , , , , , , , , ... }
14
Producto cartesiano (×) en SQL
R1×R2
SELECT * FROM R1,R2
15
Seleccionar combinaciones correctasPelícula ID_Película
1 2 3 4
Nombre
La guerra de las galaxias La comunidad del anillo Mar adentro El viaje de Chihiro
Año
1977 2001 2004 2001
ID_Estudio
3 2 4 1
Estudio ID_Estudio
1 2 3 4
Nombre
Ghibli New Line Cinema Lucasfilms Sogecine
Película.ID_estudio=Estudio.ID_Estudio(Película×Estudio) =
{ , , , }
16
Seleccionar combinaciones correctas en SQL
R1.k=R2.k(R1×R2)SELECT * FROM R1,R2 WHERE R1.k=R2.k
17
Notación, operación Reunir (JOIN)
R1.k=R2.k (R1×R2)
R1
k
R2
18
Operación JOIN en SQL
R1
k
R2
SELECT * FROM R1,R2 WHERE R1.k=R2.k
19
Operación JOIN en MySQL
R1 R2
k
SELECT * FROM R1 JOIN R2 USING(k)
20
JOIN natural
R1 R2
Omitir el subíndice significa:
Unir según todos los atributos que...
Regístrate para leer el documento completo.