Algebra Relacional y Calculo Relacional A. Apaza Tarqui Universidad Nacional del ALTIPLANO PUNO - PERU apazatarqui@hotmail.com 25/09/2013 Curso Bases de Datos 2 lgebra Relacional Permite operar con el Modelo Relacional Conjunto de operadores que toman relaciones como sus operandos y regresan una relacin como resultado El lgebra es cerrada Es un formalismo que permite solicitar informacin a las Bases de Datos Es un lenguaje puro (en general no se implementa directamente) Propuesta por Codd Se usa para la traduccin de una consulta SQL y para optimizacin de consultas 25/09/2013 Curso Bases de Datos 3 lgebra Relacional 8 operadores iniciales clasificados en 2 grupos: Tradicionales de la teora de conjuntos: Unin, Interseccin, Diferencia y Producto Cartesiano Especiales: Restriccin (o Seleccin), Proyeccin, Reunin (join) y Divisin Operadores adicionales: Renombrado, Agrupamiento
25/09/2013 Curso Bases de Datos 4 lgebra Relacional Cdigo Nombre Edad 1 Jorge Campos 33 2 Enrique Muoz 25 3 Esteban Paz 21 Cdigo Nombre Edad 2 Enrique Muoz 25 8 Jorge Arias 30 10 Juan Martnez 19 ADMINISTRADOR PRODUCTOR Sean las relaciones: REPASO!! Cul es el esquema de la relacin ADMINISTRADOR? (Cdigo,Nombre,Edad) 25/09/2013 Curso Bases de Datos 5 Restriccin o Seleccin ( ) El argumento es una relacin y una condicin Produce una relacin R1 que contiene todas las tuplas de R que cumplen una condicin especfica La condicin se construye mediante operadores de comparacin (=,<,> etc.) y booleanos (AND, OR etc.) El resultado es una nueva relacin cuyo esquema es idntico al esquema de R condicin (R) 25/09/2013 Curso Bases de Datos 6 Restriccin o Seleccin ( ) o Edad >= 25
(Administrador):
o Cdigo < 5
(Productor):
Cdigo Nombre Edad 1 Jorge Campos 33 2 Enrique Muoz 25 3 Esteban Paz 21 Cdigo Nombre Edad 1 Jorge Campos 33 2 Enrique Muoz 25 Cdigo Nombre Edad 2 Enrique Muoz 25 Cdigo Nombre Edad 2 Enrique Muoz 25 8 Jorge Arias 30 10 Juan Martnez 19 25/09/2013 Curso Bases de Datos 7 Proyeccin (t) Toma como argumento una relacin R y una lista de atributos Se utiliza para extraer atributos (columnas) de una relacin R El resultado es una nueva relacin R1 cuyo esquema corresponde a la lista de atributos proyectados En R1 se eliminan las tuplas duplicadas Se puede extraer ms de una columna a la vez t Lista Atributos (R) 25/09/2013 Curso Bases de Datos 8 Proyeccin ( ) t Cdigo,Edad (Administrador)
Cdigo Edad 1 33 2 25 3 21 Cdigo Nombre 2 Enrique Muoz 8 Jorge Arias 10 Juan Martnez t Cdigo,Nombre (Productor) Cdigo Nombre Edad 1 Jorge Campos 33 2 Enrique Muoz 25 3 Esteban Paz 21 Cdigo Nombre Edad 2 Enrique Muoz 25 8 Jorge Arias 30 10 Juan Martnez 19 25/09/2013 Curso Bases de Datos 9 Proyeccin ( ) Cdigo Edad 1 30 2 25 3 30 Suponga una relacin W as: t Edad (W) W Edad 30 25 se eliminan tuplas repetidas !! El resultado ser: 25/09/2013 Curso Bases de Datos 10 Producto Cartesiano: R1 X R2 Toma como argumentos dos relaciones R1 y R2 Da como resultado una relacin R3 cuyo esquema consta tanto de los atributos de R1 como de los atributos de R2 Los esquemas de R1 y R2 deben ser disjuntos, es decir los esquemas de R1 y R2 no pueden tener nombres de atributos en comn por qu? Se debe usar un alias (mediante el operador ) si los esquemas no son disjuntos R3 contiene todas las tuplas resultantes de la concatenacin de cada tupla de R1
con cada una de las tuplas de R2
Renombrado de atributos 25/09/2013 Curso Bases de Datos 11 Ejemplo Cdigo Nombre Edad Cod Nom Edad1 1 Jorge Campos 33 2 Enrique Muoz 25 1 Jorge Campos 33 8 Jorge Arias 30 1 Jorge Campos 33 10 Juan Martnez 19 2 Enrique Muoz 25 2 Enrique Muoz 25 2 Enrique Muoz 25 8 Jorge Arias 30 2 Enrique Muoz 25 10 Juan Martnez 19 3 Esteban Paz 21 2 Enrique Muoz 25 3 Esteban Paz 21 8 Jorge Arias 30 3 Esteban Paz 21 10 Juan Martnez 19 Administrador X [ CdigoCod,NombreNom,EdadEdad1 (Productor)] El renombrado de la relation R(A,B,C,D) en R(A,K,L,D) se denota BK,CL (R) El renombrado es puramente sintctico !! 25/09/2013 Curso Bases de Datos 12 Unin: R1
R2 Toma como argumentos dos relaciones R1 y R2 con esquemas idnticos Retorna una relacin R3 con el mismo esquema de R1 y R2 que contiene todas la tuplas de R1 y todas las de R2, eliminando tuplas repetidas R1 R2 25/09/2013 Curso Bases de Datos 13 Ejemplo: Administrador Productor:
Cdigo Nombre Edad 1 Jorge Campos 33 2 Enrique Muoz 25 3 Esteban Paz 21 8 Jorge Arias 30 10 Juan Martnez 19 25/09/2013 Curso Bases de Datos 14 Interseccin: R1 R2
Toma como argumentos dos relaciones R1 y R2 con esquemas idnticos Retorna una relacin R3 con el mismo esquema de R1 y R2 que contiene todas las tuplas que aparecen tanto en R1 como en R2 R1 R2 25/09/2013 Curso Bases de Datos 15 Ejemplo Administrador Productor
Cdigo Nombre Edad 2 Enrique Muoz 25 25/09/2013 Curso Bases de Datos 16 Diferencia: R 1 R 2
Toma como argumento dos relaciones R1 y R2 con esquemas idnticos Retorna una relacin R3 con el mismo esquema de R1 y R2 que contiene todas las tuplas que aparecen en R1 pero no en R2 R1 R2 25/09/2013 Curso Bases de Datos 17 Ejemplo Administrador Productor:
Productor Administrador:
Cdigo Nombre Edad 1 Jorge Campos 33 3 Esteban Paz 21 Cdigo Nombre Edad 8 Jorge Arias 30 10 Juan Martnez 19 25/09/2013 Curso Bases de Datos 18 Reunin (JOIN) NATURAL JOIN: R1 R2
Si R1(A,B) y R2(B,C) el resultado de R1 R2 es una relacin R3 con esquema R3(A,B,C) donde cada tupla de R1 se concatena con cada tupla de R2 SIEMPRE Y CUANDO tengan el mismo valor del atributo en comn (B). El atributo B puede ser compuesto. 25/09/2013 Curso Bases de Datos 19 Ejemplo Cdigo Nombre Edad Depto 1 Jorge Campos 33 1 2 Enrique Muoz 25 1 3 Esteban Paz 21 1 8 Jorge Arias 30 2 10 Juan Martnez 19 2 12 Anselmo Rodas 28 6 Depto Descripcin 1 Administracin 2 Produccin 3 Ventas 4 Finanzas Empleado Departamento Atributo de Join Nota: En este ejemplo, el campo Depto en Empleado NO ES CF con respecto a la tabla Departamento 25/09/2013 Curso Bases de Datos 20 Ejemplo Empleado Departamento Cdigo Nombre Edad Depto Descripcin 1 Jorge Campos 33 1 Administracin 2 Enrique Muoz 25 1 Administracin 3 Esteban Paz 21 1 Administracin 8 Jorge Arias 30 2 Produccin 10 Juan Martnez 19 2 Produccin 25/09/2013 Curso Bases de Datos 21 SEMI JOIN ( ) Idntico al NATURAL JOIN pero la relacin resultante tiene el esquema de la relacin izquierda Utilidad? THETA JOIN (R1 Q Condicin R2) El operador de comparacin usado en la condicin NO es el = sino alguno de los siguientes: >, <, >=, <=, Es equivalente a: o Condicin (R1 X R2)
25/09/2013 Curso Bases de Datos 22 Ejemplo Empleado O Depto > Dep [ DeptoDep (Departamento)] Cdigo Nombre Edad Depto Dep Desc 8 Jorge Arias 30 2 1 Administracin 10 Juan Martnez 19 2 1 Administracin 12 Anselmo Rodas 28 6 1 Administracin 12 Anselmo Rodas 28 6 2 Produccin 12 Anselmo Rodas 28 6 3 Ventas 12 Anselmo Rodas 28 6 4 Finanzas 25/09/2013 Curso Bases de Datos 23 Divisin: R 1 R 2 Def 1: Sean las relaciones R1(A,B) y R2(B). El resultado de R1 R2
es una relacin R3 cuyo esquema esta compuesto por el atributo A, donde para todo valor de B en R2 existe una pareja en R1
de A con ese valor.
Def 2: R S = {t | t e HK (R) y {t} x s _ r} con K= esquema de R esquema de S Tuplas de S Tuplas de R 25/09/2013 Curso Bases de Datos 24 Ejemplo Empleado Cdigo Nombre Edad Depto 1 Jorge Campos 33 1 2 Enrique Muoz 25 1 2 Enrique Muoz 25 2 3 Esteban Paz 21 1 8 Jorge Arias 30 2 10 Juan Martnez 19 2 Depto 1 2 Departamento Empleado (t Depto (Departamento))
En este ejemplo la relacin empleado no est normalizada, observe que la CP es (Cdigo, Depto) y Cdigo Nombre, Edad
Cdigo Nombre Edad 2 Enrique Muoz 25 Depto Descripcin 1 Administracin 2 Produccin 25/09/2013 Curso Bases de Datos 25 Adems .. Se permite tambin el siguiente operador: Asignacin: VbleRelacion Relacin
Otra forma de renombrar atributos y el nombre de la relacin
NuevoNombreRelacin(Atributos Renombrados) (
t (Lista Atributos) (R)) 25/09/2013 Curso Bases de Datos 26 Agrupar con funciones : Agrupar con funciones Sum(), Avg(), Max(), Min(), Count() Cdigo Nombre Edad Depto 1 Jorge Campos 33 1 2 Enrique Muoz 25 1 3 Esteban Paz 21 1 8 Jorge Arias 30 2 10 Juan Martnez 19 2 12 Anselmo Rodas 28 6 Qu hace la siguiente consulta? Depto
Count(Cdigo) AS conteo (Emp) Renombrado de la funcin de Grupo Emp Atributos de Agrupamiento Funciones de Grupo (R) Ej. Sea: SINTAXIS: 25/09/2013 Curso Bases de Datos 27 Extender Extend R ADD expresin AS nuevo_atributo Cdigo Nombre Sal Bono 1 Jorge Campos 33 1 2 Enrique Muoz 25 1 3 Esteban Paz 21 1 8 Jorge Arias 30 2 10 Juan Martnez 19 2 12 Anselmo Rodas 28 6 Emp Ej: Extend Emp ADD Sal*2 AS Saldobl 25/09/2013 Curso Bases de Datos 28 Ejemplo Se genera una relacin como la original pero con un atributo saldobl adicional: Cdigo Nombre Sal Bono Saldobl 1 Jorge Campos 33 1 66 2 Enrique Muoz 25 1 50 3 Esteban Paz 21 1 42 8 Jorge Arias 30 2 60 10 Juan Martnez 19 2 38 12 Anselmo Rodas 28 6 56 Qu hace la siguiente consulta? Ej: Extend Emp ADD 1 AS num, Hola AS mensaje 25/09/2013 Curso Bases de Datos 29 Clculo Relacional Es otro Lenguaje de Consulta para BD relacionales Sirve para la manipulacin y extraccin de datos a partir de las relaciones Es un lenguaje puro (generalmente no implementado directamente) aunque existen prototipos (WinRDBI) Se basa en el Clculo de predicados de primer orden, donde una relacin expresa una propiedad o predicado Es cerrado relacionalmente 25/09/2013 Curso Bases de Datos 30 Clculo Relacional El lgebra Relacional es secuencial, procedimental El Clculo Relacional no es procedimental. Intenta capturar el lenguaje natural: dice qu se quiere obtener pero no cmo Existen 2 variantes: de Tuplas y de Dominios Nos concentraremos en el Clculo Relacional de Tuplas. Concepto bsico: Tupla Una consulta se escribe as: {t / P(t)} significa: el conjunto de tuplas t, tal que el predicado P es verdadero (se cumple) para t 25/09/2013 Curso Bases de Datos 31 Clculo Relacional de Tuplas Elementos del predicado: t e r : la tupla t est contenida en la relacin r t[a] : significa el valor del atributo a de la tupla t Condiciones de comparacin: (>,>=,<,<=, =, ) Comparaciones entre atributos o entre un atributo y una constante Ejemplos: t1[a] t1[b] , t1[c] > 8, t1[a] = t2[b] Cuantificadores: Existencial (-) y Universal (). Evalan a falso o verdadero Cuantificador Existencial - t e r (Q(t)): Evala a verdadero si existe al menos una tupla t de la relacin r que cumple el predicado Q. 25/09/2013 Curso Bases de Datos 32 Clculo Relacional de Tuplas Ejemplos: -t e r (t[b] = 11): Es verdadero si existe al menos una tupla en r cuyo atributo b valga 11 -t e r (t[b] < 3 . t[a]=8): Es verdadero si existe al menos una tupla en r, cuyo atributo b sea menor que 3 y cuyo atributo a sea igual a 8 Cuantificador Universal: t e r (Q(t)): Evala a verdadero si todas las tuplas t de r cumplen el predicado Q
Ejemplo: t e r (t[a]= 8): Verdadero si todas las tuplas t de r tienen un valor de 8 en el atributo a 25/09/2013 Curso Bases de Datos 33 Clculo Relacional de Tuplas Condiciones Compuestas: Son combinaciones de los elementos anteriores, mediante los operadores: . (and), v (or), (not) Ejemplos: (t1 e r . t1[a] = 8) (t1 e r . t2 e s (t2[b] > t1[c]) El cuantificador universal puede ser expresado en trminos del cuantificador existencial - as:
t e r (Q(t)) - t e r (Q(t))
Un ejemplo en lenguaje natural: Todos los clientes tienen nombre No existe un cliente que No tenga nombre 25/09/2013 Curso Bases de Datos 34 Clculo Relacional de Tuplas La variable asociada a un cuantificador slo tiene existencia (validez) dentro del predicado correspondiente, es decir: - t e r (Q(t))
La variable t slo tiene validez dentro del predicado Q. Por lo tanto la condicin:
t1 e r . t2 e s (t2[b] > t1[c]) . t2[z]=10
Es invlida ya que t2 no existe por fuera del cuantificador . Note que t1 si puede aparecer dentro del cuantificador. Se dice t2 que es una variable ligada y t1 es libre.
25/09/2013 Curso Bases de Datos 35 Clculo Relacional de Tuplas Sean las relaciones:
Est Ced Nom Edad 10 Pedro 14 20 Olga 29 50 Ana 30
Prof Ced Nom Edad 45 Gloria 14 26 Dario 29 50 Ana 30 34 Cristina 32
25/09/2013 Curso Bases de Datos 36 Ejemplos Sencillos: Clculo Relacional de Tuplas a) Imprimir la informacin de todos los estudiantes {t/ t e Est}
b) Igual que a) pero solo aquellos estudiantes mayores de 25 aos {t/ t e Est . t[edad] > 25}
c) Igual que a) pero solo imprimir las cdulas {t/ - s e Est (t[ced] = s[ced])}
d) Imprimir solo las cdulas de los estudiantes mayores de 25 aos {t/ - s e Est (t[ced] = s[ced] . s[edad] >25)} Ntese que para proyectar slo algunos atributos de una relacin se requiere utilizar el cuantificador existencial 25/09/2013 Curso Bases de Datos 37 Ejemplos Sencillos: Clculo Relacional de Tuplas e) Igual que a) pero solo imprimir las cdulas y los nombres {t/ - s e Est (t[ced]=s[ced] . t[nom]= s[nom])}
f) Imprimir las cdulas de los estudiantes que tambin son profesores
{t/ - s e Est (t[ced] = s[ced]) . - w e Prof (t[ced] = w[ced])} g) Imprimir las cdulas de todos los estudiantes y todos los profesores {t/ - s e Est (t[ced] = s[ced]) v - w e Prof (t[ced] = w[ced])}
h) Imprimir las cdulas de los estudiantes que no son profesores {t/ - s e Est (t[ced] = s[ced]) . - w e Prof (t[ced] = w[ced])} 25/09/2013 Curso Bases de Datos 38 Clculo Relacional de Tuplas Supngase las relaciones A (a,b,c) y B (d,e,f) su producto cartesiano en clculo es: i) {t/ - reA (- s e B ( t[a] = r[a] . t[b] = r[b] . t[c] = r[c] . t[d] = s[d] . t[e] = s[e] . t[f] = s[f] ) ) }
Y el renombrado se puede lograr as: j) {t/ - e e Est (t[ced AS cdula] = e[ced])} 25/09/2013 Curso Bases de Datos 39 Clculo Relacional de Tuplas Ya con los elementos anteriores se pueden lograr los equivalentes a las operaciones del lgebra: restriccin, proyeccin (ver consulta c)), unin (ver g)), interseccin (ver f)), diferencia (ver h)), producto (ver i)), renombrado (ver j)) La reunin (join) y la divisin se pueden derivar a partir de las otras operaciones No se presentar para el clculo un operador de agregacin similar al del lgebra Por lo tanto cualquier consulta* expresada mediante lgebra Relacional se puede escribir tambin en Clculo Relacional de Tuplas Ambos lenguajes tienen la misma potencia expresiva * Excepto ciertas consultas realizadas con el operador de agregacin .