Documentos de Académico
Documentos de Profesional
Documentos de Cultura
y Diseño de
Base de Datos
Álgebra Relacional
Área Ingeniería de Software
Departamento de Ciencias de la Computación
Facultad de Economía y Administración
Universidad Nacional del Comahue
2. “Algebra Relacional ”
2.a Introducción
2.b Operaciones
2.c Definición formal del Algebra Relacional
2.d Otras Operaciones
2.e Algunas Propiedades
2.f Join Externo y Unión Externa
2.g Funciones Agregadas
2.h Modificación de una BD
2.i Vistas
Teoría y Diseño de BD 2
MSE Adriana E. Martín
2.a Introducción Algebra Relacional
Algebra Relacional
…es un Lenguaje de Consulta Procedimental.
…consta de un Conjunto de Operaciones que toman como entrada
una o dos relaciones y producen como salida una nueva
relación.
…dos relaciones sobre el mismo Esquema de Relación pueden ser
consideradas conjuntos sobre el mismo universo.
entonces …
Teoría y Diseño de BD 3
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
Sean r y s dos relaciones sobre el Esquema de Relación R:
r ∪ s = { t | t ∈ r o t ∈ s }
r ∩ s = { t | t ∈ r y t ∈ s }
r \ s = r – s = { t | t ∈ r y t ∉ s }
complemento de la relación r sobre R con Dominio Finito
dom( R ):
comp( r ) = dom( R ) – r
Nota: Estas operaciones son binarias, es decir operan sobre
pares de relaciones ( con el mismo esquema de relación).
Teoría y Diseño de BD 4
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
r s
A1 A2 A1 A2
Cipolletti Vicario Cipolletti Zahn
Allen Castañet Cipolletti Vicario
Roca Scholz Roca Martín
Teoría y Diseño de BD 5
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
r dom( R )
A1 A2 A1 A2
Cipolletti Vicario Cipolletti Vicario
Allen Castañet Allen Castañet
Roca Scholz Roca Scholz
Cipolletti Zahn
Qué pasa si
comp( r ) Roca Matín
algún
A1 A2
dom( Ai )
Allen Giró
Cipolletti Zahn
es infinito?
Cipolletti Scholz
Roca Matín El Bolsón Markovina
Allen Giró Bariloche Donini
Cipolletti Scholz Bariloche Becker
El Bolsón Markovina Cipolletti Ferreyra
Bariloche Donini Allen Sede
Bariloche Becker
Cipolletti Ferreyra
... debemos incorporar el concepto de
Allen Sede
Dominio Activo !!!
Teoría y Diseño de BD 6
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
… primero recordemos que
Un Esquema de Relación R es un conjunto finito de nombres de atributos
{ A1, A2, .. , An }
En correspondencia con cada nombre de atributo Ai existe un conjunto Di ,
1 ≤ i ≥ n, llamado el Dominio de Ai , representado por dom(Ai ).
Los DOMINIOS son
conjuntos arbitrarios,
no vacíos, finitos o
infinitos.
Sea D = D1 ∪ D2 ∪ .. ∪ Dn , una relación r sobre el esquema de
relación R es un conjunto finito de mapeos { t1, t2, .. , tp } de R a D
con la restricción de que cada mapeo t ∈ r y
t( Ai ) debe estar en Di , 1 ≤ i ≥ n.
Los Mapeos se denominan TUPLAS
Teoría y Diseño de BD 7
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
Sea dom( R ) el conjunto de todas las tuplas sobre
los atributos de R y sus respectivos dominios
definimos el Complemento de una relación r( R ) como
comp( r ) = dom( R ) – r
... ahora bien, si consideramos la posibilidad de que
algún atributo A en R tenga un dominio infinito, el
comp( r ) también será infinito y no será una relación.
... para estos casos, necesitamos definir un versión modificada de la
operación de complemento que siempre
devuelva cómo resultado una relación.
Teoría y Diseño de BD 8
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
Si r es una relación sobre el Esquema de Relación
R = ( A1, A2, .. , An ) y Di = dom( Ai ), 1 ≤ i ≥ n
el Dominio Activo Ai con respecto a r es el conjunto
adom( Ai , r ) = { d ∈ Di | ∃ t ∈ r con t( Ai ) = d }
Observar que el
Dominio Activo de B
con respecto a r dom( R )
no contiene a b3
A B
a1 b1 adom( R )
r a1 b2 A B
A B a1 b3 a1 b1
a1 b1 a2 b1 a1 b2
a1 b2 a2 b2 a2 b1
a2 b1 a2 b3 a2 b2
Teoría y Diseño de BD 9
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
Sea adom( R, r ) el conjunto de todas las tuplas sobre los atributos
de R y sus Dominios Activos con respecto a r,
el Complemento Activo de r es
acomp( r ) = adom( R, r ) – r
r adom( R )
A B A B
acomp( r )
a1 b1 a1 b1
A B
a1 b2 a1 b2
a2 b2
a2 b1 a2 b1
a2 b2
Observar que acomp( r ) es siempre una relación
Teoría y Diseño de BD 10
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
p.e. Suponer una compañía que tiene un programa de capacitación que
consiste en tener a un grupo de empleados trabajando dos semanas
en los departamentos de la compañía.
... la información sobre quién en el programa ha completado la
capacitación en qué departamento, se puede mantener en la
relación
completó( NroEmpleado, EntrenadoEnDpto ).
... la relación acomp( completó ), provee quién no ha completado la
capacitación en qué departamento, sobre cada empleado en el
programa de capacitación y cada departamento
que es mencionado en completó.
Teoría y Diseño de BD 11
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
El PRODUCTO CARTESIANO, permite combinar información de
dos relaciones cualesquiera.
Sean r1 y r2 dos relaciones cualesquiera,
el Producto Cartesiano se denota como:
r1 × r2
…dadas las r1( R1 ) y r2( R2 ), r1 × r2 es una relación r
cuyo esquema de relación R es la concatenación de R1 y R2.
es decir, la relación r contiene todas las tuplas t que surgen de
concatenar cada una de las tuplas t1 en r1 con cada una de las
tuplas t2 en r2 tal que en cada tupla t se cumple que:
t[ R1 ] = t1[ R1 ] y t[ R2 ] = t2[ R2 ].
Teoría y Diseño de BD 12
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
p.e. dadas las relaciones cuenta y tieneCta:
tieneCta
cuenta
DniCli NroCta
NroCta SaldoCta
14234848 C2000/2
C2000/2 1000
n1 tuplas 9024931 C3000/1 n2 tuplas
C3000/1 5000
14234848 C3000/1
el Producto Cartesiano cuenta × tieneCta tiene n1 ∗ n2 tuplas
cuenta.NroCta cuenta.SaldoCta tieneCta.DniCli tieneCta.NroCta
C2000/2 1000 14234848 C2000/2
C2000/2 1000 9024931 C3000/1
C2000/2 1000 14234848 C3000/1
C3000/1 5000 14234848 C2000/2
C3000/1 5000 9024931 C3000/1
C3000/1 5000 14234848 C3000/1
Teoría y Diseño de BD 13
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
El OPERADOR de SELECCIÓN es un operador unario, es decir
opera sobre una relación.
…cuando se aplica a una relación r genera otra relación compuesta por
un subconjunto de tuplas de r que satisfacen cierto predicado, es
decir tuplas con cierto valor en un atributo determinado.
Sea r una relación sobre el Esquema de Relación R,
A un Atributo en R y,
a un elemento del dom( A ),
la “ Selección A igual a a en r ” se define como:
σ A = a ( r ) = { t ∈ r | t ( A ) = a }
σ = letra griega sigma minúscula
Teoría y Diseño de BD 14
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
p.e. Dada la relación cuenta, obtener las cuentas de la sucursal Cipolletti:
cuenta
SucursalCta NroCta SaldoCta
Cipolletti C2000/2 1000
Allen C5342/4 2074
Roca C1000/1 900
Roca C3000/1 5000
Cipolletti C3024/5 525
σ SucursalCta = “Cipolletti” ( cuenta )
cuentas de Cipolletti
SucursalCta NroCta SaldoCta
Cipolletti C2000/2 1000
Cipolletti C3024/5 525
Teoría y Diseño de BD 15
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
El OPERADOR de PROYECCIÓN es un operador unario.
…cuando se aplica a una relación r genera otra relación compuesta por
un subconjunto de Atributos columnas de r.
Sea r una relación sobre el Esquema de Relación R y,
X un subconjunto de Atributos en R,
la “ Proyección de r en X ” se define como:
π X ( r ) = { t( X ) | t ∈ r }
…en π X ( r ) se eliminan de la relación r las columnas R X y
luego se borran las tuplas repetidas.
π = letra griega pi
Teoría y Diseño de BD 16
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
p.e. Dada la relación cuenta, obtener las cuentas y sus respectivos saldos.
cuenta
SucursalCta NroCta SaldoCta
Cipolletti C2000/2 1000
Allen C5342/4 2074
Roca C1000/1 900
Roca C3000/1 5000
Cipolletti C3024/5 525
π NroCta, SaldoCta ( cuenta )
NroCta SaldoCta
C2000/2 1000
C5342/4 2074
C1000/1 900
C3000/1 5000
Expresiones
… a diferencia de las relaciones de una BD, las expresiones del álgebra
relacional no tienen un nombre que se pueda utilizar para referirse
a ellas.
Sea E una expresión del Algebra Relacional,
la expresión:
ρ X ( E )
devuelve el resultado de la expresión E bajo el nombre X.
ρ = letra griega ro minúscula
Teoría y Diseño de BD 18
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
Relaciones
… ya que una relación r se considera por sí misma una expresión
( trivial ) del álgebra relacional, se puede aplicar la operación
renombramiento a una relación r para obtener la misma relación
con un nombre nuevo.
Sea r una relación,
la expresión:
ρ x ( r )
devuelve la relación r bajo el nombre x.
Teoría y Diseño de BD 19
MSE Adriana E. Martín
2.b Operaciones Algebra Relacional
Atributos
Sea E una expresión con aridad n,
la expresión:
ρ X( A1, A2, .. , An ) ( E )
devuelve el resultado de la expresión E bajo el nombre X y con los
atributos renombrados a A1, A2, .. An.
…esta operación no es estrictamente necesaria, dado que es posible
utilizar una notación posicional para los Atributos: $1 es el primer
atributo, $2 es el segundo atributo, .. , $n es el enésimo atributo.
…sin embargo, la notación posicional es no declarativa y por lo tanto no
resulta conveniente para las personas, ya que es más fácil de recordar
un nombre de atributo que un número de posición.
Teoría y Diseño de BD 20
MSE Adriana E. Martín
2.c Definición formal del Álgebra Relacional Algebra Relacional
Una expresión básica en el Álgebra Relacional consta de:
Una relación en la BD, o bien
Una relación constante.
Una expresión general en el Álgebra Relacional se construye a partir
de subexpresiones.
Sean E1 y E2 expresiones del Álgebra Relacional, las siguientes son
expresiones del Álgebra Relacional:
E1 ∪ E2
E1 – E2 ( también denotado por E1\ E2 )
E1 × E2
σ P( E1 ) ( donde P es un predicado con atributos de E1 )
π S( E1 ) ( donde S es un subconjunto de atributos de E1 )
ρ X( E1 ) ( donde X es el nuevo nombre de la expresión E1 )
Teoría y Diseño de BD 21
MSE Adriana E. Martín
2.c Definición formal del Álgebra Relacional Algebra Relacional
…repasando gráficamente estas expresiones del Álgebra Relacional:
a x a x
b y a y
c b x
b y
c x
c y
Teoría y Diseño de BD 22
MSE Adriana E. Martín
2.c Definición formal del Álgebra Relacional Algebra Relacional
Repasando estas expresiones del Álgebra Relacional:
Selección Proyección
Renombrar
E1 X
ρ X( E1 )
σ P( E1 ) π S( E1 )
Teoría y Diseño de BD 23
MSE Adriana E. Martín
2.d Otras Operaciones Algebra Relacional
En principio, las OPERACIONES FUNDAMENTALES citadas en la
definición formal del Álgebra Relacional son suficientes para
expresar cualquier consulta del Álgebra Relacional.
… sin embargo, limitarse al uso de estas Operaciones
Fundamentales puede llevar a que algunas consultas triviales
resulten de expresiones complejas.
…por ello se definen otras Operaciones que si bien no agregan potencia
al Álgebra Relacional simplifican algunas consultas triviales:
E1 ∩ E2
E1 ÷ E2 ( División )
E1 E2 ( Join Natural )
E1 θ E2 ( θ Join )
E1 ← E2 ( Asignación )
E1 E2 ( SemiJoin )
Teoría y Diseño de BD 24
MSE Adriana E. Martín
2.d Otras Operaciones Algebra Relacional
El OPERADOR DIVISIÓN original de Codd 1972
resulta adecuado para las consultas que incluyen la expresión
“para todos”.
Sean r y s relaciones sobre los Esquemas de Relación R y S
respectivamente,
( X, Y ) e ( Y ) los Atributos de los Esquemas R y S
respectivamente,
y S ⊆ R, es decir que todos los atributos del
Esquema S están también en el Esquema R,
la “ División de r por s ” se denota por:
r ÷ s
Teoría y Diseño de BD 25
MSE Adriana E. Martín
2.d Otras Operaciones Algebra Relacional
…ahora bien
Una tupla t pertenece a la relación r ÷ s si cumple con las
siguientes dos condiciones:
1. t está en π R – S ( r )
2. para cada tupla ts de s hay una tupla tr de r que cumple las
siguientes dos condiciones:
a) tr[ S ] = ts[ S ]
b) tr [ R – S ] = t
… es decir la expresión r ÷ s es una relación con Atributo ( X )
y consiste de todas las tuplas t( X ) tal que una tupla tr( X, Y )
está en r para todas las tuplas ts( Y ) que están en s.
Teoría y Diseño de BD 26
MSE Adriana E. Martín
2.d Otras Operaciones Algebra Relacional
p.e. Dadas las relaciones r sobre el Esquema R = ( X, Y ) donde
X es el nombre del cliente e Y es la sucursal dónde el cliente
tiene abierta una cuenta y s sobre el Esquema S = ( Y )
donde Y es una sucursal: Y X Y
Cipolletti Zahn Cipolletti
Roca Martín Roca
Giró Allen
…se desea hallar todos los clientes en r que Scholz Cipolletti
tienen abierta una cuenta en todas las Vicario Cipolletti
sucursales en s. Markovina El Bolsón
Becker Bariloche
…el resultado de la expresión r ÷ s Scholz Roca
es la relación:
X
Scholz
Teoría y Diseño de BD 27
MSE Adriana E. Martín
2.d Otras Operaciones Algebra Relacional
El OPERADOR JOIN NATURAL es un operador binario para combinar
relaciones.
una definición informal:
Sean r y s relaciones sobre los Esquemas de Relación R y S
respectivamente,
el “ Join Natural de r y s ” denotado por
r s
es una relación sobre el esquema R ∪ S, compuesta por un conjunto de
tuplas t, tales que existen tuplas tr en r y ts en s con
tr = t( R ) y ts = t( S )
…es decir que cada tupla t en r s es una combinación de tuplas en r y
en s que coinciden en los Atributos de R ∩ S .
…si R y S no tienen atributos en común, entonces el
Join Natural equivale al Producto Cartesiano: r s = r × s.
Teoría y Diseño de BD 28
MSE Adriana E. Martín
2.d Otras Operaciones
p.e. Dadas las relaciones tiene sobre el Esquema de Relación Tiene
y préstamo sobre el Esquema de Relación Préstamo:
tiene
préstamo
DniCli NroPres
MonSuc NroPres MontoPres
9024931 P17
Roca P17 35000
9024931 P23
Cipolletti P23 15000
13537470 P15
Cipolletti P15 20000
4022253 P17
…se desea hallar los dni de los clientes que tienen concedido un
préstamo en el banco, el número y monto de dicho préstamo.
…esta consulta se puede expresar utilizando el Join Natural:
π DniCli, NroPres, MontoPres ( tiene préstamo )
Teoría y Diseño de BD 29
MSE Adriana E. Martín
2.d Otras Operaciones
… entonces la relación resultante de la expresión
π DniCli, NroPres, MontoPres ( tiene préstamo ) es:
Teoría y Diseño de BD 30
MSE Adriana E. Martín
2.d Otras Operaciones
entonces, una definición formal:
Sean r y s relaciones sobre los Esquemas de Relación R y S respectivamente,
el “ Join Natural de r y s ” denotado por
r s
es una relación sobre el Esquema de Relación R ∪ S,
definida formalmente de la siguiente manera:
si R ∩ S = Ø entonces r s = r × s
si R ∩ S ≠ Ø entonces cada tupla en r s es una combinación de
tuplas en r y en s que coinciden en los Atributos R ∩ S.
Teoría y Diseño de BD 31
MSE Adriana E. Martín
2.d Otras Operaciones
El OPERADOR θ JOIN es un operador binario que permite
combinar relaciones con ciertas restricciones.
El operador θ puede ser cualquier operador relacional
del conjunto { < , > , ≤ , ≥ , = , ≠ }
Sean r y s relaciones sobre los Esquemas de Relación R y S
respectivamente, y sea θ un predicado de los Atributos del
Esquema de Relación R ∪ S
la operación θ Join se define como:
θ = letra griega zeta
Teoría y Diseño de BD 32
MSE Adriana E. Martín
2.d Otras Operaciones
p.e. dadas las siguientes relaciones cambridgeFirst y
cambridgeAdvance:
cambridgeFirst cambridgeAdvance
MuestreoFirst Notas MuestreoAdvance Notas
F08 59 A23 61
F41 85 A11 87
F17 78 A02 68
F33 71 A35 70
…se desea hallar el Join mayorque de la relación cambridgeFirst sobre
notas con la relación cambridgeAdvance sobre notas, mostrando los
muestreos respectivos.
…dado que θ es “ > ” esta consulta se puede expresar utilizando el θ Join:
cambridgeFirst cambridgeFirst.Notas > cambridgeAdvance.Notas cambridgeAdvance
θ
Teoría y Diseño de BD 33
MSE Adriana E. Martín
2.d Otras Operaciones
… entonces la relación resultante de la expresión
cambridgeFirst cambridgeFirst.Notas > cambridgeAdvance.Notas cambridgeAdvance
Teoría y Diseño de BD 34
MSE Adriana E. Martín
2.d Otras Operaciones Algebra Relacional
El OPERADOR de ASIGNACIÓN representado por el símbolo ← ,
permite asignar el resultado de una expresión relacional a
una relación temporal.
El formato de la Operación de Asignación es:
< Relación temporal > ← < Expresión Relacional >
p.e. Dada la expresión:
π NomCli ( σ presCli.NroPres = préstamo.NroPres (presCli × préstamo) )
puede reescribirse como:
temp1 ← presCli × préstamo
temp2 ← σ presCli.NroPres = préstamo.NroPres ( temp1 )
resultado ← π NomCli ( temp2 )
Teoría y Diseño de BD 35
MSE Adriana E. Martín
2.d Otras Operaciones Algebra Relacional
El OPERADOR SEMIJOIN es un operador binario para combinar
relaciones.
una definición informal:
Sean r y s relaciones sobre los Esquemas de Relación R y S
respectivamente,
el “ SemiJoin de r y s ” denotado por
r s
es una relación compuesta por un conjunto de tuplas t, que resultan de
la proyección sobre los atributos de r del join natural de r y s;
es decir r s = π R( r s )
Teoría y Diseño de BD 36
MSE Adriana E. Martín
2.d Otras Operaciones
p.e. Dadas las relaciones tiene sobre el Esquema de Relación Tiene
y cliente sobre el Esquema de Relación Cliente:
cliente tiene
DniCli NomCli DirCli CiudadCli DniCli NroPres
9024931 xxx xxx xxx 9024931 P17
14234848 : : : 9024931 P23
13537470
13537470 P15
4022253 : : :
11222015 4022253 P17
…se desea hallar el dni y nombre de los clientes que tienen
concedido un préstamo en el banco.
…esta consulta se puede expresar utilizando el SemiJoin:
π DniCli, NomCli ( cliente préstamo )
Teoría y Diseño de BD 37
MSE Adriana E. Martín
2.d Otras Operaciones
… entonces la relación resultante de la expresión
π DniCli, NomCli, DirCli, CiudadCli ( cliente préstamo ) es:
DniCli NomCli
9024931 xxx
Observar el caso
13537470 :
en el cual se exprese la
4022253
consulta usando
Join Natural
x1 y1 y1 x1 ←
x1 y2 y2
x2 y1
x3 y3
Teoría y Diseño de BD 39
MSE Adriana E. Martín
2.d Otras Operaciones Algebra Relacional
…repasando gráficamente estas otras operaciones:
Join → R ∩ S ≠ ∅ Join → R ∩ S = ∅
a1 b1 b1 c1 a1 b1 c1 d1
a2 b1 b2 c2 a2 b2 c2 d2
a3 b2 b3 c3
a1 b1 c1 d1
a1 b1 c1 a1 b1 c2 d2
E1 E2 a2 b1 c1 a2 b2 c1 d1
a3 b2 c2 a2 b2 c2 d2
E1 E2 = E1 × E2
Teoría y Diseño de BD 40
MSE Adriana E. Martín
2.e Algunas Propiedades Algebra Relacional
…el Join tiene varias Propiedades, mencionaremos algunas de ellas
El Join se puede usar para simular la Selección
sobre una relación r( R ) Propiedad 1, 2 y 3
Propiedad 1. Sea s( A ) una relación con k tuplas t1, t2, .. , tk donde
ti( A ) = ai y ai ∈ dom( A ), 1 ≤ i ≥ k , entonces:
Propiedad 2. Sean A y B dos atributos y s( AB ) la relación con una única
tupla t tal que t( A ) = a y t( B ) = b, entonces:
r s = σ A=a ∧ B=b ( r )
Propiedad 3. Dadas las relaciones q , r y s:
( q r ) s = q ( r s )
Teoría y Diseño de BD 41
MSE Adriana E. Martín
2.e Algunas Propiedades Algebra Relacional
…otras Propiedades Importantes:
Considerando las relaciones r( R ) y s( S )
Propiedad 1. Dado A ⊂ X ⊆ R :
π X ( σ A θ a( r ) s ) = π X ( σ A θ a( r s ) )
Propiedad 2. Dado A ∈ R :
σ A θ a ( σ B θ b ( r ) ) = σ B θ b ( σ A θ a ( r ) ) = σ A θ a ∧ B θ b ( r )
Propiedad 3. Dado { A, B } ⊆ R ∩ S :
Teoría y Diseño de BD 42
MSE Adriana E. Martín
2.f Join Externo y Unión Externa Algebra Relacional
…el JOIN EXTERNO es una extensión de la operación de JOIN
NATURAL para conservar en el resultado todas las tuplas que
están en ambas relaciones, tengan o no atributos coincidentes.
Dadas las relaciones empleado y trabajaTiempoCompleto:
empleado trabajaTiempoCompleto
LegajoEmp Calle Ciudad LegajoEmp NomSuc Sueldo
C001 xxx xxx C001 xxx $$$
C002 : : C002 : :
C003 A001
A001 : : A002 : :
A002 R001 : :
...si deseamos obtener los empleados que trabajan tiempo
completo, se puede usar la operación de Join Natural:
empleado trabajaTiempoCompleto
Teoría y Diseño de BD 43
MSE Adriana E. Martín
2.f Join Externo y Unión Externa Algebra Relacional
…el resultado de esta expresión es la relación:
Observar
que las tuplas que LegajoEmp Calle Ciudad NomSuc Sueldo
describen a los C001 xxx xxx xxx $$$
empleados cuyos C002 : : : :
legajos son C003 y
A001
R001 no están
A002 : : : :
presentes en la
relación.
...para que estás tuplas se incorporen a la relación se puede
usar el JOIN EXTERNO el cual ofrece tres variantes:
E1 E2 JOIN EXTERNO IZQUIERDO
E1 E2 JOIN EXTERNO DERECHO
E1 E2 JOIN EXTERNO COMPLETO
Teoría y Diseño de BD 44
MSE Adriana E. Martín
2.f Join Externo y Unión Externa Algebra Relacional
...si se utiliza la operación de Join Externo Izquierdo:
empleado trabajaTiempoCompleto
…el resultado de esta expresión es la relación:
...si se utiliza la operación de Join Externo Derecho:
empleado trabajaTiempoCompleto
…el resultado de esta expresión es la relación:
...si se utiliza la operación de Join Externo Completo:
empleado trabajaTiempoCompleto
…el resultado de esta expresión es la relación:
...si se utiliza la operación de Unión Externa:
empleadoAdministrativo ∪ empleadoOperativo
Teoría y Diseño de BD 48
MSE Adriana E. Martín
2.f Join Externo y Unión Externa Algebra Relacional
…el resultado de esta expresión es la relación:
empleadoAdministrativo ∪ empleadoOperativo
cuyo legajo es R001
no tiene valores nulos
porque dicha tupla
existe en las dos
relaciones.
Teoría y Diseño de BD 49
MSE Adriana E. Martín
2.g Funciones Agregadas Algebra Relacional
…estas funciones toman una colección de valores de la BD y
devuelven como resultado un único valor.
...las más comunes son: sum, avg, min, max y count.
...todas estas funciones amplían el poder expresivo del álgebra
relacional y se pueden aplicar a una colección de tuplas.
Dada la relación cuenta:
cuenta
NroCta SaldoCta NomSuc FechaApertura
xxx $$$ xxx ddmmaa
: : : :
: : : :
Teoría y Diseño de BD 50
MSE Adriana E. Martín
2.g Funciones Agregadas Algebra Relacional
( a ) La función sum toma un conjunto de valores de la BD
y devuelve la suma de todos los valores del conjunto.
p.e. La consulta sumSaldo ( cuenta )
devuelve como resultado una relación con un único atributo que contiene una
sola fila con un valor correspondiente a la suma de todos los saldos de las
cuentas del banco.
( b ) La función avg toma un conjunto de valores de la BD
y devuelve la media de todos los valores del conjunto.
p.e. La consulta avgSaldo ( cuenta )
devuelve como resultado una relación con un único atributo que contiene una
sola fila con un valor correspondiente a la media de todos los saldos de las
cuentas del banco.
Teoría y Diseño de BD 51
MSE Adriana E. Martín
2.g Funciones Agregadas Algebra Relacional
( c ) La función min toma un conjunto de valores de la BD
y devuelve el mínimo de todos los valores del conjunto.
p.e. La consulta minSaldo ( cuenta )
devuelve como resultado una relación con un único atributo que contiene una
sola fila con un valor correspondiente al mínimo de todos los saldos de las
cuentas del banco.
( d ) La función max toma un conjunto de valores de la BD
y devuelve el máximo de todos los valores del conjunto.
p.e. La consulta maxSaldo ( cuenta )
devuelve como resultado una relación con un único atributo que contiene una
sola fila con un valor correspondiente al máximo de todos los saldos de las
cuentas del banco.
Teoría y Diseño de BD 52
MSE Adriana E. Martín
2.g Funciones Agregadas Algebra Relacional
( e ) La función count toma un conjunto de valores de la BD
y devuelve el número de elementos ( cantidad de valores ) que
aparecen en el conjunto.
p.e. La consulta countNroCta ( cuenta )
devuelve como resultado una relación con un único atributo que contiene una
sola fila con un valor correspondiente al número de cuentas ( cantidad de
cuentas ) del banco.
...cuando se requiere que los valores repetidos se consideren sólo
una vez antes de aplicar la función agregada, se le adjunta al
nombre de la misma la cadena “distintic”.
p.e. La consulta countdistinticNomSuc ( cuenta )
devuelve como resultado una relación con un único atributo que contiene una
sola fila con un valor correspondiente al número de sucursales ( cantidad de
sucursales ) que aparecen en la relación cuenta.
Teoría y Diseño de BD 53
MSE Adriana E. Martín
2.g Funciones Agregadas Algebra Relacional
...cuando se requiere aplicar una función agregada no sólo a un
conjunto de tuplas sino a varios grupos siendo cada grupo un
conjunto de tuplas, se utiliza una operación denominada
agrupación.
( f ) El operador de agrupación ℑ permite definir una operación
función agregada **.
p.e. La consulta NomSuc ℑ sumSaldo ( cuenta )
devuelve como resultado una relación con dos atributo que contiene tantas filas
como sucursales existan en la relación cuenta y cada fila se compone del
nombre de la sucursal y de la suma de todos los saldos de las cuentas de esa
sucursal.
**
ℑ = pronunciado F gótica
no existe una única notación para especificar funciones agregadas
Teoría y Diseño de BD 54
MSE Adriana E. Martín
2.h Modificación de una BD Algebra Relacional
…las modificaciones de las BDs se expresan utilizando la
operación de asignación.
( a ) Una Eliminación consiste en eliminar tuplas de una relación; la
notación es:
r ← r − E
donde r es una relación y E es una consulta del Álgebra Relacional
p.e. Si se desea borrar todas la cuentas del cliente Scholz:
cuenta ← cuenta − σ NomCli = “Scholz” ( cuenta )
Teoría y Diseño de BD 55
MSE Adriana E. Martín
2.h Modificación de una BD Algebra Relacional
( b ) Una Inserción consiste en agregar tuplas a una relación; la
notación es:
r ← r ∪ E
donde r es una relación y E es una consulta del Álgebra Relacional
p.e. Si se desea agregar al cliente Martinez, cuyo DNI es 9234751 y
que vive en Rivadavia 160 de la ciudad de Cipolletti:
cliente ← cliente ∪ { ( 9234751, “Martinez”, “Rivadavia 160”,
“Cipolletti” ) }
Teoría y Diseño de BD 56
MSE Adriana E. Martín
2.h Modificación de una BD Algebra Relacional
( c ) Una Modificación consiste en modificar tuplas a una relación;
la notación es:
δ A ←E ( r )
donde r es una relación y E es una consulta del Álgebra Relacional
…también se puede utilizar el operador de proyección generalizada:
cuenta ←π A1, A2, .. , An ( r )
p.e. Si se desea incrementar el saldo de las cuentas en un 5%:
δ SaldoCta ← SaldoCta * 1.05 ( cuenta )
cuenta ← π NroCta, SaldoCta ← SaldoCta * 1.05, NomSuc, FechaApertura ( cuenta )
δ = letra griega delta
Teoría y Diseño de BD 57
MSE Adriana E. Martín
2.i Vistas Algebra Relacional
…en todos los ejemplos de consultas que usamos hasta ahora
hemos operado en el Nivel del Modelo Lógico.
…es decir operamos sobre un conjunto de relaciones reales guardadas en
la BD.
... pero
No es deseable que todos los usuarios de la BD puedan ver la totalidad
del Modelo Lógico.
p.e. Un empleado del área de
personal necesita ver una
Normalmente en todo dominio es necesario: relación con los datos personales
de todos empleados, pero no sus
sueldos.
Ocultar datos a ciertos usuarios
Crear un conjunto personalizado de relaciones que se adapte a cada
usuario o grupo de usuarios concreto p.e. Un empleado del área de
publicidad necesita ver una
relación con los clientes que
tienen tarjeta/s de crédito y
Teoría y Diseño de BD cuenta/s en el banco.58
MSE Adriana E. Martín
2.i Vistas Algebra Relacional
… entonces
Las relaciones que no forman parte del Modelo Lógico pero se
hacen visibles a los usuarios como relaciones virtuales
se denominan
VISTAS
y constituyen el
Nivel de Modelo de Vistas o Externo
… ahora bien
¿Cómo se crea una VISTA?
Para definir una VISTA se utiliza la instrucción:
create view nombredevista as < expresióndeconsulta >
Cualquier expresión
legal de consulta del
Algebra Relacional
Teoría y Diseño de BD 59
MSE Adriana E. Martín
2.i Vistas Algebra Relacional
p.e. Definir una vista para los clientes que tienen tarjeta/s en el banco
mostrando el nombre del cliente y el nombre y el límite de compra
de la tarjeta :
create view todoslosclientes as
π NomCli, NomTarjeta, LímiteCompra( tieneTarjeta tarjeta )
... y así, una vez que se ha definido la vista, se puede utilizar el
nombredevista para hacer referencia a la
relación virtual que genera la vista.
p.e. Obtener los nombres de los clientes que tienen tarjeta “Visa”
con límite de compra superior a $1000:
π NomCli( σ NomTarjeta = “Visa” ∧ LímiteCompra > 1000( todoslosclientes ) )
Teoría y Diseño de BD 60
MSE Adriana E. Martín
2.i Vistas Algebra Relacional
¿Cuál es la diferencia entre la operación de asignación y la vista?
todoslosclientes ← π NomCli, NomTarjeta, LímiteCompra( tarjetaCli tarjeta )
... la operación de asignación evaluará la expresión una vez y la relación resultante se
compone de un conjunto de tuplas que no cambiarán cuando se actualicen las
relaciones involucradas.
...en cambio, el conjunto de tuplas que forman la vista se actualizarán cada vez que se
actualicen las relaciones involucradas en la expresión.
... normalmente los SGBD guardan las definiciones de vistas en vez de las relaciones
de vistas (resultados de las evaluaciones de las expresiones).
... algunos SGBD guardan las relaciones de vistas, pero se aseguran que si las
relaciones reales utilizadas en las definiciones cambian,
las vistas se mantengan actualizadas.
Ventajas Desventajas
• Uso frecuente • Costo de Almacenamiento
• Tiempo de Respuesta
Vistas Materializadas • Sobrecarga por Actualización
Teoría y Diseño de BD 61
MSE Adriana E. Martín
2.i Vistas Algebra Relacional
¡Cuidado con las actualizaciones ( inserciones, eliminaciones y
modificaciones ) usando Vistas!
p.e. Suponer la vista
create view préstamosucursal as π NomSuc, NroPres( préstamo )
... como se permite que un nombredevista aparezca en cualquier parte en la
que está permitido un nombrederelación entonces se puede escribir la
expresión:
préstamosucursal préstamosucursal ∪ { ( “Cipolletti”, P43 ) }
... esta inserción debe representarse en la relación préstamo, pero se necesita un
valor para el atributo MontoPres.
... dos enfoques posibles para tratar con esta situación:
Rechazar la inserción y emitir un mensaje de error
Insertar una tupla ( “Cipolletti”, P43 , null )
Teoría y Diseño de BD 62
MSE Adriana E. Martín
2.i Vistas Algebra Relacional
p.e. Suponer la vista
create view informaciónpréstamo as
π DniCli, MontoPres( tiene préstamo )
... y luego se escribe la expresión:
informaciónpréstamo préstamosucursal ∪ { ( 13470988, 7000 ) }
... esta inserción produce:
( 13470988, null ) en tiene y
( null , null , 7000 ) en préstamo
... sin embargo esta actualización no tiene efecto en la relación de vista, ya que
las comparaciones que implican valores nulos se definen como falso y entonces
el join natural entre tiene y préstamo no incluirá a esta nueva tupla.
Normalmente, los SGBD no permiten actualizaciones sobre relaciones de vistas
( excepto limitadas excepciones).
Teoría y Diseño de BD 63
MSE Adriana E. Martín
2.i Vistas Algebra Relacional
Dijimos que se permite que un nombredevista aparezca en cualquier
parte en la que está permitido un nombrederelación.
... por lo tanto se pueden utilizar vistas en una expresión que define otra vista:
create view clientepotencial as
π NomCli( σ NomTarjeta = “Visa” ∧ LímiteCompra > 1000( todoslosclientes ) )
Se dice que una relacióndevista v1 depende directamente
de una relacióndevista v2
si
v2 se utiliza en la expresión que define a v1.
clientepotencial
Grafo de Dependencia
todoslosclientes
de Vistas
tieneTarjeta tarjeta
Teoría y Diseño de BD 64
MSE Adriana E. Martín
2.i Vistas Algebra Relacional
... entonces la expresión:
σ NomCli = “Vicario”( clientepotencial )
... produce el siguiente procedimiento de expansión de vistas:
σ NomCli = “Vicario”( π NomCli
( σ NomTarjeta = “Visa” ∧ LímiteCompra > 1000( todoslosclientes ) ) )
... y
σ NomCli = “Vicario”( π NomCli
( σ NomTarjeta = “Visa” ∧ LímiteCompra > 1000
( π NomCli, NomTarjeta, LímiteCompra( tarjetaCli tarjeta ) ) ) )
Teoría y Diseño de BD 65
MSE Adriana E. Martín
Resumen
… hasta aquí hemos tratado:
INTRODUCCIÓN
OPERACIONES BÁSICAS
DEFINICIÓN FORMAL del ÁLGEBRA
RELACIONAL
ÁLGEBRA RELACIONAL
OTRAS OPERACIONES
Modelo ALGUNAS PROPIEDADES
Relacional JOIN EXTERNO Y UNIÓN EXTERNA
FUNCIONES AGREGADAS
MODIFICACIÓN de BD
VISTAS
Teoría y Diseño de BD 66