Está en la página 1de 27

5ta Unidad

ALGEBRA RELACIONAL

Brucelee Javier Campos Alvarado | Fundamentos de Bases de Datos | 1/05/2018


Índice. 1
Índice. ............................................................................................................................................... 1
Introducción. ................................................................................................................................... 2
Operaciones Fundamentales del Algebra Relacional. ................................................................... 2
Algebra Relacional Extendida. ........................................................................................................ 6
Conjunto de operaciones en relaciones .................................................................................. 6

Proyección ........................................................................................................................ 8

Selección ........................................................................................................................... 9
Asignación <-- ........................................................................................................................ 10
División ................................................................................................................................... 10
Producto natural |X|............................................................................................................... 12
Outer Join ............................................................................................................................... 13

Left Outer Join ................................................................................................................. 14

Right Outer Join ................................................................................................................ 14

Full Outer Join ................................................................................................................. 15


Combinación de operaciones ..................................................................................................... 15

Renombramiento ................................................................................................................. 16
Modificaciones a la base de datos .......................................................................................... 16
Eliminación .............................................................................................................................. 16
Inserción ................................................................................................................................. 16
Actualización ........................................................................................................................... 16
Operaciones dependientes e independientes........................................................................ 17
Operadores Extendidos .............................................................................................................. 17
Eliminación de duplicidad ...................................................................................................... 17
Operadores de agregación .................................................................................................... 18

Agrupación ......................................................................................................................... 19

Ordenamiento .................................................................................................................... 19
Otros lenguajes de consulta .................................................................................................. 20
Cálculo relacional de tuplas .................................................................................................. 20
Cálculo relacional de dominios ............................................................................................. 23
2
Bibliografía ............................................................................................................................. 26

Introducción.
La parte de manipulación del modelo relacional ha evolucionado considerablemente
desde la publicación de los documentos originales de Codd sobre el tema

Sin embargo, todavía se da el caso de que el componente principal de esa parte de


manipulación es lo que se denomina álgebra relacional, que básicamente es sólo el
conjunto de operadores que toman relaciones como sus operandos y regresan una
relación como su resultado. Explicare muy brevemente tres de estos operadores:
restringir, proyectar y juntar.

Ahora bien, Codd tenía en mente un propósito muy específico, el cual examinaremos
en el siguiente capítulo para definir precisamente esos ocho operadores. Pero usted
debe entender que éstos no son toda la historia; de hecho, podríamos definir cualquier
cantidad de operadores que satisficieran el sencillo requerimiento de "relaciones
dentro, relaciones fuera" y muchos de estos operadores han sido definidos por
diferentes autores.

Operaciones Fundamentales del Algebra Relacional.


El álgebra original constaba de ocho operadores en dos grupos de cuatro cada
uno:

1. El conjunto tradicional de operadores unión, intersección, diferencia y producto


cartesiano (todos ellos modificados de alguna manera, para tomar en cuenta el
hecho de que sus operandos son específicamente relaciones en lugar de
conjuntos arbitrarios);

2. Los operadores relacionales especiales restringir (también conocido como


seleccionar proyectar, juntar y dividir).

 Restringir: Regresa una relación que contiene todas las tupias de una
relación especificada que satisfacen una condición especificada.

 Proyectar: Regresa una relación que contiene todas las tupias o subtuplas
que quedan en» relación especificada después de quitar los atributos
especificados.
 Producto: Regresa una relación que contiene todas las tupias posibles que
3
son una combinación de dos tupias, una de cada una de dos relaciones
especificadas.

 Unión: Regresa una relación que contiene todas las tupias que aparecen
en una o en las dos relaciones especificadas.

 Intersección: Regresa una relación que contiene todas las tupias que
aparecen en las dos relaciones especificadas (en ambas, no en una u otra).

 Diferencia: Regresa una relación que contiene todas las tupias que
aparecen en la primera pero no en la segunda de las dos relaciones
especificadas.

 Juntar: Regresa una relación que contiene todas las tupias posibles que
