Sei sulla pagina 1di 18

Algebra Relacional

Índice

1. Introducción……………………………………………………………….………….

2. Objetivos……………….………………………………………………….………….

3. Conjunto de operaciones en relaciones………………………………..…………

4. Proyección……………………………….…………………………………………..

5. Selección…………………………………………………………………………….

6. Asignación <-- …………………………………………………….………………..

7. División………………………………………………………………………………

8. Producto Cartesiano X…………………………………………………………….

9. Producto Natural…………………………………………………….……………..

10. Outer Join………………………………………………………..…..……………..

11. Combinación de operaciones………………………………….….….……………

12. Renombramiento…………………………………………………………………….

13. Modificaciones a la Base de Datos……………………………………………….

14. Operaciones dependientes e independientes…………………………………...

15. Operadores Extendidos……………………………………………………………

16. Otros lenguajes de Consultas……………………………………………………

17. Resumen…………………………………………………………………………
Introducción

En las secciones anteriores se han estudiado las maneras de modelar información de manera
"relacional" empleando el concepto de entidades que se relacionan entre sí.

Esta sección presenta la manera de hacer consultas a una base de datos empleando algunos
conceptos matemáticos aplicados a un esquema relacional. Los lenguajes que se analizan más
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.

Esta unidad didáctica está dedicada al estudio del modelo de datos relacional y del álgebra
relacional.

El concepto de modelo de datos se ha presentado en otra unidad didáctica. En ésta se


profundiza en un modelo de datos concreto: el modelo relacional, que actualmente tiene una
gran relevancia. Sus conceptos fundamentales están bien asentados y, además, los sistemas
de gestión de bases de datos relaciona- les son los más extendidos en su utilización práctica.
Por estos motivos pensamos que es importante conocerlo.

El estudio del modelo relacional sirve, además, de base para los contenidos de otra unidad,
dedicada al lenguaje SQL. Este lenguaje permite definir y manipular bases de datos
relacionales. Los fundamentos del modelo relacional resultan imprescindibles para conseguir
un buen dominio del SQL.

En esta unidad se analizan también las operaciones del álgebra relacional, que sirven para
hacer consultas a una base de datos. Es preciso conocer estas operaciones porque nos
permiten saber qué servicios de consulta debe proporcionar un lenguaje relacional. Otra
aportación del álgebra relacional es que facilita la comprensión de algunas de las
construcciones del lenguaje SQL que se estudiarán en otra unidad didáctica de este curso.
Además, constituye la base para el estudio del tratamiento de las consultas que efectúan los
SGBD internamente (especialmente en lo que respecta a la optimización de consultas). Este
último tema queda fuera del ámbito del presente curso, pero es relevante para estudios más
avanzados sobre bases de datos.
Objetivos

En los materiales didácticos de esta unidad encontraremos las herramientas


indispensables para alcanzar los siguientes objetivos:

1. Conocer los fundamentos del algebra relacional.


2. Conocer las operaciones del álgebra relacional.
3. Saber utilizar las operaciones del álgebra relacional para consultar una base de
datos.
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 estan 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:

1. R y S deben tener esquemas idénticos.


2. 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

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 Wars 1977 124 color Fox
Mighty Ducks 1991 104 color Disney
Wayne's World 1992 95 color Paramount

Movie

Ejemplo:

title,year,length(Movie)

title year length


Star Wars 1977 124
Mighty Ducks 1991 104
Wayne's World 1992 95

filmType(Movie)

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 esten en R
 A3>16 (R) , A3>16 and A3 < 45 (R), nombre='Carlos' and
edad=45 (R)

title year length filmType studioName


Star Wars 1977 124 color Fox
Mighty Ducks 1991 104 color Disney
Wayne's World 1992 95 color Paramount
Movie

Ejemplos:

length>=100 (Movie)

title year length filmType studioName


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

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

title year length filmType studioName


Star Wars 1977 124 color Fox

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

title studioName
Star Wars Fox
Mighty Ducks Disney

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

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

División
Sean

A B C D
a b c d
a b e f C D
b c e f c d
e d c d e f
e d e f
a b d e S

R
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))

Producto cartesiano X
Producto cruz o solo producto

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

Dados

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

RXS

Producto natural |X|


Es un producto cartesiano donde nos interesan únicamente algunas tuplas que hacen
"match" en algun 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
1 2 5 6
3 4 7 8

R |X| S

Outer Join
El outer join es una extensión del join para lidear con información no existente. Exiten
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-name street city branch-name salary


Coyote Toon Hollywood Mesa 1500
Rabbit Tunnel Carrotville Mesa 1300
Williams Seaview Seattle Redmond 1500

|X|

Left Outer Join

employee-name street city branch-name salary


