Este documento presenta un resumen de los conceptos básicos del álgebra relacional, incluyendo operaciones como proyección, selección, unión, diferencia, producto cartesiano y unir. Explica cada operación con ejemplos y su representación en SQL.
los sistemas de bases de datos necesitan un lenguaje de consulta que sea cómodo para el usuario. Por lo que en la presente unidad se estudiará el lenguaje estructurado de consulta SQL, el cual es un lenguaje estándar para trabajar con base de datos relacionales y es soportado prácticamente por todos los productos del mercado.
Usando SQL es posible definir la estructura de los datos, modificar los datos de la base de datos y especificar las restricciones de seguridad.
los sistemas de bases de datos necesitan un lenguaje de consulta que sea cómodo para el usuario. Por lo que en la presente unidad se estudiará el lenguaje estructurado de consulta SQL, el cual es un lenguaje estándar para trabajar con base de datos relacionales y es soportado prácticamente por todos los productos del mercado.
Usando SQL es posible definir la estructura de los datos, modificar los datos de la base de datos y especificar las restricciones de seguridad.
Normalización de Bases de Datos Relacionales y Primera Forma Normal (1NF)Enzo D'Amario
Una visión al Proceso de Normalización de Bases de Datos Relacionales y explicación de La Primera Forma Normal (1NF)
Si te interesa el tema del Diseño de Bases de Datos Relacionales, puedes aprender mucho más sobre todo este proceso, con el curso:
Diseño de Bases de Datos Relacionales
Un viaje desde el Dato hasta la Base de Datos
10 Plazas gratuitas para los primeros interesados, siguiendo el link:
https://www.udemy.com/diseno-de-bases-de-datos-relacionales/?couponCode=DBD-SS-FREE-10
25 Plazas a un excelente descuento, siguiendo el link:
https://www.udemy.com/diseno-de-bases-de-datos-relacionales/?couponCode=DBD-SS-DSTC-10
Introducción a la Arquitectura de Software.
Géneros Arquitectónicas
Estilos Arquitectónicos.
Diseño Arquitectónico.
Evaluación de los diseños alternativos para la Arquitectura.
En la constante búsqueda de lograr hacer código mas compacto, que nos permitan acortar los tiempos de desarrollo, es que Java ha desarrollado la programación funcional.
Te recomiendo que visites:
http://gcoronelc.blogspot.pe/
http://gcoronelc.blogspot.pe/2016/10/eureka-cs-oracle-jdbc.html
Normalización de Bases de Datos Relacionales y Primera Forma Normal (1NF)Enzo D'Amario
Una visión al Proceso de Normalización de Bases de Datos Relacionales y explicación de La Primera Forma Normal (1NF)
Si te interesa el tema del Diseño de Bases de Datos Relacionales, puedes aprender mucho más sobre todo este proceso, con el curso:
Diseño de Bases de Datos Relacionales
Un viaje desde el Dato hasta la Base de Datos
10 Plazas gratuitas para los primeros interesados, siguiendo el link:
https://www.udemy.com/diseno-de-bases-de-datos-relacionales/?couponCode=DBD-SS-FREE-10
25 Plazas a un excelente descuento, siguiendo el link:
https://www.udemy.com/diseno-de-bases-de-datos-relacionales/?couponCode=DBD-SS-DSTC-10
Introducción a la Arquitectura de Software.
Géneros Arquitectónicas
Estilos Arquitectónicos.
Diseño Arquitectónico.
Evaluación de los diseños alternativos para la Arquitectura.
En la constante búsqueda de lograr hacer código mas compacto, que nos permitan acortar los tiempos de desarrollo, es que Java ha desarrollado la programación funcional.
Te recomiendo que visites:
http://gcoronelc.blogspot.pe/
http://gcoronelc.blogspot.pe/2016/10/eureka-cs-oracle-jdbc.html
Keynote at the Dutch-Belgian Information Retrieval Workshop, November 2016, Delft, Netherlands.
Based on KDD 2016 tutorial with Sara Hajian and Francesco Bonchi.
KDD 2016 tutorial on Algorithmic Bias, Parts I and II.
Video:
Part I: https://www.youtube.com/watch?v=mJcWrfoGup8
Part II: https://www.youtube.com/watch?v=nKemhMbaYcU
Part III: https://www.youtube.com/watch?v=ErgHjxJsEKA
By Sara Hajian, Francesco Bonchi, and Carlos Castillo.
http://francescobonchi.com/algorithmic_bias_tutorial.html
KDD 2016 tutorial on Algorithmic Bias, Parts III and IV.
Video: https://www.youtube.com/watch?v=ErgHjxJsEKA
By Sara Hajian, Francesco Bonchi, and Carlos Castillo.
http://francescobonchi.com/algorithmic_bias_tutorial.html
Various examples of observational studies, mostly fo the analysis of social media.
Lecture for the M. Sc. Data Science, Sapienza University of Rome, Spring 2016.
Basic concepts about natural experiments, based mostly on Dunning's book.
Lecture for the M. Sc. Data Science, Sapienza University of Rome, Spring 2016.
Predictions of links in graphs based on content and information propagations.
Lecture for the M. Sc. Data Science, Sapienza University of Rome, Spring 2016.
1. 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 – 2007
1
3. 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
4. Proyección () ejemplos
Película Actor
ID_Película Nombre Año ID_Actor Nombre Apellido
1 La guerra de las galaxias 1977 1 Mark Hamill
2 El señor de los anillos 1 2001 2 Cristopher Lee
3 Mar Adentro 2004 3 Javier Bardem
4 El viaje de Chihiro 2001 4 Hugo 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
7. Selección () ejemplos
Película Actor
ID_Película Nombre Año ID_Actor Nombre Apellido
1 La guerra de las galaxias 1977 1 Mark Hamill
2 La comunidad del anillo 2001 2 Cristopher Lee
3 Mar Adentro 2004 3 Javier Bardem
4 El viaje de Chihiro 2001 4 Hugo 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
9. Composición de selección y
proyección ,
Película Actor
ID_Película Nombre Año ID_Actor Nombre Apellido
1 La guerra de las galaxias 1977 1 Mark Hamill
2 La comunidad del anillo 2001 2 Cristopher Lee
3 Mar Adentro 2004 3 Javier Bardem
4 El viaje de Chihiro 2001 4 Hugo Weaving
Nombre(Apellido=Lee(Actor)) =
{<Cristopher>}
Nombre(Año>2000(Película)) =
{<La comunidad del anillo>,
<El viaje de Chihiro>}
9
11. Eliminar duplicados ()
Elimina tuplas (R)
duplicadas en una
relación
Película
ID_Película Nombre Año ID_Estudio
1 La guerra de las galaxias 1977 3
2 La comunidad del anillo 2001 2
3 Mar adentro 2004 4
4 El viaje de Chihiro 2001 1
(Año(Película) = { 1997, 2001, 2004 }
11
13. 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
14. Producto cartesiano (×)
ejemplos Estudio
Película
ID_Película Nombre Año ID_Estudio ID_Estudio Nombre
1 La guerra de las galaxias 1977 3 1 Ghibli
2 La comunidad del anillo 2001 2 2 New Line Cinema
3 Mar adentro 2004 4 3 Lucasfilms
4 El viaje de Chihiro 2001 1 4 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
16. Seleccionar combinaciones
correctas
Estudio
Película
ID_Película Nombre Año ID_Estudio ID_Estudio Nombre
1 La guerra de las galaxias 1977 3 1 Ghibli
2 La comunidad del anillo 2001 2 2 New Line Cinema
3 Mar adentro 2004 4 3 Lucasfilms
4 El viaje de Chihiro 2001 1 4 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
20. Operación JOIN
en MySQL
R1 R2
k
SELECT * FROM R1 JOIN R2 USING(k)
20
21. 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
22. 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
24. 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
25. Operación LEFT JOIN
en MySQL
R1 R2
k
SELECT * FROM R1 LEFT JOIN R2 USING(k)
25
26. Ejemplo LEFT JOIN
Película Estudio
ID_Película Nombre Año ID_Estudio ID_Estudio Nombre
1 La guerra de las galaxias 1977 3
1 Ghibli
2 La comunidad del anillo 2001 2
2 New Line Cinema
3 Mar adentro 2004 4
3 Lucasfilms
4 El viaje de Chihiro 2001 1
4 Sogecine
5 Nuevo Estudio
CNT Nombre
SELECT count(id_pelicula) AS CNT 1 Ghibli
1 New Line Cinema
FROM estudio JOIN pelicula 1 Lucasfilms
1 Sogecine
USING (id_estudio)
CNT Nombre
SELECT count(id_pelicula) AS CNT 1 Ghibli
1 New Line Cinema
1 Lucasfilms
FROM estudio LEFT JOIN pelicula 1 Sogecine
0 Nuevo Estudio
USING (id_estudio)
26
27. Otro ejemplo LEFT JOIN
Viaje
id_salida id_llegada
Ciudad
1 2
id_ciudad Nombre
1 4
1 Barcelona
5 3
2 Berlin
5 4
3 Roma
5 2
4 Paris
5 1
5 Budapest
2 4
SELECT
Nombre CNT
ciudad.nombre,COUNT(viaje.id_salida) Barcelona 2
Berlin 1
FROM Budapest 4
ciudad LEFT JOIN viaje ON Paris 0
Roma 0
(ciudad.id_ciudad=viaje.id_salida)
GROUP BY
ciudad.nombre;
27
28. Ejemplo múltiples JOIN
Viaje
id_salida id_llegada
Ciudad
1 2
id_ciudad Nombre
1 4
1 Barcelona
5 3
2 Berlin
5 4
3 Roma
5 2
4 Paris
5 1
5 Budapest
2 4
Nombre Nombre
SELECT cs.nombre, cl.nombre Barcelona Berlin
FROM viaje Barcelona Paris
Budapest Roma
JOIN ciudad AS cs ON Budapest Paris
Budapest Berlin
(viaje.id_salida=cs.id_ciudad) Budapest Barcelona
JOIN ciudad AS cl ON Berlin Paris
(viaje.id_llegada=cl.id_ciudad);
28
29. Resumen
Proyectar (): elegir columnas
Seleccionar (): criterio para las filas
Producto cartesiano (×): producto
tablas
Join ó Reunir ( ): combinar tablas
29