son una coral nación de dos tupias de cada una de dos relaciones
especificadas, tales que las dos tupias que contribuyen a cualquier
combinación dada tengan un valor común para los atributos comunes de
las dos relaciones (y ese valor común aparece sólo una vez, y no dos, en
la tupia resultante).

 Dividir: Toma dos relaciones unarías y una relación binaria y regresa


una relación que contiene todas las tupias de una relación unaría que
aparecen en la relación binaria y que a la vez coinciden con todas las tupias
de la otra relación unaria.
4
5
6

Algebra Relacional Extendida.


Conjunto de operaciones en relaciones

R S, la unión de R y S es el conjunto de elementos que están en R o S o ambos.


Un elemento solo aparece una sola vez.

R S, el conjunto de elementos que aparecen en ambos R y S

R - S, la diferencia de R y S, el conjunto de elementos que están en R pero no en


S. Es importante resaltar que R - S es diferente a S - R.

R / S, la división de una relación entre otra, debe cumplirse que para toda tupla en
R exista su correspondiente en S.
Restricciones:
7
R y S deben tener esquemas idénticos.

El orden de las columnas debe ser el mismo

Ejemplos:

name address gender birthdate

Carrie Fisher 123 Maple St. F 9/9/99

Mark Hamill 456 Oak Rd. M 8/8/88

name address gender birthdate

Harrison Ford 789 Palm Dr. M 7/7/77

Carrie Fisher 123 Maple St. F 9/9/99

Unión

name address gender birthdate

Harrison Ford 789 Palm Dr. M 7/7/77

Mark Hamill 456 Oak Rd. M 8/8/88

Carrie Fisher 123 Maple St. F 9/9/99

Intersección

name address gender birthdate

Carrie Fisher 123 Maple St. F 9/9/99


Resta 8

name address gender birthdate

Mark Hamill 456 Oak Rd. M 8/8/88

Proyección
Crea una nueva relación a partir de otra, pero incluyendo sólo algunas de las
columnas

A1, A3, A6 (R)

title year length filmType studioName

Star
1977 124 color Fox
Wars

Mighty
1991 104 color Disney
Ducks

Wayne's
1992 95 color Paramount
World

Movie

Ejemplo:

title, year, length(Movie)

title year length

Star Wars 1977 124

Mighty Ducks 1991 104

Wayne's World 1992 95


filmType(Movie) 9

filmType

color

Selección
Crea una nueva relación a partir de otra, pero incluyendo sólo algunas de las tuplas
a partir de un criterio dado.

El criterio se basa en restricciones sobre los atributos de la relación R y no pueden


incluirse otras relaciones en dicho criterio que no estén en R

A3>16 (R) , A3>16 and A3 < 45 (R), nombre='Carlos' and edad=45 (R)

title year length filmType studioName

Star
1977 124 color Fox
Wars

Mighty
1991 104 color Disney
Ducks

Wayne's
1992 95 color Paramount
World

Movie

Ejemplos:

length>=100 (Movie)

title year length filmType studioName

Star
1977 124 color Fox
Wars
Mighty 10
1991 104 color Disney
Ducks

length>=100 and studioName='Fox' (Movie)

title year length filmType studioName

Star
1977 124 color Fox
Wars

title, studioName( length>=100 (Movie))

title studioName

Star Wars Fox

Mighty Ducks Disney

Asignación <--
Almacena temporalmente el resultado de una operación en una relación dada

LOLO <-- title, studioName( length>=100 (Movie))

División
Sean

A B C D

a b c d C D

a b e f c d

b c e f e f

e d c d S

e d e f
a b d e 11

A B

a b

e d

R/S

Ejemplo: Estudiantes que han tomado todos los cursos de "IS"

ID,num ( depto='IS' (estudiante_cursos)) / num( depto='IS'(cursos))

4.7 Producto cartesiano X

Producto cruz o solo producto

R X S, los esquemas de ambas relaciones se mezclan y unen.

Dados

S
R B C D

A B 2 5 6

1 2 4 7 8

