Funciones Agregadas Fuentes http://www-db.stanford.edu/~ullman/fcdb.html Fundamentals of Database Systems, Elmasri y Navathe Database System Concepts,Silberschatz, Korth, Sudarshan Marta Millan millan@eisc.univalle.edu.co www.eisc.univalle.edu.co/materias 1 Algebra de Multiconjuntos Eliminación de duplicados Ordenamiento de Tuplas Agrupamiento y Agregación Otros tipos de JOIN Eliminación de duplicados δ Operador unario R1 := δ(R2) R1 contiene solo un ejemplar de cada tupla de las que aparecen en R2 Ejemplo Relación r δ(r) A B C D α α 1 7 α β 5 7 β β 12 3 α β 5 7 A B C D α α 1 7 α β 5 7 β β 12 3 Ordenamiento R1 := τL (R2) L es una lista con atributos de R2 R1 lista de tuplas de R2 ordenada con respecto al primer atributo de la lista L, después por el segundo atributo de L, etc. El resultado de aplicar τ a una relación no produce una relación Ejemplo Relación r A B C D α α 1 7 α β 5 7 β β 12 3 β β 5 6 τC (R) = [(α, α, 1, 7), (α, β, 5, 7), (β, β, 5, 6),(β, β, 12, 3)] τC,D (R) = [(α, α, 1, 7), (β, β, 5, 6), (α, β, 5, 7),(β, β, 12, 3)] Operadores de Agregación No son operadores algebraicos Se aplican a columnas completas de una tabla Entregan un único valor resultante Ejemplos: SUM, AVG, COUNT, MIN, MAX Ejemplo Relación r SUM(C) = 24 MAX(D) = 7 AVG(C) = 6 A B C D α α 2 7 α β 5 7 β β 12 3 β β 5 6 Operador de Agrupamiento R1 := γL (R2) L es una lista de elementos que puede ser 1. Atributos individuales (agrupamiento ) 2. OA(A ), donde OA es un operador de agregación y A es un atributo – Una flecha apuntando a un nombre nuevo de atributo, permite renombrar el componente Agrupamiento γL(R) R se agrupa con base en todos los atributos de agrupamiento en la lista L Se forma un grupo por cada lista de valores distintos para esos atributos en R Dentro de cada grupo, se calcula el OA(A ) por cada agregación sobre las lista L Se entrega una tupla por grupo conteniendo 1. Los atributos de agrupamiento y 2. sus agregados Ejemplo Relación r A B C α α 2 α β 5 α α 12 γA,B,AVG(C)→D (r) = ?? 2. Se promedia C en cada grupo 1. Se agrupa r por A y B A B D A B C α α 7 α α 2 α β 5 α α 12 α β 5 Outerjoin Dado R ⋈C S Una tupla de R que no tenga en S una tupla para hacer join de denomina dangling Idem para una tupla de S Outerjoin mantiene las tuplas dangling asignando NULL a los valores faltantes . Ejemplo Relación r A B D α α α β Relación s A B C 7 α φ 2 5 α β 9 (α,β,5) se une con (α,β,9) dangling . Las otras tuplas son r OUTERJOIN s = A B D C α β 5 9 α α 7 null α φ null 2 Operaciones sobre multiconjuntos (bags) Algebra Relacional En un multiconjunto o bag un elemento puede aparece mas de una vez. Ejemplos de multiconjuntos {1,2,1,3}, {1,2,3} Cómo aparecen SQL, es realmente un lenguaje de multiconjuntos Algunas operaciones como π son más eficientes sobre bags que sobre conjuntos Operaciones sobre Bags Selección se aplica a una tupla. Produce el mismo efecto que sobre conjuntos Projection aplicable a tuplas sobre bags no elimina duplicados Productos y joins Aplicable a pares de tuplas los duplicados en multiconjuntos no afectan su forma de aplicación Selección en multiconjuntos Relación s σC < 5 (s) = A B C α φ 2 α φ 2 A B C α φ 2 α β 9 α φ 2 Proyección sobre bags Relación s A πA (R) = α α α A B C α φ 2 α β 9 α φ 2 Producto Relación r Relación s A B D A B C α α 7 α φ 2 α β 5 α β 9 α φ 2 r× ×s = r.A r.B D s.A s.B C α α 7 α φ 2 α β 5 α β 9 α α 7 α φ 2 α β 5 α φ 2 α α 7 α β 9 α β 5 α α 2 Theta-Join Relación r r ⋈ A 1 5 1 r.B<s.B Relación s B 2 6 2 s= B 3 7 C 4 8 A r.B s.B C 1 1 5 1 1 2 2 6 2 2 3 7 7 3 7 4 8 8 4 8 Unión El número de veces que aparece un elemento en la unión de dos bags es igual a la suma del número de veces que aparece en cada bag Ejemplo {1,2,1} ∪ {1,1,2,3,1} = {1,1,1,1,1,2,2,3} Intersección Un elemento aparece en la intersección de dos bags el mínimo número de veces que aparece en alguno de los bags Ejemplo {1,2,1,1} ∩ {1,2,1,3} = {1,1,2} Diferencia Un elemento aparece en la diferencia A – B entre bags tantas veces como aparezca en A menos el número de veces que aparece en B (nunca menos que 0 ) Ejemplo {1,2,1,1} – {1,2,3} = {1,1}. Leyes en Bags y Conjuntos Algunas leyes algebraicas que se satisfacen para conjuntos se satisfacen para bags Ejemplo conmutatividad de la unión (R ∪S = S ∪R ) se satisface para bags Una Ley que falla Unión de conjuntos es idempotente, es decir s ∪s = s Para bags, si x aparece n veces en s, aparecerá 2n veces en s ∪s En general, s ∪ s ≠ s {1} ∪ {1} = {1,1} ≠ {1}