Bases de Datos I
Cursada 2008
Clase 4:
Álgebra relacional y de bolsas
Información ausente
Claves
Facultad de Ciencias Exactas Universidad Nac. Centro de la Pcia. de Bs. As.BASES DE DATOS I
ALGEBRA RELACIONAL
•Formalismo para crear nuevas relaciones a partir de otras existentes. •Modelo matemático formado por:
Operandos ---Variables o valores;
Operadores ---Símbolos que denotan procedimientos que construyen nuevos valores a partir de otros dados.
Álgebra Relacionales un álgebra cuyos operandos son relaciones y operadores que están diseñados para realizar las operaciones básicas sobre relaciones.
Cinco operadores:
Unión, Diferencia, Selección, Proyección, Producto Cartesiano Operadores Auxiliares:
Intersección, joins (natural,equi-join, theta join), división, renombrado: ρ
BASES DE DATOS I ALGEBRA RELACIONAL
Unión: R UNION S / R ∪∪∪∪S Obtiene una relación cuyas tuplas son las que se encuentran en R, o en S, o en ambas relaciones a la vez. Para poder realizar esta operación, R y S deben ser compatibles para la unión.
Dos relaciones son compatibles para la unión si ambas tienen la misma cabecera, es decir, si tienen el mismo número de atributos, se llaman igual
y se encuentran definidos sobre los mismos dominios tienen el mismo esquema y dominio de definición.
Diferencia: R MINUS S / R-S Obtiene una relación que tiene las tuplas que se encuentran en R y no se encuentran en S. Para poder realizar esta operación, R y S deben ser compatibles para la unión. Intersección: R INTERSECT S / R ∩∩∩∩S Obtiene una relación que contiene las tuplas de R que también se encuentran en S. Para poder
ALGEBRA RELACIONAL Unión R1 ∪R2 Ejemplo EmpleadosActivos∪EmpleadosRetirados Diferencia R1 – R2 Ejemplo TodosLosEmpleados – EmpleadosRetirados Intersección R1 ∩R2 = R1 – (R1 – R2) Ejemplo EmpleadosAfiliados∩EmpleadosRetirados BASES DE DATOS I
Selección: R WHERE condición / σσσσcondición(R) Obtiene las tuplas de R que cumplen la condición. Condiciónes una comparación en la que aparece al menos un atributo de R; puede ser una combinación booleana de varias de estas comparaciones.
Proyección: R [ai, ..., ak] /ππππai, ..., ak(R) Obtiene una relación que contiene un subconjunto de columnas de R, extrayendo los valores de los atributos especificados y eliminando tuplas duplicadas.
Producto cartesiano: R TIMES S / R X S Obtiene una relación cuyas tuplas están formadas por la concatenación de todas las tuplas de R con todas las tuplas de S.
ALGEBRA RELACIONAL
BASES DE DATOS I
Producto CartesianoR1 ×R2 Ejemplo:
Empleado×Dependiente Utilizada principalmente en ensambles
Renombrado: cambia el esquema, no la extensión de la relación. ρB1,…,Bn(R)
Ejemplo:
ρApellidoAp, NroSocioNsoc(Empleado) Esquema obtenido:
Empleado(Ap, NSoc) ALGEBRA RELACIONAL
Join(concatenación o ensamble): R JOIN S / R S Obtiene una relación cuyas tuplas son todas las tuplas de R concatenadas con todas las tuplas de S que en los atributos comunes tienen los mismos valores. Estos atributos comunes aparecen una sola vez en el resultado.
Outer—Join a izquierda o derecha: R(+) JOIN S/ R Sy R
JOIN S(+) / R S El outer—join a izquierda (respectivamente a derecha) es un ensamble en el que las tuplas de R
(respectivamente S) que no tienen valores en común con ninguna tupla de S (respectivamente R), también aparecen en el resultado. Cuando en ambas relaciones hay tuplas que no se pueden concatenar y se desea que en el resultado aparezcan todas estas tuplas, tanto las de una relación como las de la otra, se utiliza el outer—join completo: R(+) JOIN S(+) /
ALGEBRA RELACIONAL
BASES DE DATOS I
Ensamble General:ensamble que involucra un predicado R1 qR2 = σq(R1 ×R2)
Ensamble NaturalR1 R2 = Πesq(R1)Uesq(R2)-(esq(R1)∩esq(R2))(
σ
C(R1 ×R2))La selección
σ
Cchequea la igualdad de los atributos comunes y laproyección elimina los duplicados
Equijoin: ensamble general donde q es una igualdad R1 A=BR2 =
σ
A=B(R1 ×R2)ALGEBRA RELACIONAL
BASES DE DATOS I
División: R DIVIDEBY S / R ÷÷÷÷S
Suponiendo que la cabecera de R es el conjunto de atributos A y la cabecera de S es el conjunto de atributos B, tales que B es un subconjunto de A. Si consideramos C como el subconjunto de los atributos de A que no están en B (A - B), la división obtiene una relación cuya cabecera es el conjunto de atributos C y que contiene las tuplas de R que están acompañadas de todas las tuplas de S.
División: útil para consultas que incluyan la frase “para todos”. Sean r y srelaciones con esq(S) ⊆esq(R)
esq(R)= (A1, …, Am, B1, …, Bn) y esq(S)= (B1, …, Bn) esq(R÷S) = esq(R)– esq(S) = (A1, …, Am)
r ÷s= { t| t ∈ ∏esq(R)- esq(S)(r) ∧ ∀u ∈s ( t.u∈r ) } En términos de las operaciones primitivas del álgebra relacional:
temp1 ← ∏esq(R)-esq(S)(r)
temp2 ← ∏esq(R)-esq(S)((temp1 x s) –r) r÷s= temp1 –temp2
ALGEBRA RELACIONAL
Lasfunciones de agregación toman un conj. de valores y devuelven un valor único:
avg: valor promedio min: valor mínimo max: valor máximo sum: suma de valores count: número de valores
Operaciones de agregado en álgebra relacional
G1, G2, …, Gn, F1( A1), F2( A2),…, Fn( An) (E) Ees cualquier expresión del álgebra
G1, G2 …, Gn es una lista de atributos sobre los cuales se agrupa (puede ser vacío)
CadaFi es una función de agregación CadaAi es un nombre de atributo
BASES DE DATOS I
ALGEBRA RELACIONAL
SQL permite ‘relaciones’ con tuplas repetidas
SQL no se formaliza con álgebra relacional sino de bolsas: Una bolsa (bag)es un conjunto con elementos repetidos. Todas las operaciones deben ser redefinidas para bolsas:
{a,b,b,c} ∪{a,b,b,b,e,f,f} = {a,a,b,b,b,b,b,c,e,f,f} {a,b,b,b,c,c} – {b,c,c,c,d} = {a,b,b}
Las selecciones, ensambles y productos cartesianos preservan las repeticiones y las proyecciones no eliminan duplicados.
Los motores de BD relacionales trabajan con bolsas, no con relaciones! BASES DE DATOS I
Unión aditiva de bolsasR Scada elemento repetido aparece tantas veces como la suma de apariciones en ambas bolsas.
Ejemplo: {1, 2, 3, 1} {1, 1, 2, 3, 4, 1} = {1, 1, 1, 1, 1, 2, 2, 3, 3, 4}
contar(x, R S) = contar(x, R) + contar(x, S)
Intersección mínima de bolsasR ∩∩∩∩minSun elemento
duplicado aparece tantas veces como el mínimo de apariciones en una de las bolsas.
Ejemplo: {1,2,3,3,1} ∩∩∩∩min{1, 1, 2, 3, 4, 1} = {1, 1, 2, 3}
contar(x, R ∩∩∩∩minS) = min(contar(x, R), contar(x, S))
ALGEBRA de BOLSAS
Diferencia de bolsas (monus) R Sun elemento
duplicado aparece tantas veces como la diferencia de apariciones, pero nunca menos de 0(cero) veces. Ejemplo: {1,2,1,3} {1,2,3,3} = {1}.
contar(x, R S) = contar(x, R) - contar(x, S) o bien 0 si contar(x, R) < contar(x, S)
Producto cartesiano de dos bolsasR ×S obtiene pares
de tuplas, de manera tal que se preservan las repeticiones.
contar((r, s), R ×S) = contar(r, R)* contar(s, S)
Eliminación de duplicadosε(B)
contar(x, ε(B)) = 1; o 0 si x no está en B BASES DE DATOS I
ALGEBRA de BOLSAS: Operadores
Selección de bolsasσp(B) filtra las tuplas preservando
los duplicados
Ejemplo σx<2{1, 1, 1, 1, 1, 2, 2, 3, 3, 4}= {1, 1, 1, 1, 1}
Proyección de una bolsaπA(B) quita columnas que no
están en A, preservando los duplicados | B | = | πA(B) | Ejemplo: πx{<1,a>,<1,b>,<1,c>,<2,m>,<2,m>,<3,a>,
<3,b>,<4,t>}={1,1,1,2,2,3,3,4}
Unión Máxima de dos bolsasR ∪maxS las tuplas
repetidas aparecen tantas veces como la cantidad máxima de repeticiones en una u otra bolsa.
contar(x, R∪∪∪∪maxS) = max(contar(x, R), contar(x, S)) BASES DE DATOS I
Algunas leyes del álgebra siguen teniendo validez: Union e intersección son conmutativas y asociativas.
Pero otras no se cumplen en el caso de las bolsas: Ejemplo
R∩(S∪T) ≡(R∩S) ∪(R∩T) se cumple para conjuntos solamente.
Sean R, S, y Tbolsas con el elemento {1}. R∩(S∪T) = {1}.
(R∩S) ∪(R∩T) = {1,1} ≠{1}. ALGEBRA de BOLSAS: Operadores
Operaciones en conjuntos
UNION ≡ U INTERSECT ≡∩ EXCEPT ≡-Operaciones en bolsas
UNION ALL ≡INTERSECT ALL ≡∩min
EXCEPT ALL ≡
DISTINCT ≡
ε(B)
SELECT A1,…, A2 …≡
π
A(B)
Duplicate Counting:
BASES DE DATOS I
ALGEBRA de BOLSAS: Operadores
La ausenciade valores para uno o más atributos de una tupla se denota con null
null no es un valor, es la ausencia de valor !! (noción aceptada por SQL)
Nullsignifica valor desconocido o no existente … pero en realidad hay varias interpretaciones más
BASES DE DATOS I
Tipos de información faltante:
Atributos inaplicables(ej. Comisión para un empleado que realiza ventas)
Aplicable pero desconocido(ej. Sueldo para un empleado que aún no lo tiene asignado, aunque es obligatorio)
Valor no existente(ej. NroPasaporte para quien no lo tiene) Indefinido(ej. NotaPromedio para quien no ha rendido finales) Valor inválido(ej. un dato evidentemente erróneo,
AñoNacimiento >=2008)
Valor no provisto (ej. NoSabe/NoContesta)
Valor resultante es el conj. vacío(ej. Caracteres de relleno en el OUTER-JOIN o en OUTER-UNION)
VALORES NULOS
BASES DE DATOS I
Cada tipo de nulo tiene sus propia semántica, características y operatoria
antinatural utilizar el mismo tratamiento para todos los casos mal uso potencial (ej. la suma Comisión + Sueldo para un
empleado que no vende dará un valor desconocido) si la ausencia de un valor depende de la ausencia de otro
hay que definir un null nuevo ¡! Si depende de dos otro null más ¡!
VALORES NULOS
BASES DE DATOS I
VALORES NULOS
Para interpretar la existencia de nulos LÓGICA DE TRES VALORES
VERDADERO (TRUE) FALSO (FALSE) DESCONOCIDO (UNKNOWN)
VALORES NULOS
Pero haría falta un nuevo operador para manejar la ‘incertidumbre’
ES_DESC (MAYBE)
Es una función que evalúa enVERDADERO sólo cuando su entrada esDESCONOCIDO, yFALSO en los otros casos Ejemplo:
“Obtener los empleados que son vendedores, nacidos antes de F1, con sueldo mayor a 1000”
BASES DE DATOS I
VALORES NULOS
? ? ? …… 1005 <F1 ? …… 1200 ? Vend …… ? <F1 Vend …… 1340 ? ? …… ? <F1 ? …… ? ? Vend ….. Sueldo FechaNac Oficio IdEmplCualquiera de estas tuplas pertenece potencialmente a la respuesta !!
BASES DE DATOS I
VALORES NULOS
Si existiese la operaciónES_DESC, se podría escribir:
SELECT …. WHERE ES_DESC (Oficio = ‘Vend’ AND FechaNac < F1 AND Sueldo > 1000);
SiES_DESC no existe SELECT …. WHERE
(Oficio = ‘Vend’ AND FechaNac IS NULL AND Sueldo IS NULL) OR (Oficio = ‘Vend’ AND FechaNac < F1 AND Sueldo IS NULL) OR (Oficio IS NULL AND FechaNac < F1 AND Sueldo >1000) OR ….;
Deben establecerse las 7 configuraciones con información faltante.
VALORES NULOS
ALGUNAS CONSIDERACIONESUn dominio se define como ‘el conjunto de valores válidos’ … un valor desconocido es válido?
Si fuera válido, una restricción de dominios nunca fallaría ¡! VεDi sería VERDADERO si V es uno de los valores válidos, pero también si no, pues no se sabe si no podría ser igual al valor que representa DESCONOCIDO.
Pero los dominios no deberían incluir desconocidos, pues sino una relación tampoco sería tal, ya que no se podría afirmar
R⊆D1xD2X…xDn
BASES DE DATOS I
VALORES NULOS
Que efecto tienen sobre las operaciones relacionales? Selección se requiere que la condición evalúe en VERDADERO, no en FALSO ni DESCONOCIDO. Proyección implica la eliminación de duplicados, pero null<>null, entonces dos tuplas aparentemente iguales no podrían ser eliminadas!! (la misma tupla no sería igual a si misma!!) Unión e Intersección ídem
Restricciones de integridad predicados que no deben evaluar en FALSO… sin embargo si evalúa en DESCONOCIDO no podría asegurarse que la restricción no se satisface!!
Para el WHERE, DESCONOCIDO se interpreta FALSO, para las restricciones,se interpreta VERDADERO !!
BASES DE DATOS I
VALORES NULOS
Para ORDER BY, null es el ‘mayor’ Para DISTINCT null es duplicado de null
Para funciones de agregado, si cada ítem de datos en una columna es null, SUM(), AVG(), MIN(), MAX() devuelven null, COUNT() devuelve 0
COUNT(*) funciona sin depender de los valores de una columna.
VALORES NULOS
CONSECUENCIAS:
Las siguientes expresiones no se preservan en caso de participar nulls x=x x-x=0 x OR NOT x x*0=0 R R = R
EJEMPLO:
Sean las tablas DEPTO (IdDEPTO) y EMPL (IdEmpl, IdDepto), pobladas según DEPTO = {<D2>} y EMPL = {<E1,null>}
La condición EMPL.IdDepto = DEPTO.IdDepto AND EMPL.IdDepto = ‘D1’ (1) DESCONOCIDO AND DESCONOCIDO DESCONOCIDO
BASES DE DATOS I
VALORES NULOS
Si la base de datos tiene un optimizador, verá lo siguiente: a=b AND a=c, de lo que se infiere que b=c
La condición puede completarse artificialmente a
EMPL.IdDepto = DEPTO.IdDepto AND EMPL.IdDepto = ‘D1’ AND DEPTO.IdDepto = ‘D1’
Que evalúa
DESCONOCIDO AND DESCONOCIDO AND FALSO FALSO¡! En el mundo real, el empleado pertenece a un DEPTO, que puede ser D1u otro.
Si es D1, (1) FALSO AND DESCONOCIDO FALSO Si no es D1, también evalúa en FALSO
sin importar el valor null, en el mundo real siempre resulta FALSO
BASES DE DATOS I
cómo puede ser que lo que es verdadero en el mundo real y lo que es verdadero en la base de datos sean cosas distintas ¡!??
La lógica de tres valores no parece interpretar
adecuadamente lo que ocurre en el mundo real, aunque
está implementada en la mayoría de los sistemas
actuales.
Cómo evitar los nulos?
proyecciones y selecciones
(analizando atributos y relaciones inaplicables)
6FN ??
CLAVES INTELIGENTES Y CLAVES SURROGANTES
Clave inteligenteDenominada de esta forma por la semántica que conlleva (concepto relacionado con su estructura, por ejemplo NroMatricAlumno formado por tres partes)
Doble rol: identifican y contienen información y semántica Clave Surrogante (SK)
Es una columna que no está definida por requerimientos del negocio sino que son agregadas con el propósito de identificación Único rol: indican solamente la presencia de una entidad, pero no contienen información ni semántica
Clave natural
Columna o columnas elegidas por la organización para identificar registros, lo suficientemente estables como para ser elegidas como identificadores primarios
BASES DE DATOS I
CLAVES SURROGANTES
Asociadas frecuentemente a identificadores de tuplas (tids) que relación tienen con los identificadores de entidades SK? • NO siempre existe la correspondencia tupla-entidad (jerarquías, proyecciones)
•tidstienen que ver con eficiencia (accesos rápidos) porque en la mayoría de los sistemas actuales hay una correspondencia casi directa entre tuplas y almacenamiento físico
•tidsson ocultas al usuario, las SKNO una tidno es una columna de una tabla, una SKSI
•tids son conceptos físicos,SKs son conceptos lógicos
•tids no necesitan ser actualizadas, SKpodrían ser modificadas y reasignadas (inconvenientes)
BASES DE DATOS I
CLAVES SURROGANTES
• involucran un único atributo• la inserción de una nueva entidad provoca la generación de una SK única, nueva y que no será reutilizada
• habitualmente generadas en forma automática por el sistema • de naturaleza incremental inconvenientes en la generación de índices
• algunos sistemas generan índices para los atributos únicos en forma automática
• la clave inteligente se convierte en alternativa más restricciones para verificar
CUIDADO CON LAS DUPLICACIONES Y LA NULIDAD!! • consultas en SQL más fáciles de escribir, pero pueden requerir más ensambles