3 4 9 10 11
A R.B S.B C D 12

1 2 2 5 6

1 2 4 7 8

1 2 9 10 11

3 4 2 5 6

3 4 4 7 8

3 4 9 10 11

RXS

Producto natural |X|


Es un producto cartesiano donde nos interesan únicamente algunas tuplas que
hacen "match" en algún criterio.

A R.B S.B C D

1 2 2 5 6

1 2 4 7 8

1 2 9 10 11

3 4 2 5 6

3 4 4 7 8

3 4 9 10 11
A B C D 13

1 2 5 6

3 4 7 8

R |X| S
Outer Join
El outer join es una extensión del join para lidiar con información no existente.
Existen 3 tipos, izquierdo, derecho y completo.

employee-
street city employee- branch-
name salary
name name

Coyote Toon Hollywood


Coyote Mesa 1500

Rabbit Tunnel Carrotville


Rabbit Mesa 1300

Death
Smith Revolver Gates Redmond 5300
Valley

Williams Redmond 1500


Williams Seaview Seattle

ft-works
employee

employee- branch-
street city salary
name name

Coyote Toon Hollywood Mesa 1500

Rabbit Tunnel Carrotville Mesa 1300

Williams Seaview Seattle Redmond 1500

|X|
14
Left Outer Join

employee- branch-
street city salary
name name

Coyote Toon Hollywood Mesa 1500

Rabbit Tunnel Carrotville Mesa 1300

Williams Seaview Seattle Redmond 1500

Death
Smith Revolver null null
Valley

Right Outer Join

employee- branch-
street city salary
name name

Coyote Toon Hollywood Mesa 1500

Rabbit Tunnel Carrotville Mesa 1300

Williams Seaview Seattle Redmond 1500

Gates null null Redmond 5300


15
Full Outer Join

employee- branch-
street city salary
name name

Coyote Toon Hollywood Mesa 1500

Rabbit Tunnel Carrotville Mesa 1300

Williams Seaview Seattle Redmond 1500

Death
Smith Revolver null null
Valley

Gates null null Redmond 5300

COMBINACIÓN DE OPERACIONES
Cuáles son los títulos y años de las películas hechas por Fox y que tengan al
menos 100 minutos de duración.

1. Seleccionar aquellas películas que tienen length >=100

length>=100 (Movie)

2. Seleccionar aquellas películas que tienen studioName='Fox'

studioName='Fox' (Movie)

3. Calcular la intersección de (1) y (2)

length>=100 studioName='Fox' (Movie)

4. Proyectar únicamente title y year

title, studioName ( length>=100 studioName='Fox' (Movie) )

Problema:
Dadas las 2 relaciones siguientes, indique un query en algebra relacional para
16
encontrar los nombres de las estrellas que trabajan en películas cuya duración
será mayor o igual que 100.

Movie (title, year, length, filmType, studioName)

Movie_star (title, year, starName)

