Title: UNIDAD 4: ALGEBRA RELACIONAL
1UNIDAD 4ALGEBRA RELACIONAL
- UTN FRRe
- Diseño de Base de Datos
- Para Sistemas de Información
2Lenguaje de Consulta Relacional
- Lenguajes de ConsultaPermite la manipulacion y
la recuperación de datos. - Los modelos relacionales soportan un lenguaje de
consultas simple y poderoso - Fundamentos sólidos basados en la lógica
relacional - Permite la fácil optimización
- Lenguaje de Consulta ? Lenguaje de Programación
- Los LCs no es Turing compatible (se espera que
las próximas revisiones si lo sea) (carece de
estructuras de programación) - Los LCs no esta diseñados para cálculos
complejos. - Los LCs soportan en forma eficiente acceso a
grandes cantidades de datos.
3Lenguajes Formales de Consulta Relacional
- Dos LC matemáticos forman la base de los
lenguajes de consulta reales (ej. SQL) - Algebra relacional Mas operacional, muy util
para representar planes de ejecución. - Cálculo relacional Permite a los usuarios
describir que es lo que necesitan, en vez de
definir como se computa (no-operacional,
declarativo) - Entender las operaciones del algebra relacional
es la clave para entender los lenguajes de
consulta relacionales (SQL)
4Algunas definiciones previas
- Una consulta es aplicada a instancias y el
resultado genera otra instancia. - Los esquemas de las relaciones de entrada son
fijos (generalmente tablas). La consulta deberá
funcionar sin importar la instancia de entrada. - El esquema resultante de una consulta es también
fijo. Determinado por la definición de campos
proyectados en la consulta. - Lenguaje posicional vs. Nombrado
- La notación posicional es mas sencilla para
definciones formales, la nombrada es de mas
sencilla interpretación. - SQL usa ambas.
5Ejemplo de Instancias
- Tablas usadas
- Marineros y Reservas
- Usaremos notificacion posicional o nombrada, de
acuerdo al caso - Asumiremos que los nombres de los campos en las
consultas resultantes son heredados de los
nombres de los campos de la consulta de entrada
entrada. (sin necesidad de usar alias)
6Algebra Relacional
- Operaciones Básicas
- Selección ( s )Selecciona un subconjunto de
filas de una relación. - Proyección ( p ) Proyecta un subconjunto de
atributos de una relación. - Producto Cruzado ( X ) Permite combinar dos
relaciones. - Diferencia ( - ) Muestra las tuplas de la primer
relación pero no en la seguna. - Unión ( U ) Muestra las tuplas de la primer
relación y las de la segunda. - Operadores Adicionales
- Intersección (n), junta(X), división(/),
renombrado(?) No esenciales, pero muy útiles. - Como cada operación devuelve una relación, las
operaciones pueden ser compuestas (El algebra
relacional es cerrada)
7Proyección
- Borra los atributos que no estan en la lista de
proyección. - El esquema del resultado contiene exactamente los
campos enumerados en la lista, con los mismos
nombres que tenían en la relación de entrada. - El operador de proyección debe eliminar los
campos duplicados (Porque?) - Los DBMS típicamente no hacen esto de manera
automática, pero se puede forzar (Porque?)
8Selección
- Selecciona filas que satisfagan una determinada
condición. - No informa duplicados (porque?)
- El esquema del resultado es identico al de la
relación de entrada. - El resultado puede ser entrada de otra operación
del algebra relacional (Principio de Composión de
Operaciones)
9Unión, Intersección y Diferencia de Conjuntos
- Todas estas operaciones toman dos relaciones como
argumentos de entrada, los cuales deben ser
unión-compatibles - Misma cantidad de atributos.
- Correspondencia entre tipos de datos según su
posición ordinal. - Cúal es el esquema del resultado?
10Producto Cruzado
- Cada fila de S1 es apareada con cada fila de R1.
- El esquema resultante tiene un campo por cada
compo de S1 y R1, con nombres heredados si esto
es posible. - ConflictoSi S1 y R1 tiene el mismo atributo sid.
Operación de renombrado
11Juntas
- Condición de Junta
- El esquema resultante es el mismo que el producto
cruzado. - Igual o menos filas que el producto cruzado.
12Juntas
- Equi-Junta Un caso especial de junta se produce
cuando la condición de junta c contiene solo
igualdades. - El esquema resultante es idem producto cruzado y
junta visto anteriormente, pero solo una copia de
los campos que cumplen la condición (sin
duplicados) - Junta Natural Equi-Junta de todos los campos con
el mismo nombre.
13División
- No soportada como operación primitiva, pero muy
útil para resolver consultas tipo - Encuentre los marineros que reservaron todos los
botes - Digamos que A tiene dos campos, x y, y B solo uno
llamado y. - Ej., A/B contiene todas las tuplas x (marineros)
tal que para cada tupla y (botes) hay una tupla
xy en A. - O, si un conjunto de valores y (botes) asociado
con un valor x (marinero) en A contiene todos los
valores y en B, entonces x pertenece al resultado
A/B. - En general, x e y pueden ser cualquier lista de
campos, y es una lista de campos en B, y x U y es
una lista de campos en A.
14Ejemplos de División en A
15Expresando A/B usando operadores primarios
- La división es una operación no esencial, ya
que puede ser reemplazada por un conjunto de
operaciones primarias. - Ej. Para A/B, computar todos los x que no sen
descalificantes para algún valor de y en B. - Un valor x es descalificante si juntandolo con
y de B, obtenemos una tupla que no existe en A. - Valores de x que no califican
16EJEMPLOS PRACTICOS
17Encuentre los nombres de los marineros que
reservaron el bote 103
18Encuentre los nombres de los marineros que
reservaron un bote rojo
- La información sobre el color del bote se
encuentra en la relación Botes, por lo tanto
necesitamos una junta - Una solución mas eficiente sería
- Un optimizador estándar de consulta (presente en
todos los motores de base de datos relacionales)
puede obtener esta segunda respuesta a partir de
la primera entrada.
19Encuentre los marineros que reservaron un bote
verde o uno rojo
- Identificar primero todos los botes verdes y
rojos, luego encontrar quienes reservaron estos
botes. - También se puede definir TempBotes usando una
unión - Qué pasa si reemplazamos la ? por una ??
20Encuentre los marineros que reservaron un bote
verde y uno rojo
- La aproximación anterior no funciona. Se debe
identificar los marineros que reservaron botes
rojos, los que reservaron botes verdes y luego
encontrar la intersección de ambos conjuntos.
21Encuentre los marineros que reservaron todos los
botes
- Se resuelve con la operación división. Sse debe
tener cuidado con los esquemas de entrada. - Y para encontrar los marineros que reservaron
todos los botes llamados Interlake
22Cálculo Relacional
- Se divide un dos subgrupos
- Cálculo relacional de Tuplas (TRC)
- Cálculo relacional de Dominios (DRC)
- El cálculo relacional tiene variables, funciones
de comparación, conectores lógicos y
calificadores. - TRC Las variables son basadas en tuplas.
- DRC Las variables son basadas en dominios.
- Ambos son simples subconjuntos de primer orden
lógicos. - Las expresiones se llaman fórmulas. Una tupla de
respuesta es simplemente una asignación de
constantes a variables que hacen que la fórmula
sea verdadera.
23Ejemplos DRC
- La condición asegura
que las variables de dominio I, N, T, y A esta
ligada a campos de la misma tupla de Marineros. - El término a la izquierda de (se
lee tal cual) dice que cada tupla de
que satisface Tgt7 forma parte de la respuesta.
24Consultas Inseguras
- Es posible escribir consultas sintácticamente
correctas que generar un infinito conjunto
posible de respuestas. Este tipo de consultas se
definen como inseguras. - Podemos decir que cualquier consulta que puede
representarse en algebra relacional puede
representarse como consulta segura en DRC /
TRC, y viceversa. - Completitud Relacional Los lenguajes de consulta
(ej.SQL) puede expresar cualquier consulta que es
expresable con el algebra o el calculo relacional
seguro
25Resumen
- El Algebra relacional es operacional, útil para
representaciones internas (planes de ejecución /
optimizadores) - Ofrece alternativas para resolver una consulta,
el optimizador elije la que considera mas
conveniente en ese momento. - El Cálculo relacional es no-operacional, y se
definen las consultas en base a que se quiere
obtener, y no como. - El Algebra y el cálculo relacional son
equivalentes (en términos de poder operacional)
siempre y cuando esta última sea segura.