Algebra Relacional Operadores Adicionales Fuentes http://www-db.stanford.edu/~ullman/fcdb.html Fundamentals of Database Systems, Elmasri y Navathe Marta Millan [email protected] www.eisc.univalle.edu.co/materias 1 Operadores Adicionales No añaden poder al algebra relacional Responden a consultas comunes y frecuentes Intersección de conjuntos Join Natural División Asignación Intersección ∩ Operador Binario r ∩ s r∩s={t|t∈r∧t∈s} r, s tienen la misma aridad (unión compatibles) Atributos de r y s son compatibles r ∩ s = r – (r – s) Intersección ∩ Relaciones A B α α β 1 2 1 r r∩s A B α 2 A B α β 2 3 s Ejemplo Fundamentals of Database Systems, Elmasri y Navathe Dadas las relaciones STUDENT, INSTRUCTOR, qué operación representan (b), (c), (d), (e) Join Natural r s r ,s relaciones definidas sobre esquemas R y S respectivamente r s : relación definida sobre esquema R ∪ S asi: Considere cada par de tuplas tr de r y ts de s Si tr y ts son iguales para cada atributo R ∩ S, una tupla t se adiciona a la relación resultante, donde • t tiene el mismo valor de tr en r • t tiene el mismo valor de ts en s Join Natural : Ejemplo R = (A, B, C, D) S = (E, B, D) Esquema resultante = (A, B, C, D, E) r s se define como ∏r.A, r.B, r.C, r.D, s.E (σr.B = s.B ∧ r.D = s.D (r x s)) Join Natural Relaciones A B C D B D E α β γ α δ 1 2 4 1 2 α γ β γ β a a b a b 1 3 1 2 3 a a a b b α β γ δ ∈ r r s s A B C D E α α α α δ 1 1 1 1 2 α α γ γ β a a a a b α γ α γ δ Join Natural (*) Conecta dos relaciones: Igualando los atributos del mismo nombre, y Proyectando una copia de cada par de atributos igualados Denotado como R3 = R1 ⋈ R2 Ejemplo Programacion Asignatura cod nombre cred 7500081M 7500082M 7500083M 7500085M .... BD MDI DSI FADA gr aula Edif Hora 7500081M 01 7500081M 02 2026 331 10-12 Jueves 2026 7500083M 80 2027 331 8-10 331 10-13 7500085M 01 2075 333 cod-c 4 4 4 4 7-10 Horarios= Asignatura⋈Programación cod-c nombre cred gr aula Edif Hora dia 01 2026 331 10-12 Jueves BD 4 4 02 2026 8-10 Viernes 7500083M DSI 4 80 2027 331 331 7500085M FADA 4 01 2075 333 7500081M 7500081M BD 10-13 lunes 7-10 Martes dia Viernes lunes Martes Theta-Join R3 := R1 ⋈C R2 Calcula el producto R1 Χ R2 Aplica la selección σC al resultado En σ, C puede ser una expresión de valor booleano Ejemplo Programacion Asignatura cod nombre cred 7500081M 7500082M 7500083M 7500085M .... BD MDI DSI FADA gr aula Edif Hora 7500081M 01 7500081M 02 2026 331 10-12 Jueves 2026 7500083M 80 2027 331 8-10 331 10-13 7500085M 01 2075 333 cod-c 4 4 4 4 7-10 dia Viernes lunes Martes Horarios= Asignatura⋈Asignatura.cod = Programacion.cod-c Programación cod-c nombre cred cod-c gr aula Edif Hora dia 7500081M 7500081M 01 2026 331 10-12 Jueves BD 4 4 02 2026 7500083M DSI 4 7500083M 80 2027 331 8-10 Viernes 331 10-13 lunes 7500085M FADA 4 7500085M 01 2075 333 7500081M 7500081M BD 7-10 Martes División ÷ r÷s Útil en preguntas con expresión “para todo” r, s son relaciones definidas sobre esquemas R y S respectivamente donde R = (A1, …, Am , B1, …, Bn ) S = (B1, …, Bn) División El resultado of r ÷ s es una relación definida sobre el esquema R – S = (A1, …, Am) r ÷ s = { t | t ∈ ∏ R-S (r) ∧ ∀ u ∈ s ( tu ∈ r ) } tu representa la concatenación de las tuplas t y u para producir una sola tupla División Relaciones r÷s A α β A B α α α β γ δ δ δ ∈ ∈ β 1 2 3 1 1 1 3 4 6 1 2 r B 1 2 s División Relaciones A B C D E D E α α α β β γ γ γ a a a a a a a a α γ γ γ γ γ γ β a a b a b a b b 1 1 1 1 3 1 1 1 a b 1 1 r r÷s A B C α γ a a γ γ s Expresiones Complejas Combinación de operadores, paréntesis y reglas de precedencia Notaciones 1. Secuencias de asignaciones 2. Expresiones con varios operadores 3. Arboles de expresión. Asignaciones Crea nombres de relaciones temporales Renombramiento se puede requerir para darle a una relación relations una lista de atributos Ejemplo: R3 := R1 ⋈C R2 se puede escribir R4 := R1 Χ R2 R3 := σC (R4) Expresiones El theta-join R3 := R1 ⋈C R2 se puede escribir R3 := σC (R1 Χ R2) Precedencia de operadores relacionales 1. [σ, π, ρ] (más alta) 2. [Χ, ⋈] 3. ∩ 4. [∪, —] Arboles de expresión Hojas son operandos Nodos internos son operadores aplicados a los hijos Ejemplo: encontrar nombres y dirección de teatros que estén presentando peliculas dirigidas por Bergman Arbol de consulta ∏teatro,dirección σ2=”Bergman” Location Movies Pariscope Arboles de expresiones ρtitle, birthdate σYear = 1996 AND gender ='F' AND StarName=name ⋈ MovieStar StarIn Ejemplo Programación cod-curso aula Dia 7500081M 2026 Martes 7500082M 2075 Martes 7500084M 2027 Lunes 7500085M 2026 Martes Ejemplo de Join reflexivo Usar Programación(cod-curso, aula,día) para encontrar las aulas en las que se ofrecen dos cursos diferentes el mismo día. Estrategia Usando renombramiento, definir una copia de Programación llamada P(cod-curso1,aula, dia) El Join Natural de Programación y P consiste de tuplas (cod-curso, cod-curso1, aula,día) tales que el aula y el dia son iguales Esquemas de resultados Union, intersección, y diferencia: esquemas de ambps operandos debe ser el mismo. El esquema del resultado es el mismo Selección: el esquema del resultado es el mismo que el del operando Projección: el esquema está definido por la lista de atributos Esquemas de resultados Producto: esquema formado con los atributos de ambas relaciones Usar R.A, etc., para distinguir los nombres de dos atributos A Theta-join: igual que el producto Natural join: unión de los atributos de las dos relaciones Renombramiento: el operador indica el esquema Asignación Esta operación (←) ofrece una forma adecuada para expresar consultas complejas Una consulta se escribe como una secuencia • de asignaciones • Seguida por una expresión cuyo valor se muestra como resultado de una consulta Las asignaciones “se asignan” a variables temporales Asignación:ejemplo Escribir r ÷ s como temp1 ← ∏R-S (r ) temp2 ← ∏R-S ((temp1 x s ) – ∏R-S,S (r )) result = temp1 – temp2 El resultado de la expresión a la derecha de ← se asigna a la variable de relación a la izquierda de ← Las variables se pueden usar en las expresiones subsecuentes Ejemplo Fundamentals of Database Systems, Elmasri y Navathe Ejemplo Fundamentals of Database Systems, Elmasri y Navathe Ejemplos de consultas Listar los nombres de los dependientes de las empleadas Recuperar el nombre del administrador (manager) de cada departamento Liste los nombres de los empleados quienes trabajan en todos los proyectos en los cuales ‘Jhon Smith’ trabaja Ejemplos de consultas Listar los nombres de los dependientes de las empleadas EMP_MUJER ← σ sex=‘F’(EMPLOYEE) NOMB_EMP ← π FNAME, LNAME, SSN (EMP_MUJER) EMP_DEPEN ← NOMB-EMP × DEPENDENT DEPEN_REALES ← σ SSN=ESSN (EMP_DEPEN) RESULTADO ← π FNAME, LNAME, DEPENDENT-NAME (DEPEN_REALES) Ejemplos de consultas Recuperar el nombre del administrador (manager) de cada departamento DEPT_ADMINISTRADOR ← DEPARTMENT MGRSSN=SSN EMPLOYEE RESULTADO ← π DNAME, LNAME, FNAME (DEPT_ADMINISTRADOR) Ejemplos Liste los nombres de los empleados quienes trabajan en todos los proyectos en los cuales ‘John Smith’ trabaja SMITH ← σ FNAME=‘John’ AND LNAME=‘Smith’ (EMPLOYEE) SMITH_PRO ← π PNS ( WORKS_ON ESSN=SSN SMITH) SSN_PRO ← π ESSN,PNO ( WORKS_ON) SSNS (SSN) ← SSN_PRO ÷ SMITH_PRO RESULTADO ← π FNAME, LNAME (SSNS * EMPLOYEE)