starName ( length>=100 (Movie |X| Movie_star)

RENOMBRAMIENTO
Renombrar una relación para facilitar la interacción con otras

s (R)

Ej.
t.nombre ( s.nombre='Carlos' and t.curso='IS341' ( s (PROFE)
X t (CURSO) ) )

Renombrar un atributo

Suponiendo R (A, B, C)

R(A,X,C) (R) s(A,X,C) (R) A, B as X, C (R) B as X (R)

= R(A,X,C) = S(A,X,C) = R(A,X,C) = R(X)

Modificaciones a la base de datos


Eliminación
r <-- r - E

depositor <-- depositor - customer-name='Smith'(depositor)

Inserción

r <-- r E

account <-- account {(A-973, "Perryridge", 1200)}

Actualización

r <-- F1,F2,....Fn(r)
account <-- account-number, branch-name, balance*1.05 (account) 17
Si sólo queremos actualizar algunas tuplas:

r <-- F1,F2...Fn ( P(r)) (r- P(r))

Suponiendo que se desea que las cuentas con balance superior a $ 10,000
reciban un aumento del 6% y que todas las demas solo el 5%

account <-- AN, BN, balance*1.06 ( balance > 10000 (account))


AN,BN, balance*1.05 ( balance <= 10000 (account))

Operaciones dependientes e independientes

R S=R-(R-S)

R |X| S = L( c(RXS))

OPERADORES EXTENDIDOS
No son parte del estándar del Algebra Relacional, pero al ser incluidos en los
lenguajes de consulta más populares se han introducido como una extensión.

Eliminación de duplicidad

A B A B

1 2 1 2

3 4 3 4

1 2

1 2

(R)
Operadores de agregación
18

A B

1 2

3 4

1 2

1 2

SUM(B)= 10

AVG(A)= 1.5

MIN(A)=1

MAX(B)=4

COUNT(A)=4

Es importante resaltar que estos operadores nunca devuelven un "valor" sino una
relación conteniendo el valor.

SUM(B)

10

SUM(B) (R)
Agrupación 19

A B
A SUM(B)
1 2
1 6
3 4
3 4
1 2
2 14
2 8

1 2

2 6

A, SUM(B) (R)

Ordenamiento

A4, A5 (R)

A SUM(B)

1 6

2 14

3 4

A ( A, SUM(B)(R))
Otros lenguajes de consulta
20
Cálculo relacional de tuplas

accou branch branch- asset custom custom


custom
nt- branch balan -name city s er- er-
er-city
numb -name ce name street
er Brighto 71000
Brooklyn
n 00 Adams Spring Pittsfield
Downto
A-101 500
wn Downto 90000 Brooks Senator Brooklyn
Brooklyn
wn 00
Perryrid Curry North Rye
A-102 400
ge Horsene 40000
Mianus
ck 0 Stamfor
Brighto Glenn Walnut
A-201 900 d
n North 37000
Rye
Town 00 Hayes Main Harrison
A-215 Mianus 700
Perryrid Horsene 17000 Johnson Alma Palo Alto
Brighto ge ck 00
A-217 750
n
Benningt 30000 customer
Pownal
Redwoo on 0
A-222 700
d
Redwoo 21000
Palo Alto
Round d 00
A-305 350
Hill
Round Horsene 80000
Hill ck 00
account

Branch
21
customer- account- loan- customer- loan-
branch- amou
name number numb name number
name nt
er
Hayes A-102 Adams L-16
RoundHil
L-11 900
Johnson A-101 l Curry L-93

Johnson A-201 Downtow Hayes L-15


L-14 1500
n
Jones A-217 Jackson L-14
Perryridg
L-15 1500
e
Lindsay A-222 Jones L-17

Perryridg
Smith A-215 L-16 1300 Smith L-11
e

Turner A-305 Smith L-23


Downtow
L-17 1000
n
Williams L-17
depositor
L-23 Redwood 2000
Johnson null

L-93 Mianus 500

borrower
null null 1900

loan

Encontrar branch-name, loan-number and amount para los préstamos superiores


a $1,200

{t|t loan ^ t [amount] > 1200 }

Encontrar el loan-number de cada préstamo cuyo monto sea mayor a $1,200

{t| s loan ( t [loan-number] = s [loan-number] ^s [amount] > 1200) }

Encontrar los nombres de los clientes que tienen un préstamo de la sucursal


Perryridge
22
{t| s borrower (t [customer-name] = s [customer-name] ^

u loan ( u[loan-number] = s[loan-number] ^


u[branch-name]="Perryridge" ) ) }

Encontrar todos los clientes que tienen un préstamo, cuenta, o ambos en el banco.

{t| s borrower ( t [customer-name] = s [customer-name] )

v u depositor ( t[customer-name] = u[customer-name] ) }

Encontrar todos los clientes que tienen una cuenta en el banco, pero no tienen
ningún préstamo.

{t| u depositor ( t[customer-name] = u [customer-name] ) ^

¬ s borrower ( t[customer-name] = s[customer-name] ) }

También es posible usar el símbolo "para todo" junto con una implicación P--
>Q donde si P es verdadero, Q también deberá serlo.

Encontrar todos los clientes que tienen una cuenta en todas las sucursales
localizadas en Brooklyn

{t| r customer ( r[customer-name] = t [customer-name]) ^


( u branch ( u[branch-city]= "Brooklyn" -->

s depositor ( t[customer-name] = u [customer-name] ) ^

w account ( w[account-number] = s[account-number] ^


w[branch-name] = u[branch-name] )))) }

