9 Algebra Relacional - Javeriana Calicic.javerianacali.edu.co/wiki/lib/exe/fetch.php?media=... ·...
Transcript of 9 Algebra Relacional - Javeriana Calicic.javerianacali.edu.co/wiki/lib/exe/fetch.php?media=... ·...
Algebra Relacional
Gestión y Modelación de Datos
Algebra Relacional • Lenguaje de consulta
• Procedimental (énfasis en el “como”)
• Consta de: – Operandos: relaciones – Operadores: aplicados sobre relaciones
• Cerrada: el resultado es también una relación
• Las operaciones se pueden componer
Algebra Relacional
• Operaciones Fundamentales: – Selección, Proyección, Unión, Diferencia,
Producto Cartesiano, Renombramiento
• Operaciones qe se definen en términos de las fundamentales: – Intersección, Join Natural, División,
Asignación
Selección (σ)
• Selecciona las tuplas que satisfacen un predicado (condición)
σcondición (relación)
Ejemplo: σcod_dpto = 1001(departamento)
cod_dpto nom_dpto ced_jefe cod_sucursal 1001 GERENCIA GENERAL 100101 2501
Selección (σ)
R2 = σc (R1)
• R2 contiene todas las tuplas de R1 que satisfacen c
• Los esquemas de R1 y R2 son iguales
σc (r) = { t | t pertenece a r y c(t)}
Selección (σ)
• La condición esta formada por un término, o varios términos unidos con operadores and (∧), or (∨)
• Los términos son de la forma: atributo op atributo
atributo op constante Donde op puede ser: =, ≠, <, >, ≤, ≥
Selección (σ) • Es conmutativa σc1 (σc2 (σc3 (R))) = σc3 (σc2 (σc1 (R)))
• Una secuencia se puede reemplazar por conjunción de condiciones σc1 (σc2 (σc3 (R))) = σc1∧c2∧c3 (R)
Ej. R es: empleado, c1 es: salario > 1000000 c2 es: cod_dpto = 1001 c3 es: ced_jefe = 200101
Proyección (π)
• Permite seleccionar ciertas columnas • Se eliminan las filas duplicadas (las
relaciones son conjuntos)
πatt1, att2, …attk (relación)
Proyección (π)
Ejemplo: πnom_dpto, ced_jefe (departamento)
nom_dpto ced_jefe
GERENCIA GENERAL 100101
GERENCIA FINANCIERA 100301
DIRECCION DE VENTAS 100201
DIRECCION DE MERCADEO
REGIONAL INTERNACIONAL 200101
REGIONAL EEUU 300101
REGIONAL ESPAÑA
REGIONAL ESPAÑA 2
Proyección (π)
R2 = πL (R1)
• L es una lista de atributos: att1, att2,… attk
• R2 contiene todas los atributos att1, att2,… attk de las tuplas de R1
• R2 no tiene tuplas duplicadas
Proyección (π)
• NO es conmutativa
• πL1 (πL2 (R1)) = πL1 (R1) cuando los atributos de L1 estan incluidos en L2
• Proyección extendida: la lista de atributos puede contener expresiones
πA+B C(R1)
Composición de Operaciones
Ejemplo: πnom_dpto, ced_jefe (σcod_dpto = 1001(departamento))
nom_dpto ced_jefe GERENCIA GENERAL 100101
Ejercicio
• Con base en el esquema de la base de datos de empleados, escriba en algebra relacional las siguientes consultas: – Nombres, apellidos y fecha de ingreso de los
empleados del departamento 4001 – Nombre y fecha de ingreso de los
empleados con salario mayor a 1.000.000 – Nombres, apellidos, y valor de la prima de
cada empleado (la prima es medio salario)
Producto Cartesiano (×) • Permite combinar la información de dos
relaciones R1 × R2
Ejemplo: país x región
R3 = R1 × R2 • Cada tupla t1 de R1 se combina
(concatena) con una tupla t2 de R2 • El esquema de R3 se forma con los atributos
de R1 y R2 • Si A es un atributo de R1 y también de R2,
usar R1.A o R2.A
Producto Cartesiano (×) Departamento
DID Nombre Ciudad d1 dpto1 Cali d2 dpto2 Bta d3 dpto3 Cali d4 dpto4
Empleado EID Nombres Apellidos Sueldo Departamento e1 emp1 ap1 10 d1
e2 emp2 ap2 20 d2
e3 emp3 ap3 10
e4 emp4 ap4 50 d2
e5 emp5 ap5 d3
e6 emp6 ap6 30
DID Nombre Ciudad EID Nombres Apellidos Sueldo Departamento d1 dpto1 Cali e1 emp1 ap1 10 d1
d1 dpto1 Cali e2 emp2 ap2 20 d2
d1 dpto1 Cali e6 emp6 ap6 30
d2 dpto2 Bta E1 emp1 ap1 10 d1
d2 dpto2 Bta e6 emp6 ap6 30
d4 dpto4 e6 emp6 ap6 30
…
…
…
Departamento x Empleado
Renombramiento (ρ)
• Permite renombrar atributos y relaciones • Para nombrar el resultado de un
producto cartesiano de una relación consigo misma (R1 x R1) ρs(a1,a2,..,ak)(E) ρs(E) ρ(a1,a2,..,ak)(E)
• Asigna el nombre S a la relación resultante de la expresión E, y los nombres a1, a2, … , ak a sus atributos
Renombramiento (ρ)
Ejemplo: σ empleado.ced_jefe= jefe.cedula (empleado x
ρ jefe (empleado))
σ ced_jefe = cedula_jefe (empleado x ρ jefe(cedula_jefe,nom_jefe,ape_jefe) (π cedula,
nombres, apellidos(empleado))
Unión (u)
• Retorna la unión de los conjuntos de tuplas de dos relaciones
R1 u R2
• R1 y R2 deben ser compatibles: – Tener la misma aridad – Dominios compatibles en las columnas
correspondientes • Las tuplas duplicadas se eliminan
Unión (u)
Ejemplo: πnom_region(region) u πnom_pais(pais)
Diferencia (-)
• Retorna la diferencia de los conjuntos de tuplas de dos relaciones (tuplas que están en la primera relación pero no en la segunda)
R1 - R2
• Las relaciones deben ser compatibles
Diferencia (-)
Ejemplo:
σsalario < 2000000 (empleado) – σsalario < 1000000 (empleado)
Ejercicios
• Escriba una expresión en algebra relacional para las siguientes consultas: – Nombres de los empleados de la sucursal
ubicada en la ciudad de bogotá – Las cedulas de los empleados que NO son jefes
de otros empleados – Los nombres de los empleados que ingresaron a
la compañía en la misma fecha que ‘Pedro’ ‘Perez Restrepo’
– Los nombres de los jefes de departamento y de los jefes de otros empleados
– El salario más alto (el máximo) de los empleados – Un full outer join entre empleado y
departamento
Definición Formal del Algebra Relacional
Definición Formal del Algebra Relacional
Las expresiones fundamentales del Algebra Relacional son: – Una relación de la base de datos – Una relación constante: listar tuplas entre
llaves {(101, Centro), (102,Sur), (103, Este)}
Definición Formal del Algebra Relacional
Precedencia de los operadores (de más alta a más baja): 1. [ σ, π, ρ] 2. [ ×, [x] ] 3. ∩ 4. [ u, - ]
Arboles de Expresión
• Hojas son operandos • Nodos internos son
operadores
πdepartamento.nom_dpto, empleado.nombres, empleado.apellidos (σ departamento.cod_dpto = empleado.cod_dpto (departamento × empleado))
π departamento.nom_dpto,
empleado.nombres, empleado.apellidos
σ departamento.cod_dpto =
empleado.cod_dpto
×
departamento empleado
Otras operaciones
• No añaden potencia al algebra: se pueden definir en términos de las operaciones fundamentales
• Facilitan la escritura de consultas habituales
Otras operaciones
• Intersección (∩) r ∩ s = r – (r – s)
• Join Natural ( [x] ): join con una condición de igualdad entre los atributos que aparecen en ambos esquemas
sucursal [x] país = σsucursal.cod_pais = pais.cod_pais (sucursal x país)
Otras operaciones
• Theta-Join ([x]c): combina la selección (con condición c) y el producto cartesiano
r [x]c s = σc (r x s)
empleado [x]empleado.cod_dpto =
departamento.cod_dpto departamento = σempleado.cod_dpto = departamento.cod_dpto
(empleado x departamento)
Otras operaciones
• División (÷): – Consultas que incluyen la
expresión “para todo” r ÷ s = πr – s(r) – πr – s((πr – s(r) × s) –
πr – s,s (r))
Si r(a1,a2,..am,b1,b2,…,bn) y s(b1,b2,…,bn) πr – s(r) tiene el esquema:
(a1,a2,..am)
Otras operaciones r ÷ s
r ÷ s = { t | t ε πr-s(r) ∧ para todo u ε s ( tu ε r ) }
tu es la concatenación de las tuplas t y u
Otras Operaciones
• Asignación – Crea nombres de relaciones temporales
Ejemplo: R3 R1 x R2
R4 σc (R3)
Ejercicios (Fundamentals of Database Systems, Elmasri y Navathe)
Estudiante Profesor
a) ?
b) ?
c) ?
d) ?