Sunteți pe pagina 1din 10

4 Algebra relacional

http://ict.udlap.mx/people/carlos/is341/bases04.html

4. Algebra relacional
4.1 Introduccin
En las secciones anteriores se han estudiado las maneras de modelar informacin de manera "relacional" empleando el concepto de entidades que se relacionan entre s. Esta seccin presenta la manera de hacer consultas a una base de datos empleando algunos conceptos matemticos aplicados a un esquema relacional. Los lenguajes que se analizan ms adelante se derivan precisamente del algebra relacional. El lgebra relacional consiste de algunas simples pero poderosas maneras de construir nuevas relaciones a partir de otras. Si pensamos que las relaciones iniciales son los datos almacenados entonces las nuevas relaciones se pueden ver como respuestas a algunas consultas deseadas.

4.2 Conjunto de operaciones en relaciones


R R S, la unin de R y S es el conjunto de elementos que estn en R o S o ambos. Un elemento solo aparece una sola vez. 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 estan en R pero no en S. Es importante resaltar que R - S es diferente a S - R. R / S, la divisin de una relacin entre otra, debe cumplirse que para toda tupla en R exista su correspondiente en S. Restricciones: 1. R y S deben tener esquemas idnticos. 2. El orden de las columnas debe ser el mismo Ejemplos: name Carrie Fisher Mark Hamill address 123 Maple St. 456 Oak Rd. gender F M birthdate 9/9/99 8/8/88

name Harrison Ford Carrie Fisher Unin name Harrison Ford Mark Hamill Carrie Fisher Interseccin name Carrie Fisher Resta name Mark Hamill

address 789 Palm Dr. 123 Maple St.

gender M F

birthdate 7/7/77 9/9/99

address 789 Palm Dr. 456 Oak Rd. 123 Maple St.

gender M M F

birthdate 7/7/77 8/8/88 9/9/99

address 123 Maple St.

gender F

birthdate 9/9/99

address 456 Oak Rd.

gender M

birthdate 8/8/88

4.3 Proyeccin
Crea una nueva relacin a partir de otra, pero incluyendo slo algunas de las columnas

1 de 10

22-11-2011 15:34

4 Algebra relacional

http://ict.udlap.mx/people/carlos/is341/bases04.html

A1,A3,A6

(R)

title Star Wars Mighty Ducks Wayne's World

year 1977 1991 1992

length 124 104 95 Movie

filmType color color color

studioName Fox Disney Paramount

Ejemplo:
title,year,length(Movie)

title Star Wars Mighty Ducks Wayne's World


filmType(Movie)

year 1977 1991 1992

length 124 104 95

filmType color

4.4 Seleccin
Crea una nueva relacin a partir de otra, pero incluyendo slo algunas de las tuplas a partir de un criterio dado. El criterio se basa en restricciones sobre los atributos de la relacin R y no pueden incluirse otras relaciones en dicho criterio que no esten en R A3>16 (R) , A3>16 and A3 < 45 (R), nombre='Carlos' and edad=45 (R) title Star Wars Mighty Ducks Wayne's World year 1977 1991 1992 length 124 104 95 Movie Ejemplos:
length>=100

filmType color color color

studioName Fox Disney Paramount

(Movie) title Star Wars Mighty Ducks year 1977 1991 length 124 104 filmType color color studioName Fox Disney

length>=100 and studioName='Fox'

(Movie) year 1977 length 124 filmType color studioName Fox

title Star Wars

title,studioName(

length>=100

(Movie)) title Star Wars Mighty Ducks studioName Fox Disney

2 de 10

22-11-2011 15:34

4 Algebra relacional

http://ict.udlap.mx/people/carlos/is341/bases04.html

4.5 Asignacin <-Almacena temporalmente el resultado de un operacin en un relacin dada LOLO <-title,studioName( length>=100

(Movie))

4.6 Divisin
Sean A a a b e e a B b b c d d b C c e e c e d R D d f f d f e

C c e

D d f S

A a e

B b 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 A 1 3 B 2 4 R A 1 1 1 3 3 3 R.B 2 2 2 4 4 4 S.B 2 4 9 2 4 9 RXS B 2 4 9 C 5 7 10 S C 5 7 10 5 7 10 D 6 8 11 6 8 11 D 6 8 11

4.8 Producto natural |X|


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

3 de 10

22-11-2011 15:34

4 Algebra relacional

http://ict.udlap.mx/people/carlos/is341/bases04.html

A 1 1 1 3 3 3

R.B 2 2 2 4 4 4

S.B 2 4 9 2 4 9

C 5 7 10 5 7 10

D 6 8 11 6 8 11

A 1 3