Coyote Toon Hollywood Mesa 1500
Rabbit Tunnel Carrotville Mesa 1300
Williams Seaview Seattle Redmond 1500
Smith Revolver Death Valley null null

Right Outer Join

employee-name street city branch-name salary


Coyote Toon Hollywood Mesa 1500
Rabbit Tunnel Carrotville Mesa 1300
Williams Seaview Seattle Redmond 1500
Gates null null Redmond 5300

Full Outer Join

employee-name street city branch-name salary


Coyote Toon Hollywood Mesa 1500
Rabbit Tunnel Carrotville Mesa 1300
Williams Seaview Seattle Redmond 1500
Smith Revolver Death Valley null null
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


encontrar los nombres de las estrellas que trabajan en películas cuya duración sera
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)

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 incluídos en los
lenguajes de consulta más populares se han introducido como una extensión.

Eliminación de duplicidad

A B
1 2
3 4
1 2
1 2

(R)

A B
1 2
3 4

Operadores de agregación

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

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

A SUM(B)
1 6
3 4
2 14

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

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 Brighto Brookly 71000 name street
er n n 00 Pittsfiel
Adams Spring
Downto Downto Brookly 90000 d
A-101 500
wn wn n 00 Brookly
Brooks Senator
Perryrid Horsene 40000 n
A-102 400 Mianus
ge ck 0 Curry North Rye
Brighto North 37000 Stamfor
A-201 900 Rye Glenn Walnut
n Town 00 d
A-215 Mianus 700 Perryrid Horsene 17000 Harriso
Hayes Main
Brighto ge ck 00 n
A-217 750
n Benning 30000 Johnso Palo
Pownal Alma
Redwo ton 0 n Alto
A-222 700
od Redwo Palo 21000
Round od Alto 00 customer
A-305 350
Hill Round Horsene 80000
Hill ck 00
account
branch

customer- account- loan- customer- loan-


branch- amou
name number numb name number
name nt
Hayes A-102 er Adams L-16
Johnson A-101 RoundHil Curry L-93
L-11 900
Johnson A-201 l Hayes L-15
Jones A-217 Downtow Jackson L-14
L-14 1500
Lindsay A-222 n Jones L-17
Smith A-215 Perryridg Smith L-11
L-15 1500
e
Turner A-305 Smith L-23
Perryridg
L-16 1300 Williams L-17
e
depositor Johnson null
Downtow
L-17 1000
n
borrower
Redwoo
L-23 2000
d
L-93 Mianus 500
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éstamos de la sucursal


Perryridge

{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

accou branch branch- asset custom custom


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

customer- account- loan- customer- loan-


branch- amou
name number numb name number
name nt
Hayes A-102 er Adams L-16
Johnson A-101 RoundHil Curry L-93
L-11 900
Johnson A-201 l Hayes L-15
Jones A-217 Downtow Jackson L-14
L-14 1500
Lindsay A-222 n Jones L-17
Smith A-215 Perryridg Smith L-11
L-15 1500
e
Turner A-305 Smith L-23
Perryridg
L-16 1300 Williams L-17
e
depositor Johnson null
Downtow
L-17 1000
n
borrower
Redwoo
L-23 2000
d
L-93 Mianus 500
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

{ <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.
Resumen

En esta unidad didáctica hemos presentado los conceptos fundamentales


del modelo relacional de datos y, a continuación, hemos explicado las
operaciones del álgebra relacional:

1) Los aspectos más relevantes del modelo relacional que hemos descrito
son los siguientes:

a) En lo que respecta a la estructura de los datos:

• Consiste en un conjunto de relaciones.

• Una relación permite almacenar datos relacionados entre sí.

• La clave primaria de una relación permite identificar sus datos.

• Las claves foráneas de las relaciones permiten referenciar


claves primarias y, de este modo, establecer conexiones entre
los datos de las relaciones.

b) En lo que respecta a la integridad de los datos:


• La regla de integridad de unicidad y de entidad de la clave
primaria: las cl ves primarias no pueden contener valores
repetidos ni valores nulos.

• La regla de integridad referencial: los valores de las claves


foráneas deben existir en la clave primaria referenciada o bien
deben ser valores nulos.

• La regla de integridad de dominio: los valores no nulos de un


atributo de- ben pertenecer al dominio del atributo, y los
operadores que es posible aplicar sobre los valores dependen
de los dominios de estos valores.

2) El álgebra relacional proporciona un conjunto de operaciones para


manipular relaciones. Estas operaciones se pueden clasificar de la forma
siguiente:

a) Operaciones conjuntistas: unión, intersección, diferencia y


producto cartesiano.

b) Operaciones específicamente relacionales: selección, proyección y


combinación.

c) Las operaciones del álgebra relacional pueden formar


secuencias que permiten resolver consultas complejas.

Potrebbero piacerti anche