9 Alg Relacional
9 Alg Relacional
9 Alg Relacional
Algebra Relacional
Lenguaje de consulta Procedimental (nfasis en el como) Consta de: Operandos: relaciones Operadores: aplicados sobre relaciones Cerrada: el resultado es tambin una relacin Las operaciones se pueden componer
Algebra Relacional
Operaciones Fundamentales:
Seleccin, Proyeccin, Unin, Diferencia, Producto Cartesiano, Renombramiento
Seleccin ()
Selecciona las tuplas que satisfacen un predicado (condicin) condicin (relacin) Ejemplo:
cod_dpto = 1001(departamento)
cod_dpto nom_dpto ced_jefe cod_sucursal 1001 GERENCIA GENERAL 100101 2501
Seleccin ()
R2 = c (R1) R2 contiene todas las tuplas de R1 que satisfacen c
Seleccin ()
La condicin esta formada por un trmino, o varios trminos unidos con operadores and (), or () Los trminos son de la forma: atributo op atributo atributo op constante Donde op puede ser: =, , <, >, ,
Seleccin ()
Es conmutativa c1 (c2 (c3 (R))) = c3 (c2 (c1 (R)))
Una secuencia se puede reemplazar por conjuncin de condiciones
Ej.
R es: empleado, c1 es: salario > 1000000 c2 es: cod_dpto = 1001 c3 es: ced_jefe = 200101
Proyeccin ()
Permite seleccionar ciertas columnas Se eliminan las filas duplicadas (las relaciones son conjuntos)
Proyeccin ()
Ejemplo: nom_dpto, ced_jefe (departamento)
nom_dpto GERENCIA GENERAL GERENCIA FINANCIERA DIRECCION DE VENTAS DIRECCION DE MERCADEO REGIONAL INTERNACIONAL REGIONAL EEUU REGIONAL ESPAA REGIONAL ESPAA 2 200101 300101 ced_jefe 100101 100301 100201
Proyeccin ()
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
Proyeccin ()
NO es conmutativa L1 (L2 (R1)) = L1 (R1) cuando los atributos de L1 estan incluidos en L2
A+B C(R1)
Composicin de Operaciones
Ejemplo: nom_dpto, ced_jefe (cod_dpto = 1001(departamento))
nom_dpto GERENCIA GENERAL ced_jefe 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 informacin de dos relaciones R1 R2 Ejemplo: pas x regin 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 tambin de R2, usar R1.A o R2.A
Producto Cartesiano ()
Departamento
DID d1 d2 d3 d4 Nombre dpto1 dpto2 dpto3 dpto4 Ciudad Cali Bta Cali EID e1 e2 e3 e4 e5 e6 Nombres emp1 emp2 emp3 emp4 emp5 emp6
Empleado
Apellidos ap1 ap2 ap3 ap4 ap5 ap6 30 Sueldo 10 20 10 50 d2 d3 Departamento d1 d2
Departamento x Empleado
DID d1 d1 Nombre dpto1 dpto1 Ciudad Cali Cali EID e1 e2 Nombres emp1 emp2 Apellidos ap1 ap2 Sueldo 10 20 Departamento d1 d2
d1 dpto1 dpto2 dpto2 Cali Bta Bta e6 E1 e6 emp6 emp1 emp6 ap6 ap1 ap6 30 10 30 d1
d2 d2
d4
dpto4
e6
emp6
ap6
30
Renombramiento ()
Permite renombrar atributos y relaciones Para nombrar el resultado de un producto cartesiano de una relacin consigo misma (R1 x R1) s(a1,a2,..,ak)(E) s(E) (a1,a2,..,ak)(E) Asigna el nombre S a la relacin resultante de la expresin E, y los nombres a1, a2, , ak a sus atributos
Renombramiento ()
Ejemplo: empleado.ced_jefe= jefe.cedula (empleado x jefe (empleado))
Unin (u)
Retorna la unin 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
Unin (u)
Ejemplo: nom_region(region) u nom_pais(pais)
Diferencia (-)
Retorna la diferencia de los conjuntos de tuplas de dos relaciones (tuplas que estn en la primera relacin pero no en la segunda) R1 - R2 Las relaciones deben ser compatibles
Diferencia (-)
Ejemplo: salario < 2000000 (empleado) salario < 1000000 (empleado)
Ejercicios
Escriba una expresin 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 compaa en la misma fecha que Pedro Perez Restrepo Los nombres de los jefes de departamento y de los jefes de otros empleados El salario ms alto (el mximo) de los empleados Un full outer join entre empleado y departamento
Arboles de Expresin
Hojas son operandos Nodos internos son operadores departamento.nom_dpto,
empleado.nombres, empleado.apellidos ( departamento.cod_dpto = empleado.cod_dpto
departamento.nom_dpto, empleado.nombres, empleado.apellidos
departamento.cod_dpto = empleado.cod_dpto
(departamento empleado))
departamento
empleado
Otras operaciones
No aaden potencia al algebra: se pueden definir en trminos de las operaciones fundamentales Facilitan la escritura de consultas habituales
Otras operaciones
Interseccin () r s = r (r s) Join Natural ( [x] ): join con una condicin de igualdad entre los atributos que aparecen en ambos esquemas sucursal [x] pas = sucursal.cod_pais = pais.cod_pais (sucursal x pas)
Otras operaciones
Theta-Join ([x]c): combina la seleccin (con condicin 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
Divisin ():
Consultas que incluyen la expresin 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
rs
Otras Operaciones
Asignacin
Crea nombres de relaciones temporales Ejemplo: R3 R1 x R2 R4 c (R3)
Ejercicios
Estudiante
Profesor
c) ?
d) ? b) ? a) ?