B 2 4

C 5 7 R |X| S

D 6 8

4.9 Outer Join


El outer join es una extensin del join para lidear con informacin no existente. Exiten 3 tipos, izquierdo, derecho y completo. employee-namestreet city Coyote Toon Hollywood Rabbit Tunnel Carrotville Death Smith Revolver Valley Williams Seaview Seattle employee employee-name Coyote Rabbit Williams street Toon Tunnel Seaview city Hollywood Carrotville Seattle |X| employee-namebranch-namesalary Coyote Mesa 1500 Rabbit Mesa 1300 Gates Redmond 5300 Williams Redmond 1500 ft-works branch-name Mesa Mesa Redmond salary 1500 1300 1500

4.9.1 Left Outer Join


employee-name Coyote Rabbit Williams Smith street Toon Tunnel Seaview Revolver city Hollywood Carrotville Seattle Death Valley branch-name Mesa Mesa Redmond null salary 1500 1300 1500 null

4.9.2 Right Outer Join


employee-name Coyote Rabbit Williams Gates street Toon Tunnel Seaview null city Hollywood Carrotville Seattle null branch-name Mesa Mesa Redmond Redmond salary 1500 1300 1500 5300

4.9.3 Full Outer Join

4 de 10

22-11-2011 15:34

4 Algebra relacional

http://ict.udlap.mx/people/carlos/is341/bases04.html

employee-name Coyote Rabbit Williams Smith Gates

street Toon Tunnel Seaview Revolver null

city Hollywood Carrotville Seattle Death Valley null

branch-name Mesa Mesa Redmond null Redmond

salary 1500 1300 1500 null 5300

4.10 Combinacin de operaciones


Cules son los ttulos y aos de las pelculas hechas por Fox y que tengan al menos 100 minutos de duracin. 1. Seleccionar aquellas pelculas que tienen length >=100
length>=100

(Movie)

2. Seleccionar aquellas pelculas que tienen studioName='Fox'


studioName='Fox'

(Movie)

3. Calcular la interseccin 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 encontrar los nombres de las estrellas que trabajan en pelculas cuya duracin sera mayor o igual que 100. Movie (title,year,length,filmType,studioName) Movie_star(title,year,starName)

starName

length>=100

(Movie |X| Movie_star)

4.11 Renombramiento
Renombrar una relacin para facilitar la interaccin con otras s (R) Ej.
t.nombre

s.nombre='carlos' and t.curso='IS341'

(PROFE) X

(CURSO) ) )

Renombrar un atributo Suponiendo R (A,B,C)


R(A,X,C)

(R)

= R(A,X,C)

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

A, B as X, C

(R)

B as X

(R)

= R(A,X,C)

= R(X)

4.12 Modificaciones a la base de datos


4.12.1 Eliminacin

5 de 10

22-11-2011 15:34

4 Algebra relacional

http://ict.udlap.mx/people/carlos/is341/bases04.html

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

4.12.2 Insercin
r <-- r E {(A-973, "Perryridge", 1200)}

account <-- account

4.12.3 Actualizacin
r <-F1,F2,....Fn(r) account-number, branch-name, balance*1.05

account <--

(account)

Si slo 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

AN,BN, balance*1.05

balance <= 10000

(account)) (account))

4.13 Operaciones dependientes e independientes


R S=R-(R-S) L( c(RXS))

R |X| S =

4.14 Operadores Extendidos


No son parte del estndar del Algebra Relacional, pero al ser includos en los lenguajes de consulta ms populares se han introducido como una extensin.

4.14.1 Eliminacin de duplicidad


A 1 3 1 1 B 2 4 2 2

(R) A 1 3 B 2 4

4.14.2 Operadores de agregacin


A 1 3 1 B 2 4 2

6 de 10

22-11-2011 15:34

4 Algebra relacional

http://ict.udlap.mx/people/carlos/is341/bases04.html

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 relacin conteniendo el valor. SUM(B) 10
SUM(B)

(R)

4.14.3 Agrupacin
A 1 3 1 2 1 2 B 2 4 2 8 2 6

A 1 3 2

SUM(B) 6 4 14
A, SUM(B)

(R)

4.14.4 Ordenamiento
A4,A5

(R) A 1 2 3 SUM(B) 6 14 4 A ( A, SUM(B)(R))

4.15 Otros lenguajes de consulta


4.15.1 Clculo relacional de tuplas
accountbranch-name balance number A-101 Downtown 500 A-102 Perryridge 400 A-201 Brighton 900 A-215 Mianus 700 A-217 Brighton 750 customercustomer-city street Spring Pittsfield Senator Brooklyn North Rye Walnut Stamford Main Harrison