Expresiones inseguras

{t|¬(t loan ) }
Cálculo relacional de dominios
23

accou branch branch- asset custom custom


custom
nt- branch balan -name city s er- er-
er-city
numb -name ce name street
er Brighto 71000
Brooklyn
n 00 Adams Spring Pittsfield
Downto
A-101 500
wn Downto 90000 Brooks Senator Brooklyn
Brooklyn
wn 00
Perryrid Curry North Rye
A-102 400
ge Horsene 40000
Mianus
ck 0 Stamfor
Brighto Glenn Walnut
A-201 900 d
n North 37000
Rye
Town 00 Hayes Main Harrison
A-215 Mianus 700
Perryrid Horsene 17000 Johnson Alma Palo Alto
Brighto ge ck 00
A-217 750
n
Benningt 30000 customer
Pownal
Redwoo on 0
A-222 700
d
Redwoo 21000
Palo Alto
Round d 00
A-305 350
Hill
Round Horsene 80000
Hill ck 00
account

Branch
24
customer- account- loan- customer- loan-
branch- amou
name number numb name number
name nt
er
Hayes A-102 Adams L-16
RoundHil
L-11 900
Johnson A-101 l Curry L-93

Johnson A-201 Downtow Hayes L-15


L-14 1500
n
Jones A-217 Jackson L-14
Perryridg
L-15 1500
e
Lindsay A-222 Jones L-17

Perryridg
Smith A-215 L-16 1300 Smith L-11
e

Turner A-305 Smith L-23


Downtow
L-17 1000
n
Williams L-17
depositor
L-23 Redwood 2000
Johnson null

L-93 Mianus 500

borrower
null null 1900

loan

Encontrar branch-name, loan-number and amount para los préstamos superiores


a $1,200

{ <l,b,a> | <l,b,a> loan ^ a > 1200 }

Encontrar el loan-number de cada préstamo cuyo monto sea mayor a $1,200

{<l>| b,a ( <l,b,a> loan ^ a > 1200) }

Encontrar los nombres de los clientes que tienen un préstamo de la sucursal


Perryridge
25
{ <c,a> | l (<c,l> borrower

^ b (<l,b,a> loan ^ b="Perryridge" ) ) }

Encontrar todos los clientes que tienen una cuenta en todas las sucursales
localizadas en Brooklyn.

{ <c> | n ( <c,n> customer ) ^


x,y,z ( <x,y,z> branch ^ y = "Brooklyn" -->

a,b ( <a,x,b> account ^ <c,a> depositor ) ) }

En este caso nuevamente aparece el "para todo" y el símbolo de implicación P--


>Q, indicando que si P es cierto Q también debe serlo.
Bibliografía
26
Bruce Lindsay, John McPherson y Hamid Pirahesh: "A Data Management
Extension Ar chitecture", Proc. 1987 ACM SIGMOD Int. Conf. on Management of
Data, San Francisco, Calif, (mayo, 1987).

Guy M. Lohman et al.: "Extensions to Starburst: Objects, Types, Functions, and


Rules", CACM34, No. 10 (octubre, 1991).

David Maier: "Comments on the Third-Generation Database System Manifesto",


Tech. Report No. CS/E 91-012, Oregon Graduate Center, Beaverton, Ore. (abril,
1991).

(s.f.). Obtenido de https://sistemasumma.com/2011/11/09/algebra-relacional-iv/.

(s.f.). Obtenido de http://fundamentosbditp.blogspot.mx/p/unidad-v.htm.

http://ict.udlap.mx/people/carlos/is341/bases04.html. (s.f.).

También podría gustarte