Download Álgebra
Document related concepts
Transcript
LENGUAJES DE BASES DE DATOS: ÁLGEBRA RELACIONAL Francisco Moreno Curso Bases de Datos 1 Álgebra Relacional • Es un lenguaje formal que permite consultar bases de datos relacionales • Conjunto de operadores que toman relaciones como operandos y retornan una relación como resultado Propiedad de cierre El resultado de un operador puede ser el operando de otro. • Es un lenguaje que no es usado directamente por los desarrolladores: usado para la traducción y optimización de consultas SQL • Propuesta por E. F. Codd Curso Bases de Datos 2 Álgebra Relacional • Ocho operadores clasificados en dos grupos: – Tradicionales de la teoría de conjuntos: Unión, Intersección, Diferencia y Producto Cartesiano – Especializados: Restricción (o Selección), Proyección, Reunión (join) y División • Operadores adicionales: Renombrado, Agrupamiento, Derivación (o Extensión) Curso Bases de Datos No traducir join como unión 3 Álgebra Relacional Sean las relaciones: ADMINISTRADOR Nota: Aquí se usa el atributo edad, pero en una BD se suele guardar mas bien la fecha de nacimiento código 1 2 3 nombre edad Jorge Campos 33 Enrique Muñoz 25 Esteban Paz 21 PRODUCTOR código 2 8 10 nombre edad Enrique Muñoz 25 Jorge Arias 30 Juan Martínez 19 Curso Bases de Datos 4 Álgebra Relacional sCondición(R) • Restricción o Selección (s): – Genera una relación que contiene todas las tuplas de una relación que satisfacen una condición dada – La condición se construye mediante operadores de comparación (=, <, , , etc.) y booleanos (AND, OR, etc.) Curso Bases de Datos 5 Álgebra Relacional • sedad 25(ADMINISTRADOR): código nombre edad 1 Jorge Campos 33 2 Enrique Muñoz 25 scódigo < 5(PRODUCTOR): código nombre edad 2 Enrique Muñoz 25 Curso Bases de Datos 6 Álgebra Relacional: pLista atributos(R) • Proyección (p): – Extrae atributos (columnas) de una relación – El resultado es una relación (se eliminan tuplas repetidas) Curso Bases de Datos 7 Álgebra Relacional • pcódigo, edad(ADMINISTRADOR) código edad 1 33 2 25 3 21 • pcódigo, nombre(PRODUCTOR) código 2 8 10 Curso Bases de Datos nombre Enrique Muñoz Jorge Arias Juan Martínez 8 Álgebra Relacional Sea una relación JUGADOR: JUGADOR Sea: ppaís(JUGADOR) país cod nom país China 3 Xiu China Perú 8 Juan Perú 2 Juan Perú Sea: pnom, país(JUGADOR) nom país Xiu China Juan Perú Note que se eliminan tuplas repetidas Curso Bases de Datos 9 Álgebra Relacional • Producto Cartesiano: R1 X R2 – Retorna una relación que contiene todas las tuplas resultantes de la combinación de cada tupla de R1 con cada tupla de R2 – La cabecera de la relación resultante es la unión de las cabeceras de R1 y R2 – Para hacer el producto cartesiano, las cabeceras de R1 y R2 no pueden tener nombres de atributos iguales ¿por qué? Si las cabeceras tienen nombres de atributos iguales se debe usar un alias mediante el operador de renombrado r (más adelante se explica este operador) Curso Bases de Datos 10 Álgebra Relacional Renombrado temporal de la relación Renombrado temporal de los atributos ADMINISTRADOR X rPRO(cod,nom,ed) (pcódigo,nombre,edad(PRODUCTOR)) Operador de renombrado código 1 1 1 2 2 2 nombre edad cod Jorge Campos 33 Jorge Campos 33 Jorge Campos 33 Enrique Muñoz 25 Enrique Muñoz 25 Enrique Muñoz 25 3 Esteban Paz 3 Esteban Paz 3 Esteban Paz 21 21 21 Curso Bases de Datos 2 8 10 2 8 10 nom ed Enrique Muñoz Jorge Arias Juan Martínez Enrique Muñoz Jorge Arias Juan Martínez 2 Enrique Muñoz 8 Jorge Arias 10 Juan Martínez 25 30 19 25 30 19 25 30 19 11 Álgebra Relacional • Unión: R1 R2 – Retorna una relación que contiene todas la tuplas de R1 y de R2 (se eliminan tuplas repetidas) – Las relaciones deben tener cabecera idéntica para que sean compatibles para la unión Curso Bases de Datos 12 Álgebra Relacional • ADMINISTRADOR PRODUCTOR: Solo aparece una vez código 1 2 3 8 10 nombre edad Jorge Campos 33 Enrique Muñoz 25 Esteban Paz 21 Jorge Arias 30 Juan Martínez 19 Curso Bases de Datos 13 Álgebra Relacional • Intersección: R1 R2 – Retorna una relación que contiene todas las tuplas que aparecen tanto en R1 como en R2 – Las relaciones deben tener cabecera idéntica para que sean compatibles para la intersección Curso Bases de Datos 14 Álgebra Relacional • ADMINISTRADOR PRODUCTOR: código nombre edad 2 Enrique Muñoz 25 Curso Bases de Datos 15 Álgebra Relacional • Diferencia: R1 - R2 – Retorna una relación que contiene todas las tuplas que aparecen en R1 pero no en R2 (tuplas idénticas) – Las relaciones deben tener cabecera idéntica para que sean compatibles para la diferencia Curso Bases de Datos 16 Álgebra Relacional • ADMINISTRADOR - PRODUCTOR: código nombre 1 Jorge Campos 3 Esteban Paz edad 33 21 • PRODUCTOR - ADMINISTRADOR: código nombre 8 Jorge Arias 10 Juan Martínez Curso Bases de Datos edad 30 19 17 • La unión, intersección y producto cartesiano son conmutativas y asociativas • La diferencia no es conmutativa ni asociativa • La intersección no es un operador primitivo ya que se puede expresar mediante la diferencia Curso Bases de Datos 18 Álgebra Relacional No traducirla al español como unión • Reunión (join): Tiene varias modalidades: – Reunión natural (natural join): R1 ⋈ R2 Sea R1(A,B) y R2 (B,C). El resultado de R1 ⋈ R2 es una relación con cabecera (A,B,C) donde cada tupla de R1 se combina con cada tupla de R2 siempre y cuando tengan el mismo valor en el atributo en común (B). A, B y C pueden ser atributos compuestos. Curso Bases de Datos 19 Álgebra Relacional EMPLEADO código 1 2 3 8 10 12 nombre edad depto Jorge Campos 33 1 Enrique Muñoz 25 1 Esteban Paz 21 1 Jorge Arias 30 2 Juan Martínez 19 2 Anselmo Rodas 28 6 Nota: En este ejemplo, el campo depto en EMPLEADO no es CF con respecto a la relación DEPARTAMENTO DEPARTAMENTO depto 1 2 3 4 descripción Administración Producción Ventas Finanzas Atributo de join Curso Bases de Datos 20 Álgebra Relacional • EMPLEADO ⋈ DEPARTAMENTO: código nombre edad depto descripción 1 Jorge Campos 33 1 Administración 2 Enrique Muñoz 25 1 Administración 3 Esteban Paz 21 1 Administración 8 Jorge Arias 30 2 Producción 10 Juan Martínez 19 2 Producción Curso Bases de Datos 21 Álgebra Relacional – Semi reunión (semi join): R1⊳ R2: • Similar a la reunión natural pero solo se muestran los atributos de la relación de la izquierda ¿Utilidad? – Reunión Theta (theta join): R1 QCondición R2 • Equivale a: sCondición (R1 X R2) • El operador de comparación usado en la condición no es el “=“ de la reunión natural sino alguno de los siguientes: “>“, “<“, “>=“, “<=“, “≠“ Curso Bases de Datos 22 Álgebra Relacional • EMPLEADO Qdepto > dep rDEPT(dep,desc) (p(depto,descripción)(DEPARTAMENTO) ) código 8 10 12 12 12 12 nombre Jorge Arias Juan Martínez Anselmo Rodas Anselmo Rodas Anselmo Rodas Anselmo Rodas edad depto 30 19 28 28 28 28 Curso Bases de Datos dep 2 2 6 6 6 6 desc 1 1 1 2 3 4 Administración Administración Administración Producción Ventas Finanzas 23 Álgebra Relacional • División: R1 R2 Sean las relaciones R1(A,B) y R2(B). El resultado de R1 R2 es una relación con el atributo A • Un valor a A hace parte del resultado de la división si a está en R1 combinado con cada valor B que aparece en R2 • A y B pueden ser atributos compuestos Curso Bases de Datos 24 Álgebra Relacional ARTISTAYGENERO codartista nomgénero GÉNERO nomgénero 45 Soul Soul 45 Pop Pop 45 Dance Dance 8 Soul 8 Pop 23 Dance Curso Bases de Datos 25 Álgebra Relacional • ARTISTAYGENERO GÉNERO codartista 45 Ya que en este caso solo el artista 45 está combinado con todos los géneros que aparecen en la relación GÉNERO Curso Bases de Datos 26 Álgebra Relacional Operadores adicionales: Asignación: VbleRelacion ← Relación r: Renombra atributos y el nombre de la relación: rNUEVONOMBRERELACIÓN(atributos renombrados)(p(atributos)(R)) Nota: El renombrado no es definitivo, este solo tiene efecto durante la expresión del álgebra relacional. Curso Bases de Datos 27 Álgebra Relacional Ģ: Operador de agrupamiento. Funciones de grupo: SUM(), AVG(), MAX(), MIN(), COUNT() Lista atributos de agrupamientoĢLista valores agregados(R) Ej. Sea: Valor agregado: función de grupo aplicada a un atributo, cada uno con su renombrado EMP código 1 2 3 8 10 12 nombre edad depto Jorge Campos 33 1 Enrique Muñoz 25 1 Esteban Paz 21 1 Jorge Arias 30 2 Juan Martínez 19 2 Anselmo Rodas 28 6 ¿Qué hace la siguiente consulta? deptoĢCOUNT(código) AS conteo(EMP) Curso Bases de Datos Renombrado del valor agregado 28 TRABAJADOR género cod Álgebra Relacional país salario 1 m China 100 2 m UK 200 4 m China 100 3 f China 300 8 f China 100 9 m UK 23 f 50 China 100 país país, géneroĢSUM (salario) AS total, COUNT(cod) AS cuantos (TRABAJADOR) género total cuantos China m 200 2 UK m 250 2 China f 500 Curso Bases de Datos 29 3 Álgebra Relacional • Derivación: EXTEND R ADD Lista cálculos AS Lista atributos EMP código 1 2 3 8 10 12 nombre sal bono Jorge Campos 33 1 Enrique Muñoz 25 1 Esteban Paz 21 1 Jorge Arias 30 2 Juan Martínez 19 2 Anselmo Rodas 28 6 Ejemplo: EXTEND EMP ADD sal+bono AS totsal Curso Bases de Datos 30 Álgebra Relacional • Se genera una relación como la original pero con un atributo totsal adicional: código 1 2 3 8 10 12 nombre sal bono totsal 34 Jorge Campos 33 1 26 Enrique Muñoz 25 1 22 Esteban Paz 21 1 32 Jorge Arias 30 2 21 Juan Martínez 19 2 34 Anselmo Rodas 28 6 La relación original permanece intacta ¿Qué hace la siguiente consulta? Ej: EXTEND EMP ADD 1 AS num, ‘Hola’ AS mensaje Curso Bases de Datos 31