Álgebra Relacional
Álgebra Relacional
-
Expresividad vs Complejidad
-
Modelo relacional (Edgar F. Codd 1970)
-
Codd propuso dos lenguajes de consulta teóricos:
- Álgebra Relacional
- Cálculo Relacional
-
Estos lenguajes fueron la base para SQL
-
-
Una consulta genera una tabla a partir de un conjunto de tablas.
- El proceso de consulta es "cerrado".
-
Podemos detectar ciertas operaciones básicas sobre tablas (un álgebra)
-
Una consultaa es la composición de estas operaaciones básicas.
-
Lenguaje procedural:
- Cada consulta indica explícitamente el procedimiento para calcularla.
Algunas consultas
Películas
ID | Título | Año | Categoría | Calificación |
---|---|---|---|---|
1 | Inception | 2010 | Ciencia Ficción | 8,8 |
2 | Waking Life | 2001 | Drama | 7,8 |
3 | Her | 2013 | Drama | 8,0 |
4 | Spirited Away | 2001 | Fantasía | 8,6 |
5 | Titanic | 1997 | Drama | 7,8 |
Usuarios
ID | Nombre |
---|---|
1 | Miguel |
2 | Paulina |
3 | Ignacia |
Visto
ID Usuario | ID Película | Día |
---|---|---|
1 | 4 | 30/07/21 |
2 | 5 | 28/07/21 |
2 | 1 | 25/07/21 |
Esto sería:
ID | Título | Año | Categoría | Calificación |
---|---|---|---|---|
1 | Inception | 2010 | Ciencia Ficción | 8,8 |
2 | Waking Life | 2001 | Drama | 7,8 |
3 | Her | 2013 | Drama | 8,0 |
4 | Spirited Away | 2001 | Fantasía | 8,6 |
5 | Titanic | 1997 | Drama | 7,8 |
Esto sería:
ID | Título | Año | Categoría | Calificación |
---|---|---|---|---|
1 | Inception | 2010 | Ciencia Ficción | 8,8 |
3 | Her | 2013 | Drama | 8,0 |
4 | Spirited Away | 2001 | Fantasía | 8,6 |
Esto sería:
ID | Título | Año | Categoría | Calificación |
---|---|---|---|---|
3 | Her | 2013 | Drama | 8,0 |
Esto sería:
Nombre |
---|
Miguel |
Paulina |
Ignacia |
Esto sería:
ID Película |
---|
5 |
1 |
Álgebra Relacional: Tablas
Ejemplo la tabla
Devuelve:
ID | Título | Año | Categoría | Calificación |
---|---|---|---|---|
1 | Inception | 2010 | Ciencia Ficción | 8,8 |
2 | Waking Life | 2001 | Drama | 7,8 |
3 | Her | 2013 | Drama | 8,0 |
4 | Spirited Away | 2001 | Fantasía | 8,6 |
5 | Titanic | 1997 | Drama | 7,8 |
Álgebra Relacional: Selección
entrega una nueva nueva relación que deja sólo las tuplas de la tabla que satisfacen las condición
Es una operación que filtra las filas según una condición. La condición es una expresión booleana que puede usar:
- Comparaciones: , , , , ,
- Operadores lógicos: (and), (or), (not)
Devuelve:
ID | Título | Año | Categoría | Calificación |
---|---|---|---|---|
1 | Inception | 2010 | Ciencia Ficción | 8,8 |
3 | Her | 2013 | Drama | 8,0 |
4 | Spirited Away | 2001 | Fantasía | 8,6 |
Devuelve:
ID | Título | Año | Categoría | Calificación |
---|---|---|---|---|
3 | Her | 2013 | Drama | 8,0 |
Álgebra Relacional: Proyección
entrega una nueva relación que deja sólo los atributos de la tabla
Devuelve:
Nombre |
---|
Miguel |
Paulina |
Ignacia |
Devuelve:
Categoría |
---|
Ciencia Ficción |
Drama |
Fantasía |
Convenciones sobre tablas
-
Por ahora asumimos que las tablas no puedes tener duplicados.
-
El orden de las tuplas en las tablas no importan.
-
En términos técnicos, una tabla es un conjunto de tuplas (set-semantics)
-
Esta es la convención que sigue Codd en el modelo relacional y el álgebra relacional.
-
Como veremos difiere ligeramente del SQL:
- En el SQL pueden haber duplicados.
- Por ende las tablas son multiconjuntos o bags (bag-semantics).
- En ciertos casos el orden de las tuplas si importa.
Devuelve:
Título | Año |
---|---|
Waking Life | 2001 |
Her | 2013 |
Titanic | 1997 |
Álgebra Relacional: Producto Cruz (o cartesiano)
entrega una nueva relación con todas las tuplas tal que y
Los atributos de son la unión de los atributos de y
En caso de abigüedad, podemos renombrar atributos
- Si tenemos el mismo atributo en y , es común renombrarlo a y en la tabla
Otra opción:
Álgebra Relacional: Join
-
-
es la abrebiatura de
El cual es el uso típico del punto cruz.
- La condición casi siempre son igualdades entre atributos y
Álgebra Relacional: Unión
-
-
entrega una nueva relación con todas las tuplas que están en y (pueden estar en ambas).
-
En caso de incompatibilidad de atributos, podemos renombrar atributos en y
Álgebra Relacional: Diferencia
-
-
entrega una nueva relación con todas las tuplas que están en y no en
En caso de incompatibilidad de atributos, podemos renombrar atributos en
Álgebra Relacional
- El Álgebra Relacional consiste de las composiciones de los operadores básicos:
- El Álgebra SPC o SPJ consiste de las composiciones de:
o equivalentemente, las composiciones de:
(Esta última contiene las consultas más frecuentes)
¿Para qué sirve el álgebra relacional?
- Provee un lenguaje de consulta general sin ambigüedad.
- Provee la base de lenguajes de consultas prácticos (SQL)
- Expresar planes y optimizaciones de consultas.
Ejercicios
Ejercicio: intersección
Supongamos que tenemos dos tablas y ambas con atributos
Definimos el operador intersección el cual entrega una nueva relación con todas las tuplas que están en y en
¿Cómo escribiría la intersección en función de los operadores ya vistos?
Ejercicio: división
Supongamos que tenemos una tabla con dos atributos y y otra tabla con un atributo
Definimos el operador división el cual entrega una nueva relación con atributo que contiene todos los valores tales que para todo valor en , el par está en .
La división es útil para expresar consultas del tipo "encontrar todos los X que están relacionados con todos los Y".
Es decir:
Veamoslo en un ejemplo práctico:
Ejemplo
Tenistas
Nombre | Torneo |
---|---|
Roger | Wimbledon |
Roger | US Open |
Roger | Roland Garros |
Nole | Wimbledon |
Nole | US Open |
Nole | Roland Garros |
Alcatraz | US Open |
Guga | Roland Garros |
Torneos
Nombre |
---|
Wimbledon |
US Open |
Roland Garros |
-
¿Nombre de jugadores que hayan ganado todos los torneos?
-
-
-
-
Revisa el glosario de esta clase Glosario Álgebra Relacional