Documente Academic
Documente Profesional
Documente Cultură
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.
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
gender M F
address 789 Palm Dr. 456 Oak Rd. 123 Maple St.
gender M M F
gender F
birthdate 9/9/99
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)
Ejemplo:
title,year,length(Movie)
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
(Movie) title Star Wars Mighty Ducks year 1977 1991 length 124 104 filmType color color studioName Fox Disney
title,studioName(
length>=100
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
depto='IS'
(estudiante_cursos)) /
num(
depto='IS'(cursos))
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 de 10
22-11-2011 15:34
4 Algebra relacional
http://ict.udlap.mx/people/carlos/is341/bases04.html
(Movie)
(Movie)
(Movie)
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
4.11 Renombramiento
Renombrar una relacin para facilitar la interaccin con otras s (R) Ej.
t.nombre
(PROFE) X
(CURSO) ) )
(R)
= R(A,X,C)
A, B as X, C
(R)
B as X
(R)
= R(A,X,C)
= R(X)
5 de 10
22-11-2011 15:34
4 Algebra relacional
http://ict.udlap.mx/people/carlos/is341/bases04.html
4.12.2 Insercin
r <-- r E {(A-973, "Perryridge", 1200)}
4.12.3 Actualizacin
r <-F1,F2,....Fn(r) account-number, branch-name, balance*1.05
account <--
(account)
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
AN,BN, balance*1.05
(account)) (account))
R |X| S =
(R) A 1 3 B 2 4
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
branch-name branch-city assets Brighton Brooklyn 7100000 Downtown Brooklyn 9000000 Mianus Horseneck 400000 North Town Rye 3700000 Perryridge Horseneck 1700000 Pownal Bennington 300000
7 de 10
22-11-2011 15:34
4 Algebra relacional
http://ict.udlap.mx/people/carlos/is341/bases04.html
A-222 A-305
700 350
2100000 8000000
Johnson
Alma customer
Palo Alto
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 }
{t|
Encontrar los nombres de los clientes que tienen un prstamos de la sucursal Perryridge
{t|
s u
Encontrar todos los clientes que tienen un prstamo, cuenta, o ambos en el banco.
{t| v
s u
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
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
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
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 }
{<l>|
b,a ( <l,b,a>
Encontrar los nombres de los clientes que tienen un prstamo de la sucursal Perryridge
{ <c,a> | ^
l (<c,l> b (<l,b,a>
Encontrar todos los clientes que tienen una cuenta en todas las sucursales localizadas en Brooklyn.
{ <c> |
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