You are on page 1of 18

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

TEMA 6
LGEBRA RELACIONAL
Definicin de lgebra relacional.
El lgebra relacional es un lenguaje formal de obtencin y
manipulacin de informacin que define un conjunto de
operaciones sobre tablas relacionales, tambin denominadas
relaciones; con el fin de obtener un resultado sin modificar el
origen de los datos. Fue definida originalmente por Codd, creador
del modelo relacional, hacia 1970.

Clasificacin de operaciones.
Las operaciones definidas por el lgebra relacional pueden
clasificarse como:
Operaciones bsicas.
o
o
o
o
o

Proyeccin.
Seleccin.
Unin.
Diferencia.
Producto cartesiano.

Operaciones derivadas o compuestas.


o Join.
o Interseccin.
o Divisin.
Asimismo, las operaciones bsicas pueden clasificarse como:
Operaciones unarias. Se aplican sobre una sola relacin
(proyeccin, seleccin).
Operaciones binarias. Se aplican sobre dos relaciones
(unin, diferencia, producto cartesiano).
1

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Operacin Seleccin.
Extrae las tuplas especficas de una relacin dada, presentando
slo aquellas que satisfacen la condicin solicitada.
Se representa con la siguiente notacin:

Donde cond_1, cond_2, , cond_n es la serie de condiciones requeridas para


hacer la seleccin, separadas entre s por operadores lgicos, que pueden ser
(y) o V (o). Adems, cada condicin puede utilizar los operadores de
comparacin
.

Ejemplo
Considere la siguiente relacin:
EMPLEADO
nombreEmp salarioEmp
Juan Prez
1500
Luis Surez
2300
Jos Ramrez
1800
Pedro Lpez
2100

Obtener las tuplas de los empleados cuyo salario es mayor a


$2000.
salarioEmp > 2000

nombreEmp
Luis Surez
Pedro Lpez

(EMPLEADO)
salarioEmp
2300
2100

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Operacin Proyeccin.
Extrae los atributos especficos de una relacin dada.

Se representa con la siguiente notacin:

Donde atrb_1, atrb_2, , atrb_n es la lista de atributos a extraer de la


relacin.

Ejemplo
Considere la siguiente relacin:
ALUMNO
numCuenta
nombreAlu
402057203
Martn Peralta
305248321
Fabiola Rojas
304721843 Ricardo Martnez

Obtener el nombre de todos los alumnos.


nombreAlu

(ALUMNO)

nombreAlu
Martn Peralta
Fabiola Rojas
Ricardo Martnez

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Operacin Unin.
Construye una relacin formada por todas las tuplas que aparecen
en las dos relaciones especificadas.
Es necesario considerar que las relaciones deben ser compatibles
para esta operacin, es decir, ambas deben tener el mismo
nmero de atributos y los atributos en campos correspondientes
deben tener el mismo dominio. En caso de que no exista
compatibilidad, puede recurrirse a la operacin proyeccin, de
forma que nicamente se extraigan los atributos necesarios para
lograr la compatibilidad, y por ende, la operacin unin.
Si como resultado de la unin se presentan tuplas repetidas, stas
son eliminadas.

Se representa con la siguiente notacin:

RELACION1 U RELACION2
Grficamente se denota de la siguiente forma:

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Ejemplo
Considere las siguientes relaciones:

JUGADORSELECCION
nombreJugSel numeroJugSel
Gerardo Torrado
6
Fernando Arce
15
Andrs Guardado
18
Guillermo Ochoa
1
Ricardo Osorio
5
JUGADORLIGAMEX
nombreJugLM equipoJugLM
Gerardo Torrado
Cruz Azul
Fernando Arce
Santos
Sergio Bernal
Pumas
Emanuel Villa
Cruz Azul
Guillermo Ochoa
Amrica
Hctor Mancilla
Toluca

Obtener los nombres de todos los jugadores que pertenecen a la


seleccin o juegan en la liga mexicana.

(JUGADORSELECCION) U
nombreJugLM (JUGADORLIGMEX)

nombreJugSel

nombreJugSel_nombreJugLM
Gerardo Torrado
Fernando Arce
Andrs Guardado
Guillermo Ochoa
Ricardo Osorio
Sergio Bernal
Emanuel Villa
Hctor Mancilla

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Operacin Diferencia.
Construye una relacin formada por todas las tuplas de la primera
relacin que no aparecen en la segunda relacin de las dos
especificadas.
Para realizar esta operacin, las relaciones deben ser compatibles
entre s, de la misma forma que con la operacin unin.