branch-name branch-city assets Brighton Brooklyn 7100000 Downtown Brooklyn 9000000 Mianus Horseneck 400000 North Town Rye 3700000 Perryridge Horseneck 1700000 Pownal Bennington 300000

customer-name Adams Brooks Curry Glenn Hayes

7 de 10

22-11-2011 15:34

4 Algebra relacional

http://ict.udlap.mx/people/carlos/is341/bases04.html

A-222 A-305

Redwood Round Hill account

700 350

Redwood Round Hill

Palo Alto Horseneck branch

2100000 8000000

Johnson

Alma customer

Palo Alto

customer-name Hayes Johnson Johnson Jones Lindsay Smith Turner

accountnumber A-102 A-101 A-201 A-217 A-222 A-215 A-305

loan-numberbranch-nameamount L-11 RoundHill 900 L-14 Downtown 1500 L-15 Perryridge 1500 L-16 Perryridge 1300 L-17 Downtown 1000 L-23 Redwood 2000 L-93 Mianus 500 null null 1900 loan

depositor

customer-name Adams Curry Hayes Jackson Jones Smith Smith Williams Johnson

loan-number L-16 L-93 L-15 L-14 L-17 L-11 L-23 L-17 null

borrower

Encontrar branch-name, loan-number and amount para los prstamos superiores a $1,200 {t|t loan ^ t [amount] > 1200 }

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

{t|

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

Encontrar los nombres de los clientes que tienen un prstamos de la sucursal Perryridge

{t|

s u

borrower (t [customer-name] = s [customer-name] ^ loan ( u[loan-number] = s[loan-number] ^ u[branch-name]="Perryridge" ) ) }

Encontrar todos los clientes que tienen un prstamo, cuenta, o ambos en el banco.

{t| v

s u

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

Encontrar todos los clientes que tienen una cuenta en el banco pero no tienen ningn prstamo.

{t|

u s

depositor ( t[customer-name] = u [customer-name] ) ^ borrower ( t[customer-name] = s[customer-name] ) } junto con una implicacin P-->Q donde si P es verdadero, Q tambin

Tambin es posible usar el smbolo "para todo" 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] ) ^

8 de 10

22-11-2011 15:34

4 Algebra relacional

http://ict.udlap.mx/people/carlos/is341/bases04.html

w Expresiones inseguras {t|(t loan ) }

account ( w[account-number] = s[account-number] ^ w[branch-name] = u[branch-name] )))) }

4.15.2 Clculo relacional de dominios


accountbranch-name balance number A-101 Downtown 500 A-102 Perryridge 400 A-201 Brighton 900 A-215 Mianus 700 A-217 Brighton 750 A-222 Redwood 700 A-305 Round Hill 350 account customercustomer-city street Spring Pittsfield Senator Brooklyn North Rye Walnut Stamford Main Harrison Alma Palo Alto customer

branch-name branch-city assets Brighton Brooklyn 7100000 Downtown Brooklyn 9000000 Mianus Horseneck 400000 North Town Rye 3700000 Perryridge Horseneck 1700000 Pownal Bennington 300000 Redwood Palo Alto 2100000 Round Hill Horseneck 8000000 branch

customer-name Adams Brooks Curry Glenn Hayes Johnson

customer-name Hayes Johnson Johnson Jones Lindsay Smith Turner

accountnumber A-102 A-101 A-201 A-217 A-222 A-215 A-305

loan-numberbranch-nameamount L-11 RoundHill 900 L-14 Downtown 1500 L-15 Perryridge 1500 L-16 Perryridge 1300 L-17 Downtown 1000 L-23 Redwood 2000 L-93 Mianus 500 null null 1900 loan

depositor

customer-name Adams Curry Hayes Jackson Jones Smith Smith Williams Johnson

loan-number L-16 L-93 L-15 L-14 L-17 L-11 L-23 L-17 null

borrower

Encontrar branch-name, loan-number and amount para los prstamos superiores a $1,200 { <l,b,a> | <l,b,a> loan ^ a > 1200 }

Encontrar el loan-number de cada prstamo 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 prstamo de la sucursal Perryridge

{ <c,a> | ^

l (<c,l> b (<l,b,a>

borrower 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" -->

9 de 10

22-11-2011 15:34

4 Algebra relacional

http://ict.udlap.mx/people/carlos/is341/bases04.html

a,b ( <a,x,b>

account ^ <c,a>

depositor ) ) }

En este caso nuevamente aparece el "para todo" y el smbolo de implicacin P-->Q, indicando que si P es cierto Q tambin debe serlo.

10 de 10

22-11-2011 15:34

S-ar putea să vă placă și