Paul Leger http://pleger.cl Algebra Relacional Paul Leger http://pleger.cl
NOTA: Python, Java, C, Ruby son Turing complete Consultando a una BD Aparte de escribir, una base de datos es usada para hacer consultas (es decir, lecturas) Los motores de base de datos usan diferentes lenguajes de programación para comunicarse y recibir consultas Dato cultural: La mayoría de los lenguajes para base de datos no son Turing complete, y son específicos este dominio. En otras palabras, se dicen que son Domain-Specific Languages (DSLs) y no Turing complete NOTA: Python, Java, C, Ruby son Turing complete
Algebra Relacional Es un lenguaje teórico para realizar consultas a una base de datos SQL, el cual es un implementación concreta de un lenguaje de consultas de base de datos, el cual tiene sus bases en algebra relacional Para realizar investigación y optimizaciones sobre consultas a una base de datos, se sigue usando algebra relacional
Algebra Relacional Algebra Relacional SQL Descripción formal de un lenguaje de consultas Implementación concreta
Elementos de Algebra Relacional (AR) Las entidades son conocidas como relaciones Los registros son conocidos como tuplas Ejemplos de dos relaciones R(r1,r2,r3,…, rn) y T(s1,s2, r1) ¿Qué atributo en común tienen R y T? ¿En el modelo relacional que sería este atributo en común?
Operadores en Algebra Relacional En algebra operacional, las consultas sobre una base de datos se logran a través la composición de un conjunto de operadores funcionales Funcional: NuevaR = Operador(R). El operador toma una relación y opera con ella y retorna el resultado de esa operación como otra nueva relación. Es decir, la relación original “R” no se modifica. Composición de operadores: NuevaR = Operador3(Operador2(R2, Operador1(R1))). Para exactamente realizar o encontrar el resultado que buscamos, deberemos componer el uso de operadores. Es decir, resultado de operador pasa como entrada a otro operador.
Suponga estas dos relaciones: Persona y Ciudad Rut Nombre NombreC 12312312 Paul Coquimbo 15123561 Renato Peor es nada 12354345 Mariana Fucking 1232 La Serena Sabías que … NombreC Coquimbo Chanaral La Serena Peor es nada Chigualoco Conociendo las matemáticas ¡¡Luego veremos casi solamente letras y no conceptos como “rut” y “nombre”!! En Kansas, hay una ciudad que se llama Google (Topeka)
Operadores de Algebra Relacional “Aquí se viene interesante”
¡Esta relación no es modificada! Proyección (π) Proyecta una base de datos. Por ejemplo R1 = π rut (Persona) R2= π nombre,nombreC (Persona) Rut 12312312 15123561 12354345 1232 R1 Nombre NombreC Paul Coquimbo Renato Peor es nada Mariana Fucking La Serena ¡Esta relación no es modificada! R2
Proyección (π) [2] R3 = π nombre (Persona) En este caso, la proyección disminuyó el largo de la tabla persona de 4 a 3 registros ¿Por qué? Nombre Paul Renato Mariana R3
Renombrar (ρ) Renombrar una relación. Usaremos la siguientes sintaxis para renombrar Donde a es el antiguo nombre del atributo y b es el nuevo nombre del atributo de la relación R Ejemplo: Alumno = ρnombreC/hogar (Persona) R = π hogar (Alumno) hogar Coquimbo Peor es nada Fucking La Serena R
σ nombre=«Paul»(Persona) Selección (σ) Selecciona un conjunto de tuplas dada una condición (o conjunto de condiciones). Por ejemplo: σ nombre=«Paul»(Persona) Rut Nombre NombreC 12312312-3 Paul Coquimbo 1232 La Serena ¿Qué contiene R2 en las siguientes expresiones? R1 = σ nombre=«Paul»(Persona) R2 = π nombre (R1)?
Producto Cartesiano (x) Al igual que en la matemáticas, el producto cartesiano cruza todas las tuplas de una relación R1 con todas las tuplas de una relación R2. Por ejemplo: R = Persona x Ciudad Rut Nombre Persona.nombreC Ciudad.nombreC 12312312 Paul Coquimbo Chanaral La Serena Peor es nada Fucking 15123561 Renato … R = En otras palabras, R contiene todas las combinaciones posibles entre las tuplas de Persona y Ciudad
Unión (U) R = Cliente U Empleado |R| ≤ |Cliente| + |Empleado| Une dos relaciones, donde los atributos deberían tener los mismos nombres y dominios. Por ejemplo: R = Cliente U Empleado |R| ≤ |Cliente| + |Empleado| Nota: ¿Por qué la cardinalidad es ≤? ¿Le recuerda a algo la expresión |x + y| ≤ |x| + |y| ?
Unión (U) [2] = U Cliente Empleado Nombre Paul Renato Mariana Marco Juan Nombre Paul Renato Mariana Nombre Juan Marco Paul = U
Intersección (∩) R = Cliente ∩ Empleado Intersecta dos relaciones, donde los atributos deberían tener los mismos nombres y dominios. Por ejemplo: R = Cliente ∩ Empleado Acá, R contiene los clientes que son empleados también
? Intersección (∩)[2] = ∩ Cliente Empleado Nombre Paul Renato Mariana Juan Marco Paul ? = ∩
Diferencia (-) R = R1 - R2, donde R contiene todas las tuplas de R1 que no están en R2. Los atributos deberían tener los mismos nombres y dominios. Por ejemplo: Nuevos = ActualesEmpleados - AntiguosEmpleados Nombre Paul Renato Mariana Nombre Renato Ricardo Mariana Nombre Paul = -
Resumen Proyección (π) Renombrar (ρ) Selección (σ) Producto Cartesiano (x) Unión (U) Intersección (∩) Diferencia (-)
Ejercicios Dada las relaciones T1, T2 y T3, resuelva: T1 T2 T3 P Q R 1) π p(σ T1.q=“b” (T1)) 2) σ T1.P = T2.A (T1 x T2) 3) σ T1.Q = T2.B (T1 x T2) 4) T1 U T2 5) T1 U T1 6) σ T1.P = T1.P(T1 x T1) 7) σ T1.P = T2.A ^ T1.R= T2.C(T1 x T2) 8) T2 – T3 9) T3 – T2 10) π A,B (T2) – T3 T1 T2 T3 P Q R 10 a 5 15 b 8 25 6 A B C 10 b 6 25 c 3 5 A B C 10 b 6 5
Consultas