Académique Documents
Professionnel Documents
Culture Documents
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 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. 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 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
Proyeccin
Crea una nueva relacin a partir de otra, pero incluyendo slo algunas de las columnas A1,A3,A6 (R)
year length filmType 1977 124 color 1991 104 color 1992 95 color Movie
Ejemplo:
title,year,length(Movie)
filmType color
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 length filmType 1977 124 color 1991 104 color 1992 95 color Movie studioName Fox Disney Paramount
Ejemplos:
length>=100
(Movie) year length 1977 124 1991 104 (Movie) filmType color studioName Fox filmType color color studioName Fox Disney
year 1977
length 124
title,studioName(
length>=100
Asignacin <-Almacena temporalmente el resultado de un operacin en un relacin dada LOLO <-title,studioName( length>=100
(Movie))
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))
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
Outer Join
El outer join es una extensin del join para lidear con informacin no existente. Exiten 3 tipos, izquierdo, derecho y completo. employeestreet city name Coyote Toon Hollywood Rabbit Tunnel Carrotville Death Smith Revolver Valley employee- branchsalary name name Coyote Mesa 1500 Rabbit Mesa 1300 Gates Redmond 5300 Williams Redmond 1500
Williams
ft-works
Toon Hollywood Tunnel Carrotville Seaview Seattle Death Revolver Valley null null
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)
(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
Renombramiento
Renombrar una relacin para facilitar la interaccin con otras s (R) Ej.
t.nombre
(PROFE) X
(CURSO) ) )
(R) = S(A,X,C)
s(A,X,C)
A, B as X, C
(R)
B as X
(R)
= R(A,X,C)
= R(X)
Insercin
r <-- r E {(A-973, "Perryridge", 1200)}
Actualizacin
r <-F1,F2,....Fn(r) account-number, branch-name, balance*1.05
account <--
(account)
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
( (
AN,BN, balance*1.05
R |X| S =
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.
Eliminacin de duplicidad
A 1 3 1 1 B 2 4 2 2
(R) A 1 3 B 2 4
Operadores de agregacin
A 1 B 2
3 1 1
4 2 2
Es importante resaltar que estos operadores nunca devuelven un "valor" sino una relacin conteniendo el valor. SUM(B) 10
SUM(B)
(R)
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)
Ordenamiento
A4,A5
(R) A 1 2 3 SUM(B) 6 14 4 A(
A, SUM(B)(R))
branch asset -city s 7100 000 9000 000 4000 00 3700 000 1700 000 3000 00 2100 000 8000 000
Brookly n Brookly n Horsen Mianus eck North Rye Town Perryri Horsen dge eck Bennin Pownal gton Redwo Palo od Alto Round Horsen Hill eck branch
depositor
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
Tambin es posible usar el smbolo "para todo" junto con una implicacin P-->Q donde si P es verdadero, Q tambin deber serlo.
Encontrar todos los clientes que tienen una cuenta en todas las sucursales localizadas en Brooklyn
{t|
r (
Downt own Perryri dge Brighto n Mianus Brighto n Redwo od Round Hill account
n n Downt Brookly own n Horsen Mianus eck North Rye Town Perryri Horsen dge eck Bennin Pownal gton Redwo Palo od Alto Round Horsen Hill eck branch
000 9000 000 4000 00 3700 000 1700 000 3000 00 2100 000 8000 000
d Brookly Brooks Senator n Curry North Rye Stamfor Glenn Walnut d Harriso Hayes Main n Johnso Palo Alma n Alto customer
customer- accountname number Hayes A-102 Johnson A-101 Johnson A-201 Jones A-217 Lindsay A-222 Smith A-215 Turner A-305 depositor
loanbranch amou numb -name nt er RoundH L-11 900 ill Downto L-14 1500 wn Perryrid L-15 1500 ge Perryrid L-16 1300 ge Downto L-17 1000 wn Redwoo L-23 2000 d L-93 Mianus 500 null null 1900 loan
customername Adams Curry Hayes Jackson Jones Smith Smith Williams Johnson
loannumber 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> |
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 smbolo de implicacin P-->Q, indicando que si P es cierto Q tambin debe serlo.