9 Algebra Relacional - Javeriana Calicic.javerianacali.edu.co/wiki/lib/exe/fetch.php?media=... ·...

Post on 16-Apr-2020

41 views 0 download

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) ?