Se representa con la siguiente notacin:

RELACION1 RELACION2
Grficamente se denota de la siguiente forma:

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Ejemplo
Considere las relaciones indicadas en el ejemplo de la operacin
unin.
Obtener los nombres de todos los jugadores de la seleccin que no
juegan en la liga mexicana.

(JUGADORSELECCION)
nombreJugLM (JUGADORLIGMEX)

nombreJugSel

nombreJugSel_nombreJugLM
Andrs Guardado
Ricardo Osorio

Operacin Producto cartesiano.


A partir de dos relaciones especificadas construye una relacin
que contiene todas las posibles combinaciones de tupla, uno de
cada uno de las dos relaciones.

Se representa con la siguiente notacin:

RELACION1 X RELACION2
Ejemplo
Considere las siguientes relaciones:
CLUB
claveClub
1
2
3

nombreClub
Atletismo
Ajedrez
Natacin

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

SOCIO
claveClub
2
3
3
1
1
2

nombreSocio
Eduardo Vzquez
Daniel Chvez
Eduardo Vzquez
Daniel Chvez
Eduardo Vzquez
Carlos Gonzlez

Obtener el producto cartesiano CLUB X SOCIO.


CLUB X SOCIO
CLUB.claveClub nombreClub SOCIO.claveClub
1
Atletismo
2
1
Atletismo
3
1
Atletismo
3
1
Atletismo
1
1
Atletismo
1
1
Atletismo
2
2
Ajedrez
2
2
Ajedrez
3
2
Ajedrez
3
2
Ajedrez
1
2
Ajedrez
1
2
Ajedrez
2
3
Natacin
2
3
Natacin
3
3
Natacin
3
3
Natacin
1
3
Natacin
1
3
Natacin
2

nombreSocio
Felipe Vzquez
Daniel Chvez
Felipe Vzquez
Daniel Chvez
Felipe Vzquez
Carlos Gonzlez
Felipe Vzquez
Daniel Chvez
Felipe Vzquez
Daniel Chvez
Felipe Vzquez
Carlos Gonzlez
Felipe Vzquez
Daniel Chvez
Felipe Vzquez
Daniel Chvez
Felipe Vzquez
Carlos Gonzlez

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Operacin Join (Producto natural).


A partir de dos relaciones especificadas construye una relacin
que contiene todas las posibles combinaciones de tupla, actuando
slo en atributos en comn.

Se representa con la siguiente notacin:

RELACION1

RELACION2

Esta operacin es compuesta, y se define de la siguiente forma:


Sean las siguientes relaciones:
R = {Ar1, Ar2, , Arn, Ac}

S = { As1, As2, , Asm, Ac}

Donde los listados de atributos Ar1, Ar2, , Arn y As1, As2,


, Asm son exclusivos de cada relacin, y Ac es un atributo
en comn.

La relacin R

S posee la siguiente equivalencia:


R

S=

R.Ac=S.Ac

(R X S)

De esta forma, realizar la operacin join entre dos relaciones es


equivalente a realizar el producto cartesiano de ambas, obteniendo
solamente aquellas tuplas en las que el valor del atributo en comn
coincide.

Ejemplo
Considere las relaciones indicadas en el ejemplo de la operacin
producto cartesiano.

DISEO DE BASES DE DATOS RELACIONALES

Obtener el producto natural o join CLUB

PROTECO

SOCIO.

Para realizar esta operacin podemos recurrir a su equivalencia.


Primero obtenemos el producto cartesiano CLUB X SOCIO.
CLUB X SOCIO
CLUB.claveClub nombreClub SOCIO.claveClub
1
Atletismo
2
1
Atletismo
3
1
Atletismo
3
1
Atletismo
1
1
Atletismo
1
1
Atletismo
2
2
Ajedrez
2
2
Ajedrez
3
2
Ajedrez
3
2
Ajedrez
1
2
Ajedrez
1
2
Ajedrez
2
3
Natacin
2
3
Natacin
3
3
Natacin
3
3
Natacin
1
3
Natacin
1
3
Natacin
2

