Algebra Relacional 2

35
Capítulo 2 Álgebra Relacional – parte 2

description

Algebra relacional segunda parte

Transcript of Algebra Relacional 2

Page 1: Algebra Relacional 2

Capítulo 2

Álgebra Relacional – parte 2

Page 2: Algebra Relacional 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.

Page 3: Algebra Relacional 2

Reunión Natural

Relaciones r, s:

r ⨝ s

Page 4: Algebra Relacional 2

Reunión Natural

Relaciones r, s:

r ⨝ s

Page 5: Algebra Relacional 2

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}

Page 6: Algebra Relacional 2

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))

Page 7: Algebra Relacional 2

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”

Page 8: Algebra Relacional 2

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.

Page 9: Algebra Relacional 2

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)

Page 10: Algebra Relacional 2

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) }

Page 11: Algebra Relacional 2

División

Relaciones r, s:

r ÷ s :

Page 12: Algebra Relacional 2

División

Relaciones r, s:

r ÷ s :

Page 13: Algebra Relacional 2

División

Sea q = r ÷ s entonces

– q es la relación más grande que satisface q x s ⊆ r

Page 14: Algebra Relacional 2

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.

Page 15: Algebra Relacional 2

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.

Page 16: Algebra Relacional 2

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.

Page 17: Algebra Relacional 2

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.

Page 18: Algebra Relacional 2

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.

Page 19: Algebra Relacional 2

Agregación

Relación r

sum(c) (r)

Page 20: Algebra Relacional 2

Agregación

Relación r

sum(c) (r)

Page 21: Algebra Relacional 2

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

Page 22: Algebra Relacional 2

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.

Page 23: Algebra Relacional 2

Agregación

• Encontrar el salario promedio en cada departamento

Page 24: Algebra Relacional 2

Agregación

• Encontrar el salario promedio en cada departamento

– dept_name avg(salary) (instructor)

Page 25: Algebra Relacional 2

Agregación

• Encontrar el salario promedio en cada departamento

– dept_name avg(salary) (instructor)

Page 26: Algebra Relacional 2

Ejemplo:

bibliotecario(antigüedad,DNI)

trabajaEn(DNI,nombreBib)

• Obtener el promedio de las antigüedades

de los bibliotecarios que trabajan en cada

biblioteca.

Page 27: Algebra Relacional 2

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

Page 28: Algebra Relacional 2

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

Page 29: Algebra Relacional 2

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.

Page 30: Algebra Relacional 2

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

Page 31: Algebra Relacional 2

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)}

Page 32: Algebra Relacional 2

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.

Page 33: Algebra Relacional 2

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

Page 34: Algebra Relacional 2

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.

Page 35: Algebra Relacional 2

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.