Paul Leger http://pleger.cl Algebra Relacional Paul Leger http://pleger.cl
Consultando a una BD Aparte de re-escribir, una base de datos son para hacer consultas (es decir lecturas) Los motores de base de datos usan diferentes lenguajes de programación para comunicarse para permitir consultas La mayoría de estos lenguajes no son Turing complete, y son específicos al dominios de la base de datos. En otras palabras, se dicen que son Domain Specific Languages (DSLs) no Turing complete
Algebra Relacional Es un lenguaje teórico para realizar consultas a una base de datos SQL, el cual es un lenguaje concreto para base de datos, tienes sus bases en algebra relacional Para realizar investigación en consultas a una base de datos, se usa algebra relacional
Elementos de Algebra Relacional Las tablas son conocidas como relaciones Los registros son conocidos como tuplas Ejemplos R(r1,r2,r3,…, rn) y T(r1,s2,s3)
Suponga estas dos relaciones: Persona y Ciudad Rut Nombre Ciudad 12312312-3 Paul Coquimbo 15123561-3 Renato Peor es nada 12354345-2 Mariana Fucking Ciudad Coquimbo Chanaral La Serena Peor es nada Chigualoco Luego veremos más letras!!
Operaciones en AR Proyección (π): Proyecta una base de datos. Por ejemplo π _rut_ (Persona) => R1 π _nombre,ciudad_ (Persona) => R2 Rut 12312312-3 15123561-3 12354345-2 Nombre Ciudad Paul Coquimbo Renato Peor es nada Mariana Fucking
Renombrar Renombrar (ρ): Renombrar una relación ρ_Alumno_(Persona) => Alumno ρ_rut,nombre,hogar (Alumno)_(Persona) => Alumno(rut,nombre,hogar)
Selección Selección (σ): Selecciona un conjunto de tuplas dada una condición (o conjunto de condiciones) σ_nombre=«Paul»_(Persona) => Rut Nombre Ciudad 12312312-3 Paul Coquimbo
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 Rut Nombre R1.Ciudad R2.Ciudad 12312312-3 Paul Coquimbo Chanaral La Serena Peor es nada Fucking 15123561-3 Renato …
Unión (U) Unión: Une dos relaciones, donde los campos deberían tener los mismos nombres y dominios RT = Persona U Empleado #(RT) <= #(Persona) + #(Empleado) ¿Por qué la cardinalidad es <=?
Intersección (∩) Intersección(∩) : Intersecta dos relaciones, donde los campos deberían tener los mismos nombres y dominios RT = Persona ∩ Empleado RT contiene las personas que son empleados también
Diferencia (-) Diferencia(-) : R=R1-R2, donde R contiene todas las tuplas de R1 que no están en R2 Nuevos = ActualesEmpleados - AntiguosEmpleados
Resumen Proyección (π) Renombrar (ρ) Selección (σ) Producto Cartesiano (x) Unión (U) Intersección (∩) Diferencia (-)
Ejercicios Dada las relaciones, resuelva a) σ_T1.P = T2.A_(T1x T2) b) σ_T1.Q = T2.B_(T1x T2) c) T1 U T2 d) T1 U T1 e) σ_T1.P = T1.P_(T1x T1) f) σ_T1.P = T2.A ^ T1.R= T2.C_(T1x T2) g) T2-T3 h) T3 – T2 i) π _A,B_(T2) – T3 T3 A B C 10 b 6 5
Consultas