nombreSocio
Felipe Vzquez
Daniel Chvez
Felipe Vzquez
Daniel Chvez
Felipe Vzquez
Carlos Gonzlez
Felipe Vzquez
Daniel Chvez
Felipe Vzquez
Daniel Chvez
Felipe Vzquez
Carlos Gonzlez
Felipe Vzquez
Daniel Chvez
Felipe Vzquez
Daniel Chvez
Felipe Vzquez
Carlos Gonzlez

Y finalmente, obtenemos slo aquellas tuplas en las que el atributo


en comn posee el mismo valor.
CLUB

SOCIO

CLUB.claveClub nombreClub SOCIO.claveClub


1
Atletismo
1
1
Atletismo
1
2
Ajedrez
2
2
Ajedrez
2
3
Natacin
3
3
Natacin
3

nombreSocio
Daniel Chvez
Felipe Vzquez
Felipe Vzquez
Carlos Gonzlez
Daniel Chvez
Felipe Vzquez

10

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Operacin Interseccin.
Construye una relacin formada por todas las tuplas que aparecen
en ambas relaciones de las dos especificadas.
Para realizar esta operacin, las relaciones deben ser compatibles
entre s, de la misma forma que con la operacin unin.

Se representa con la siguiente notacin:

RELACION1 RELACION2
Grficamente se denota de la siguiente forma:

11

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Esta operacin es compuesta y se define de la siguiente forma:


Sean las siguientes relaciones:
R = {Ar1, Ar2, , Arn}

S = { As1, As2, , Asn}

Donde los listados de atributos Ar1, Ar2, , Arn y As1, As2,


, Asn estn definidos bajo el mismo dominio.
La relacin R S posee la siguiente equivalencia:
R S = R (R S) = S (R S)

Ejemplo
Considere las relaciones indicadas en el ejemplo de la operacin
unin.

Obtener el nombre de todos los jugadores de la seleccin que


juegan en la liga mexicana.

(JUGADORSELECCION)
nombreJugLM (JUGADORLIGMEX)

nombreJugSel

nombreJugSel_nombreJugLM
Gerardo Torrado
Fernando Arce
Guillermo Ochoa

12

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Operacin Divisin.
Toma dos relaciones, una unaria y una binaria que concuerde en el
atributo de la binaria con todos los valores de la relacin unaria.

Se representa con la siguiente notacin:

RELACION1

RELACION2

Esta operacin es compuesta y se define de la siguiente forma:


Sean las siguientes relaciones:
R = {A1, A2}

S = {A2}

Donde A1 es un atributo en comn para ambas relaciones.

La operacin R
R

S=

S posee la siguiente equivalencia:


A1

(R) (

A1

((

A1

(R) X S) R))

Ejemplo
Considere las relaciones indicadas en el ejemplo de la operacin
producto cartesiano.

Obtener el nombre de los socios que pertenezcan a todos los


clubes.

(SOCIO)
claveClub (CLUB)

nombreSocio, claveClub

nombreSocio
Felipe Vzquez

13

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Ejemplo de un sistema bancario


Considere las siguientes relaciones:

CTAHAB
nomCtaHab
Emilio Torres
Francisco Prez
Fernando Surez
Luis Snchez
Armando Velzquez
Javier Ros

ciudadCtaHab
Ciudad de Mxico
Guadalajara
Ciudad de Mxico
Ciudad de Mxico
Ciudad de Mxico
Monterrey

CLIENTE
nomCtaHab
nomEjeCta
Emilio Torres
Juan Lpez
Fernando Surez
Juan Lpez
Luis Snchez
Armando Velzquez
Armando Velzquez Armando Velzquez
Javier Ros
Jos Valencia
Francisco Prez
Jess Rojas

SUCURSAL
nomSuc
ciudadSuc
Activo
Centro
Ciudad de Mxico 1500000
Bellas Artes Ciudad de Mxico 1300500
Hidalgo
Ciudad de Mxico 1250000
Nios Hroes
Guadalajara
1300000
Revolucin
Monterrey
1450000
Independencia
Guadalajara
1410000

14

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

PRESTAMO
nomSuc
numPres
nomCtaHab
importe
Centro
1
Emilio Torres
1250
Bellas Artes
2
Emilio Torres
2500
Nios Hroes
3
Francisco Prez
1100
Independencia
4
Francisco Prez
1000
Centro
5
Fernando Surez
2100
Bellas Artes
6
Armando Velzquez
1150
Revolucin
7
Javier Ros
1300
Centro
8
Armando Velzquez
2700

CUENTA
nomSuc
numCta
nomCtaHab
saldo
Centro
1
Luis Snchez
1300
Bellas Artes
2
Armando Velzquez 5000
Centro
3
Fernando Surez
3850
Hidalgo
4
Luis Snchez
500
Revolucin
5
Javier Ros
2800
Nios Hroes
6
Francisco Prez
6300
Bellas Artes
7
Luis Snchez
1000
Centro
8
Fernando Surez
3700

Realizar las siguientes consultas:


Obtener las tuplas en las que el prstamo es mayor a $1200.

importe > 1200

(PRESTAMO)

nomSuc numPres
nomCtaHab
importe
Centro
1
Emilio Torres
1250
Bellas Artes
2
Emilio Torres
2500
Centro
5
Fernando Surez
2100
Revolucin
7
Javier Ros
1300
Centro
8
Armando Velzquez 2700

15

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Obtener los prstamos mayores a $2000 que se hagan


realizado en la sucursal Centro.

importe > 2000 nomSuc = Centro

(PRESTAMO)

nomSuc numPres
nomCtaHab
importe
Centro
5
Fernando Surez
2100
Centro
8
Armando Velzquez 2700
Obtener el nombre de los cuentahabientes que tienen el
mismo nombre que su ejecutivo de cuenta.

nomCtaHab

nomCtaHab = nomEjeCta

(CLIENTE) )

nomCtaHab
Armando Velzquez
Obtener el nombre de los cuentahabientes y las sucursales
en las que stos tienen prstamos.

nomCtaHab, nomSuc

nomCtaHab
Emilio Torres
Emilio Torres
Francisco Prez
Francisco Prez
Fernando Surez
Armando Velzquez
Javier Ros
Armando Velzquez

(PRESTAMOS)
nomSuc
Centro
Bellas Artes
Nios Hroes
Independencia
Centro
Bellas Artes
Revolucin
Centro

16

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Obtener el nombre de los cuentahabientes que tienen una


cuenta en la sucursal Centro, pero que no han sacado un
prstamo.

nomCtaHab

nomSuc = Centro

(CUENTA) )

nomCtaHab

nomSuc = Centro

(PRESTAMO) )

nomCtaHab
Luis Snchez
Obtener el nombre de los cuentahabientes que tienen una
cuenta, un prstamo o ambos en la sucursal Centro.

nomCtaHab

nomSuc = Centro

(CUENTA) ) U

nomCtaHab

nomSuc = Centro

(PRESTAMO) )

nomCtaHab
Luis Snchez
Fernando Surez
Emilio Torres
Armando Velzquez
Obtener el nombre de los clientes del ejecutivo de cuenta
Juan Lpez y las ciudades en donde viven.

CTAHAB.nomCtaHab, ciudadCtaHab

CLIENTE.nomCtaHab = CTAHAB.nomCtaHab nomEjeCta = Juan Lpez

(CLIENTE X CTAHAB) )
nomCtaHab
Emilio Torres
Fernando Surez

ciudadCtaHab
Ciudad de Mxico
Ciudad de Mxico

17

DISEO DE BASES DE DATOS RELACIONALES

PROTECO

Obtener los nombres y ciudad de residencia de los


cuentahabientes que tienen un prstamo en la sucursal
Bellas Artes.

CTAHAB.nomCtaHab, ciudadCtaHab

PRESTAMO.nomCtaHab = CTAHAB.nomCtaHab nomSuc = Bellas Artes

(PRESTAMO X CTAHAB) )
nomCtaHab
Emilio Torres
Fernando Surez

ciudadCtaHab
Ciudad de Mxico
Ciudad de Mxico

Obtener el nombre de todos los cuentahabientes que tienen


tanto una cuenta como un prstamo en la sucursal Centro.

nomCtaHab

nomSuc = Centro

(CUENTA) )

nomCtaHab

nomSuc = Centro

(PRESTAMO) )

nomCtaHab
Fernando Surez
Obtener el nombre de todos los cuentahabientes que tienen
cuenta en todas las sucursales de la Ciudad de Mxico.

(
CUENTA.nomSuc = SUCURSAL.nomSuc
ciudadSuc = Ciudad de Mxico (CUENTA X SUCURSAL) )
CUENTA.nomSuc, nomCtaHab

nomSuc

ciudadSuc = Ciudad de Mxico

(SUCURSAL) )

nomCtaHab
Luis Snchez

18