Post on 12-Jan-2016
description
Capítulo 2
Álgebra Relacional – parte 2
Reunión Natural
Notación: r ⨝ s
Sean r(R) y s(S), entonces r ⨝ s (R S )
S – R : al esquema de S le quito los atributos que también están en el esquema de R.
R S =def R . (S – R)
r ⨝ s se obtiene como sigue:
o Sean tr ∈ r y ts ∈ s tal que tr y ts tienen los mismos valores en R S (o sea tr y ts cazan ),
o Sea t tal que t concuerda con tr en R y t concuerda con ts
en S. Entonces t ∈ r ⨝ s.
Reunión Natural
Relaciones r, s:
r ⨝ s
Reunión Natural
Relaciones r, s:
r ⨝ s
Reunión Natural
• Ejemplo:
R = (A, B, C, D)
S = (E, B, D)
R S = (A, B, C, D, E)
r ⨝ s = r.A, r.B, r.C, r.D, s.E (r.B = s.B r.D = s.D (r x s))
• En general:
r ⨝ s = R S (r.A1=s.A1 … r.An = s.An (r x s)),
donde R S = {A1,…, An}
Reunión Natural
• Algunas propiedades interesantes: r(R), s(S), u(U):
– R S = ∅ ⇒ r ⨝ s = r x s
– R = S ⇒ r ⨝ s = r s
– (r ⨝ s) ⨝ u = (r ⨝ (s ⨝ u))
Ejemplo:
persona(DNI, nombre,apellido)
libro(título,ISBN,editorial,edición)
libroBib(numInv,ISBN,nombreBib)
prestadoA(numInv,nombreBib,DNI)
socio(posición,DNI)
inscriptoEn(DNI,nombreBib)
• Obtener los ISBN de los libros prestados a Juan Pérez en la biblioteca de “FaMAF”
Asignación
• El operador asignación () provee una manera de expresar consultas complejas.
• Escribir la consulta como un programa secuencial consistente de: 1. una serie de asignaciones,
2. seguida de una expresión cuyo valor se muestra como resultado de la consulta.
• La asignación se hace sobre una variable relacional temporal – i.e. su valor es una tabla.
Asignación
persona(DNI, nombre,apellido)
biblioteca(nombreBib,calle,número)
bibliotecario(antigüedad,DNI)
trabajaEn(DNI,nombreBib)
• Dar las bibliotecas en las que trabajan los bibliotecarios de apellido Pérez.
r σapellido=“Pérez” (persona ⨝ bibliotecario)
s Π antigüedad, DNI (r)
ΠnombreBib (s ⨝ trabajaEn)
División
• La operación división, resulta adecuada para muchas consultas que incluyen la frase “para todo” o “todos”.
• Notación: r ÷ s • Definición:
– Sea r(R) y s(S) donde – R = (A1,…,Am, B1, …, Bn)
– S = (B1, …, Bn)
– r ÷ s(R - S) y R - S = (A1,…,Am)
– r ÷ s =def { t | t ∈ ΠR-S(r) ∧ ∀u ∈ s (t.u ∈ r) }
División
Relaciones r, s:
r ÷ s :
División
Relaciones r, s:
r ÷ s :
División
Sea q = r ÷ s entonces
– q es la relación más grande que satisface q x s ⊆ r
División: ejemplo 1
libro(título,ISBN,editorial,edición)
libroBib(numInv,ISBN,nombreBib)
biblioteca(nombreBib,calle,número)
• Encontrar los títulos de los libros que están en todas las bibliotecas.
División
• Proceso para hacer una consulta con división
1. Identificar tablas a usar
2. Reescribir consulta en español de modo que quede más claro dónde se usa división y la división sea más evidente.
3. Identificar partes de la división
A. Escribirlas primero en español
B. Luego pasarlas a AR
4. Usar proyecciones para que partes cumplan con esquemas exigidos por división.
5. Escribir división
6. Hacer la consulta completa en AR que involucra división.
División: ejemplo 2
course(course id, title, dept name, credits)
student(ID, name, dept name, tot cred)
takes(ID, course id, sec id, semester, year, grade)
• Obtener los estudiantes que han tomado todos los cursos de Biología.
Agregación
Función de Agregación: toma una colección de valores
y retorna un valor simple como resultado.
En AR se consideran las siguientes funciones de
agregación: avg, min, max, sum, count (cantidad de
valores).
Hay casos donde debemos eliminar múltipes occurren-
cias de un valor antes de computar una función de
agregación.
o Si queremos eliminar duplicados usamos los mismos nombres
de función, con la adición de “distinct” al final.
o Ejemplo: countdistinct.
Agregación
• Operación de agregación en AR
F1( A1), F2( A2),…, Fn(An) (E)
o E expresión de AR
o Cada Fi es una función de agregación
o Cada Ai es un nombre de atributo
• Semántica: el resultado tiene una tupla (a1, a2, …, an) donde, para cada i, ai es el resultado de aplicar la función de agregación Fi al multi-conjunto de valores del atributo Ai en E.
Agregación
Relación r
sum(c) (r)
Agregación
Relación r
sum(c) (r)
Agregación
Operación de agregación en AR (caso más complejo)
G1, G2, …, Gn F1( A1), F2( A2),…, Fn(An) (E)
o E expresión de AR
o G1, G2 …, Gn lista de atributos en los cuales agrupar (puede ser vacío)
o Cada Fi es una función de agregación
o Cada Ai es un nombre de atributo
Agregación
Semántica: • Las tuplas en el resultado de la expresión E se dividen
en grupos tales que: 1. Todas las tuplas del grupo tienen los mismos valores para
G1, G2, …, Gn. 2. Las tuplas de grupos diferentes tienen valores diferentes
para G1, G2, …, Gn.
• Para cada grupo (g1, g2, …, gn) el resultado tiene una tupla (g1, g2, …, gn, a1, a2, …, am) – donde, para cada i, ai es el resultado de aplicar la función
de agregación Fi al multiconjunto de valores del atributo Ai
en el grupo.
Agregación
• Encontrar el salario promedio en cada departamento
Agregación
• Encontrar el salario promedio en cada departamento
– dept_name avg(salary) (instructor)
Agregación
• Encontrar el salario promedio en cada departamento
– dept_name avg(salary) (instructor)
Ejemplo:
bibliotecario(antigüedad,DNI)
trabajaEn(DNI,nombreBib)
• Obtener el promedio de las antigüedades
de los bibliotecarios que trabajan en cada
biblioteca.
Reuniones Externas
• Son extensiones de la reunión natural que evitan pérdida de informaciones.
• Computan la reunión natural y luego agregan tuplas de una relación que no cazan tuplas en la otra relación.
– Usa valores nulos
Reuniones Externas: ejemplo
Comp. Sci.
Finance
Music
ID dept_name
10101
12121
15151
name
Srinivasan
Wu
Mozart
ID course_id
10101
12121
76766
CS-101
FIN-201
BIO-101
Relación instructor
Relación teaches
Reunión externa a la izquierda
instructor teaches
Reuniones Externas: ejemplo
Reunión natural
instructor teaches
ID dept_name
10101
12121
Comp. Sci.
Finance
course_id
CS-101
FIN-201
name
Srinivasan
Wu
ID dept_name
10101
12121
15151
Comp. Sci.
Finance
Music
course_id
CS-101
FIN-201
null
name
Srinivasan
Wu
Mozart
Calcula: Profesores que no enseñan ninguna materia y profesores
que enseñan materia más código de la materia enseñada.
• Es útil para saber a quién hay que asignarle materia para enseñar.
Reuniones Externas: ejemplo
Reunión externa a la derecha
instructor teaches
ID dept_name
10101
12121
76766
Comp. Sci.
Finance
null
course_id
CS-101
FIN-201
BIO-101
name
Srinivasan
Wu
null
ID dept_name
10101
12121
15151
76766
Comp. Sci.
Finance
Music
null
course_id
CS-101
FIN-201
null
BIO-101
name
Srinivasan
Wu
Mozart
null
Reunión extrerna full
instructor teaches
Reuniones Externas
Reuniones externas pueden ser expresadas usando operadores básicos:
e.g. r s puede escribirse como
(r s) U (r – ∏R(r s) x {(null, …, null)}
Manejo de valores nulos
• El resultado de una expresión aritmética involucrando null es null
• Las funciones de agregación ignoran valores nulos (decisión arbitraria).
• Para eliminación de duplicados y agrupamientos a null se lo trata como a cualquier otro valor.
Manejo de valores nulos
• Comparaciones (como <, <=, >, >= y ≠) con valores null retorna el valor de verdad unknown.
• Las comparaciones que incluyan nulos pueden aparecer dentro de expresiones booleanas con conectivos.
• Una lógica de tres valores de verdad se usa con el valor de verdad unknown. o OR: (unknown or true) = true,
(unknown or false) = unknown (unknown or unknown) = unknown
o AND: (true and unknown) = unknown, (false and unknown) = false, (unknown and unknown) = unknown
o NOT: (not unknown) = unknown
Manejo de valores nulos
• La operación selección evalúa el predicado P
en σP(E) sobre cada tupla de E.
– Si P(t) devuelve el valor cierto, se añade t al
resultado.
– En caso contrario, si P(t) devuelve desconocido o
falso, t no se añade al resultado
• Reunión natural r ⨝ s: si dos tuplas tr∈r y ts∈s, tienen un valor nulo en un atributo común, entonces las tuplas no casan.
Manejo de valores nulos
• Proyección: trata los nulos como cualquier otro valor al eliminar duplicados.
• Unión, intersección y diferencia: tratan las tuplas que tienen los mismos valores en todos los campos como duplicados incluso si algunos de los campos tienen valores nulos en ambas tuplas.
• Agregación: Cuando hay valores nulos en los atributos agregados, la función de agregación a ser aplicada borra los valores nulos antes de aplicarse.
– Si el multiconjunto resultante está vacío, el resultado de la función de agregación es null.