PDF de programación - Tema 6. Álgebra relacional - Sistemas de Información II

Imágen de pdf Tema 6. Álgebra relacional - Sistemas de Información II

Tema 6. Álgebra relacional - Sistemas de Información IIgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 3 de Febrero del 2018)
812 visualizaciones desde el 3 de Febrero del 2018
269,8 KB
29 paginas
Creado hace 16a (28/03/2008)
Sistemas de Información II
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).

Carlos Castillo

UPF – 2008

1

Operaciones

Proyectar ()
Seleccionar ()
Producto cartesiano (×)
Join ó Reunir ( )
Operaciones de conjuntos

Unir (∪)
Intersectar (∩)
Restar (–)

2

Proyección ()

Selecciona el valor de ciertos atributos
de todas las tuplas de una relación
(R) = { t[A1,A2,...,An] : t ∈ R }

A1,A2,...,An

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ño
1977
2001
2004
2001

Actor
ID_Actor

1
2
3
4

Nombre

Mark
Cristopher
Javier
Hugo

Apellido

Hamill

Lee

Bardem
Weaving

Año(Película) =

{<1977>,<2001>,<2004>,<2001>}

ID_Película,Año(Película) =

{<1,1977>,<2,2001>,<3,2004>,<4,2001>}

Nombre(Actor) =

{<Mark>,<Cristopher>,<Javier>,<Hugo>}

4

Proyección () en SQL

A1,A2,...,An

(R)

SELECT A1,A2,...,An FROM R

5

Selección ()

Selecciona el valor de ciertas tuplas

condición(R) = { t∈R : condición(t) es cierto}

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

{<2,Cristopher,Lee>}


Año>2000(Película) =

{<2,La comunidad del anillo,2001>,
<4,El viaje de Chihiro,2001>}

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

{<Cristopher>}


Nombre(Año>2000(Película)) =

{<La comunidad del anillo>,
<El viaje de Chihiro>}

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

(R)

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

ID_Estudio

3
2
4
1

(Año(Película) = { 1997, 2001, 2004 }

11

Operación delta 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

Producto cartesiano (×)

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

ID_Estudio

3
2
4
1

Estudio
ID_Estudio
1
2
3
4

Nombre

Ghibli
New Line Cinema
Lucasfilms
Sogecine

Película×Estudio =
{
<1,La guerra de las galaxias,1977,3,1,Ghibli>,
<1,La guerra de las galaxias,1977,3,2,New Line Cinema>,
<1,La guerra de las galaxias,1977,3,3,Lucasfilms>,
<1,La guerra de las galaxias,1977,3,4,Sogecine>,
<2,La comunidad del anillo,2001,2,1,Ghibli>,
<2,La comunidad del anillo,2001,2,2,New Line Cinema>,
<2,La comunidad del anillo,2001,2,3,Lucasfilms>,
<2,La comunidad del anillo,2001,2,4,Sogecine>,
<3,Mar adentro,2004,4,1,Ghibli>,
<3,Mar adentro,2004,4,2,New Line Cinema>,
... }

14

Producto cartesiano (×) en SQL

R1×R2

SELECT * FROM R1,R2

15

Seleccionar combinaciones

correctas

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

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) =
{
<1,La guerra de las galaxias,1977,3,3,Lucasfilms>,
<2,La comunidad del anillo,2001,2,2,New Line Cinema>,
<3,Mar adentro,2004,4,4,Sogecine>,
<4,El viaje de Chihiro,2001,1,1,Ghibli>
}

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

SELECT * FROM R1 JOIN R2 USING(k)

20

JOIN natural

R1 R2

Omitir el subíndice significa:

Unir según todos los atributos que tengan
el mismo nombre en las dos tablas

21

Operación NATURAL JOIN

en MySQL

R1 R2

SELECT * FROM R1 NATURAL JOIN R2

Nota: esto usa todos los atributos que se llamen de la
misma manera, a veces no es lo que nosotros queremos
 Comunitat( id_comunitat, nom )
Municipi( id_municipi, id_comunitat, nom )

Queremos unir id_comunitat pero no nom

22

Ejemplo de NATURAL JOIN

mysql> select comunitat.nom, municipi.nom,
municipi.superficie from comunitat natural join municipi;
+---------+---------+------------+
| nom | nom | superficie |
+---------+---------+------------+
| Ceuta | Ceuta | 19.52 |
| Melilla | Melilla | 13.96 |
+---------+---------+------------+
2 rows in set (0.14 sec)
mysql> select comunitat.nom, municipi.nom,
municipi.superficie from comunitat join municipi
using(ca_id);
+-----------+----------+------------+
| nom | nom | superficie |
+-----------+----------+------------+
| Andalucía | Abla | 45.28 |
| Andalucía | Abrucena | 83.18 |
| Andalucía | Adra | 89.98 |
...

23

LEFT JOIN

JOIN elimina algunos datos

Los que no están en las dos tablas

LEFT JOIN reemplaza los eliminados por
valores nulos en la tabla de la izquierda

24

Operación LEFT JOIN

en MySQL

R1 k R2

SELECT * FROM R1 LEFT JOIN R2 USING(k)

25

Ejemplo LEFT JOIN

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

ID_Estudio

3
2
4
1

Estudio
ID_Estudio
1
2
3
4
5

Nombre

Ghibli
New Line Cinema
Lucasfilms
Sogecine
Nuevo Estudio

SELECT count(id_pelicula) AS CNT
FROM estudio JOIN pelicula
USING (id_estudio)

SELECT count(id_pelicula) AS CNT
FROM estudio LEFT JOIN pelicula
USING (id_estudio)

CNT

Nombre

Ghibli
New Line Cinema
Lucasfilms
Sogecine

CNT

Nombre

Ghibli
New Line Cinema
Lucasfilms
Sogecine
Nuevo Estudio

1
1
1
1

1
1
1
1
0

26

Otro ejemplo LEFT JOIN

Ciudad

id_ciudad

1
2
3
4
5

Nombre

Barcelona
Berlin
Roma
Paris
Budapest

id_llegada

Viaje

id_salida

1
1
5
5
5
5
2

2
4
3
4
2
1
4

SELECT
ciudad.nombre,COUNT(viaje.id_salida)
FROM
ciudad LEFT JOIN viaje ON
(ciudad.id_ciudad=viaje.id_salida)
GROUP BY
ciudad.nombre;

CNT

Nombre

Barcelona
Berlin
Budapest
Paris
Roma

2
1
4
0
0

27

Ejemplo múltiples JOIN

Ciudad

id_ciudad

1
2
3
4
5

Nombre

Barcelona
Berlin
Roma
Paris
Budapest

id_llegada

Viaje

id_salida

1
1
5
5
5
5
2

2
4
3
4
2
1
4

SELECT cs.nombre, cl.nombre
FROM viaje
JOIN ciudad AS cs ON
(viaje.id_salida=cs.id_ciudad)
JOIN ciudad AS cl ON
(viaje.id_llegada=cl.id_ciudad);

Nombre

Barcelona
Barcelona
Budapest
Budapest
Budapest
Budapest
Berlin

Nombre

Berlin
Paris
Roma
Paris
Berlin
Barcelona
Paris

28

Resumen

Proyectar (): elegir columnas
Seleccionar (): criterio para las filas
Producto cartesiano (×): producto
tablas
Join ó Reunir ( ): combinar tablas

29
  • Links de descarga
http://lwp-l.com/pdf8578

Comentarios de: Tema 6. Álgebra relacional - Sistemas de Información II (1)

will
26 de Noviembre del 2018
estrellaestrellaestrellaestrellaestrella
excelente
Responder

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad