You are on page 1of 70

ALGEBRA y CLCULO

RELACIONAL

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Objetivos

Aprender a construir consultas a


Bases de Datos relacionales
utilizando el lgebra Relacional.

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Introduccin
El lgebra y el Clculo Relacional
constituyen lenguajes formales asociados
con el Modelo Relacional.
Informalmente, el lgebra Relacional (AR)
es un lenguaje de procedimientos
(procedural language) de alto nivel,
mientras que el Clculo Relacional (CR) no
es un lenguaje orientado a procedimientos.
Formalmente son equivalentes el uno con
el otro.
Un lenguaje que produce una relacin que
puede derivarse utilizando CR es completo
relacionalmente.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

lgebra Relacional
Es un lenguaje de consulta procedural.
Consta de un conjunto de operaciones que
toman como entrada una o dos relaciones y
producen como resultado una nueva relacin
sin cambiar las relaciones originales, por lo
tanto, es posible anidar y combinar operadores.
Tanto las relaciones que actan como
operandos como la relacin resultante a la
salida pueden emplearse como entradas para
otra operacin.
Permite, como la aritmtica, que se aniden
expresiones. Esta propiedad recibe el nombre
de clausura.

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

lgebra Relacional
Hay varios operadores en el AR que
construyen relaciones y manipulan datos:
Operaciones unarias:
Seleccin ( Restriccin)
Proyeccin

Operaciones de conjuntos:
Unin
Diferencia
Interseccin
Producto cartesiano

Operaciones de Combinacin
Operacin de Divisin
Operaciones de Agregacin y Agrupamiento
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Operaciones

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Operaciones

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

lgebra Relacional
Las operaciones de proyeccin, producto, unin,
diferencia, y seleccin son llamadas bsicas
primitivas, puesto que las otras operaciones
pueden definirse en trminos de stas.
Se hace necesario en este punto incluir un
modelo de datos de ejemplo en el cual trabajar
para generar ejemplos de comandos y
operadores. Para este efecto se incluye un
modelo bsico de administracin de Radio taxis.
El Grfico que se presenta a continuacin
representa el Modelo conceptual (Modelo
Lgico) o Diagrama de Entidad-Relacin:
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

lgebra Relacional

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

lgebra Relacional
Los Esquemas de relaciones que se pueden construir a
partir de este modelo son los siguientes:
Dueo = {rut, nombre, telfono, direccin, vigencia}
Chofer = {rut, nombre, telfono, direccin,
fecha_licencia_desde, fecha_licencia_hasta,
vigencia}
Vale = {correlativo, hora_desde, hora_hasta,
metraje_total, tarifa_total}
Mvil = {patente, rut_dueo, rut_chofer, marca,
modelo, ao}
Viaje = {correlativo_vale, patente_movil,
Hora_Desde, hora_hasta, origen, destino, tarifa,
metraje}
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Seleccin Restriccin ()
El operador de seleccin opta por tuplas que
satisfagan cierto predicado, se utiliza la letra
griega sigma minscula () para sealar la
seleccin.
El predicado aparece como subndice de .
La Relacin que constituye el argumento se da
entre parntesis despus de la .

Ejemplos :

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Proyeccin ()
La operacin de proyeccin permite quitar
ciertos atributos de la relacin.
Esta operacin es unaria, copiando su relacin
base dada como argumento y quitando ciertas
columnas.
La proyeccin se seala con la letra griega pi
mayscula (). Como subndice de se coloca
una lista de todos los atributos que se desea
aparezcan en el resultado.
La relacin argumento se escribe despus de
entre parntesis.
Ejemplos :

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Unin (U)
En lgebra relacional la unin de dos
relaciones compatibles A y B es:
A UNION B o A U B
Produce el conjunto de todas las tuplas
que pertenecen ya sea a A o a B o a
Ambas.
Al igual que en teora de conjuntos el
smbolo U representa aqu la unin de dos
relaciones.
Ejemplo :
Devuelve todos los Dueos y los Choferes.

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Interseccin ()
En lgebra relacional la interseccin de dos
relaciones compatibles A y B
A INTERSECCION B o A B
Produce el conjunto de todas las tuplas
pertenecientes a A y B. Al igual que en teora
de conjuntos el smbolo representa aqu la
interseccin entre dos relaciones.
Ejemplo:

Devuelve todos los dueos que tambin son choferes

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Diferencia ()
En lgebra relacional la diferencia entre dos
relaciones compatibles A y B
A MENOS B o A B
Produce el conjunto de todas las tuplas t que
pertenecen a A y no pertenecen a B.
Ejemplo:
Devuelve todos los dueos que NO son choferes

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Producto cartesiano (X)


En lgebra relacional el producto de dos
relaciones A y B es:
A Veces B o A X B
Produce el conjunto de todas las tuplas t tales
que t es el encadenamiento de una tupla a
perteneciente a A y de una b que pertenece a B.
se utiliza el smbolo X para representar el
producto.
Ejemplos:

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Join o Reunin
Esta operacin deriva del Producto
Cartesiano
Es equivalente a realizar una seleccin
empleando un predicado de reunin como
frmula para eleccin dentro del producto
cartesiano de las dos relaciones operando.
Es difcil de implementar eficientemente en
un Sistema de Manejo de Bases de Datos
Relacionales (RDBMS) y es causa de
problemas intrnsecos de performance en
ellos.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Join o Reunin
En lgebra relacional el JOIN entre el
atributo X de la relacin A con el
atributo Y de la relacin B produce el
conjunto de todas las tuplas t tal que t
es el encadenamiento de una tupla a
perteneciente a A y una tupla b
perteneciente a B que cumplen con el
predicado:
A.X comp B.Y es verdadero
siendo comp un operador relacional y
los atributos A.X y B.Y pertenecientes al
mismo dominio.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Formas de la operacin Join


Combinacin Theta (-join)
Equicombinacin (Equi-join) (tipo
particular de Theta)
Combinacin Natural
Reunin externa (Outer join)
Semicombinacin (Semi-join)

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Join o Reunin Natural


Si el operador relacional comp es =
entonces el conjunto resultante es un
EQUI-JOIN.
Si se quita uno de stos (usando una
proyeccin) entonces el resultado es un
JOIN-NATURAL.

Ejemplo.-

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Operaciones que extienden el


lgebra Relacional
Proyeccin Generalizada
Combinacin externa
Funciones de Agrupacin y Agregacin

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Proyeccin Generalizada
Extiende la operacin de proyeccin permitiendo el
uso de funciones aritmticas en la lista proyectada.

F1, F2, , Fn

(E)

E es cualquier expresin del lgebra relacional


Cada F1, F2, , Fn representa expresiones
aritmticas que pueden involucrar constantes
atributos en el esquema de E.
Dada la relacin credit-info(customer-name, limit,
credit-balance), encontrar cuanto puede gastar una
persona:

customer-name, limit credit-balance (credit-info)


2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Funciones y Operaciones de
Agregacin
La funcin de Agregacin toma una coleccin de valores y
devuelve un nico valor como resultado:
avg: valor promedio
min: valor mnimo
max: valor mximo
sum: suma de valores
count: cantidad de valores
Operacin de Agregar en lgebra relacional
G1, G2, , Gn

g F1( A1), F2( A2),, Fn( An) (E)

E es cualquier expresin en lgebra relacional


G1, G2 , Gn es una lista de atributos en los cuales agrupar
(puede estar vaca)
Cada Fi es una funcin de agregacin
Cada Ai es un nombre de atributo
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplo de la Operacin
Agregacin
Relacin account agrupada por branchname:
branch-name account-number
Perryridge
Perryridge
Brighton
Brighton
Redwood

branch-name

balance

A-102
A-201
A-217
A-215
A-222

sum(balance)

400
900
750
750
700

(account)

branch-name
Perryridge
Brighton
Redwood

balance
1300
1500
700

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Funciones de Agregacin (Cont.)


El resultado de la agregacin no tiene
un nombre.
branch-name

sum(balance) as sum-balance (account)

Puede utilizarse la operacin de renombrar


(rename) as para denominarla.
Por conveniencia, se permite renombrar
como parte de la operacin de agregacin.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Combinacin externa
Extensin de la operacin join que evita prdidas
de informacin, ya que trabaja con la informacin
que falta.

Calcula la combinacin e incluye tambin en la


relacin resultante las tuplas de R que no tengan
valores correspondientes en los atributos
comunes de S.
Asigna valores nulos (null) a los valores no
existentes en la segunda relacin.
null significa que el valor es desconocido no existe
Todas las comparaciones que involucran null son false
por definicin.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplo de Combinacin externa


Relacin loan
loan-number

branch-name

L-170
L-230
L-260

Downtown
Redwood
Perryridge

amount
3000
4000
1700

Relacin borrower
customer-name loan-number
Jones
Smith
Hayes

L-170
L-230
L-155

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplo de Combinacin externa


Combinacin interna
loan

Borrower

loan-number

L-170
L-230

branch-name

Downtown
Redwood

amount

3000
4000

customer-name

Jones
Smith

Combinacin externa izquierda

loan
loan-number
L-170
L-230
L-260

Borrower
branch-name
Downtown
Redwood
Perryridge

amount
3000
4000
1700

customer-name
Jones
Smith
null

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplo de Combinacin externa


Combinacin externa derecha:
loan
borrower
loan-number

L-170
L-230
L-155

branch-name

amount

Downtown
Redwood
null

3000
4000
null

customer-name

Jones
Smith
Hayes

Combinacin externa completa


loan
loan-number
L-170
L-230
L-260
L-155

borrower
branch-name
Downtown
Redwood
Perryridge
null

amount
3000
4000
1700
null

customer-name
Jones
Smith
null
Hayes

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Valores nulos
Es posible en las tuples tomar un valor nulo,
denotado por null, para algunos atributos
null significa un valor desconocido que no existe.
El resultado de cualquier expresin aritmtica donde
participa null es el propio valor null.
Las funciones de Agregacin simplemente ignoran
valores nulos
Es una decisin arbitraria.

Para eliminacin de duplicados y agrupamiento, el


valor nulo es tratado como cualquier otro valor
Alternativa: asumir que cada valor nulo es diferente de los
otros
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Valores nulos
Las comparaciones con valores nulos devuelven el valor
especial verdadero unknown
Si se emple false en vez de unknown, entonces not (A < 5)
pudiera no ser equivalente a A >= 5

Se emplea lgica tres estadoscon el valor unknown:


OR: (unknown or true)
= true,
(unknown or false)
= unknown
(unknown or unknown) = unknown
AND: (true and unknown)
= unknown,
(false and unknown)
= false,
(unknown and unknown) = unknown
NOT: (not unknown) = unknown
En SQL P is unknown evala como cierto si el predicado P
evala a unknown

El resultado del predicado de seleccin se trata como false si


evala como unknown

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Modificacin de la Base de Datos


El contenido de la base de datos
puede modificarse utilizando las
siguientes operaciones:
Borrado
Insercin
Actualizacin

Estas operaciones se expresan


empleando el operador de
asignacin:
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Borrado
Una solicitud de borrado se expresa de manera
similar a una consulta, pero en vez de mostrar
dichas tuplas al usuario, provoca que las tuplas
seleccionadas sean eliminadas de la base de datos.
Pueden eliminarse solamente tuplas completas; no
pueden borrarse valores especficos de atributos.
En lgebra relacional se expresa como:
rrE

donde r es una relacin y E es una consulta en


lgebra relacional.

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplos de borrado
Borrar en la tabla account todas las tuplas
cuyo nombre de sucursal sea Perryridge.
account account branch-name = Perryridge (account)
Borrar todos los registros de la tabla loan con

cantidad en el rango de 0 a 50
loan loan amount 0 and amount 50 (loan)

Borrar todas las cuentas para las sucursales

ubicadas en Needham.
r1 branch-city = Needham (account

branch)

r2 branch-name, account-number, balance (r1)


r3 customer-name, account-number (r2

depositor)

account account r2
depositor depositor r3
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Insercin
Para insertar datos en una relacin, puede:
especificarse una tupla para ser insertada
escribir una consulta cuyo resultado sea un conjunto de
tuplas a insertar

En lgebra relacional, una insercin se expresa


como:
r r E

donde r es una relacin y E es una expresin del


lgebra relacional.
La insercin de una tupla simple se expresa
haciendo que E sea una relacin constante que
contiene una tupla.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplos de Insercin
Insertar informacin en la base de datos especificando que
Smith tiene $1200 en la cuenta A-973 en la sucursal de
Perryridge.

account account {(Perryridge, A-973, 1200)}


depositor depositor {(Smith, A-973)}
Ofrecer una nueva cuenta de ahorro con $200 como regalo

para todos los clientes con prstamos concedidos en la


sucursal de Perryridge. Hacer que el nmero del prstamo sea
el que se utilice como nmero de cuenta para cada nueva
cuenta de ahorro.

r1 (branch-name = Perryridge (borrower

loan))

account account branch-name, account-number,200 (r1)


depositor depositor customer-name, loan-number(r1)
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Actualizacin
Mecanismo para cambiar algunos valores en una
tupla sin que cambien todos los valores de la
misma.

Se utiliza el operador de proyeccin generalizada


r F1, F2, , FI, (r)
Cada Fi es:

el isimo atributo de r, si dicho isimo atributo no se


actualiza; o,
Si corresponde actualizar al atributo, entonces Fi es una
expresin formada por constantes y por los atributos de r,
que proporciona el valor del nuevo atributo

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplos de actualizacin
Pagar intereses incrementando todos los balances
en un 5%.
account AN, BN, BAL * 1.05 (account)
donde AN, BN y BAL significan account-number, branch-name y
balance, respectivamente.

Las cuentas con balances sobre $10,000 perciben

un 6% de inters. A las restantes, pagar el 5 %


account

AN, BN, BAL * 1.06 ( BAL 10000 (account))


AN, BN, BAL * 1.05 (BAL 10000 (account))

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Vistas
En muchos casos no se desea que todos los
usuarios vean el modelo lgico completo; por
ejemplo: todas las relaciones almacenadas
actualmente en la base de datos.
Considere una persona que necesita saber el
nmero de cuenta de un cliente, pero no
necesita ver el importe de prstamos. Esta
persona debera ver una relacin descrita, en
trminos del lgebra relacional, por:
customer-name, loan-number (borrower loan)
Cualquier relacin que no forma parte del
modelo conceptual pero que se hace visible para
algn usuario como relacin virtual se
denomina vista (view).
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Definicin de Vista
Las vistas se definen utilizando la instruccin create
view. Para definirla, hay que indicar el nombre y la
consulta que la calcula:
create view v as <query expression>
donde <query expression> es cualquier expresin de
consulta que sea legal en lgebra relacional. El nombre
de la vista es v.
Una vez definida la vista, su nombre de vista puede
utilizarse para referirse a la relacin virtual que es
generada por dicha vista.
Una definicin de vista no es lo mismo que crear una
nueva relacin evaluando la expresin de consulta. En
vez de eso, la definicin de la vista genera que se
guarde una expresin, la cual es sustituida en aquellas
consultas que utilicen la vista.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplos de vistas
Considere la vista denominada all-customer,
consistente de todas las sucursales y sus clientes.
create view all-customer as
branch-name, customer-name (depositor

account)

branch-name, customer-name (borrower

loan)

Pueden encontrarse todos los clientes de la

sucursal Perryridge escribiendo:


customer-name

(branch-name = Perryridge (all-customer))


2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Actualizaciones mediante vistas


Las modificaciones a la Base de Datos expresadas como
vistas deben ser trasladadas a modificaciones de las
relaciones actuales existentes en la Base de Datos.
Considere la persona que necesita ver todos los datos de
imposiciones en la relacin loan excepto amount. La vista
dada a dicha persona, branch-loan, se define como:
create view branch-loan as
branch-name, loan-number (loan)
Dado que se admite que un nombre de vista aparezca
dondequiera que se permite un nombre de relacin, la
persona pudiera escribir:

branch-loan branch-loan {(Perryridge, L-37)}

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Actualizaciones mediante vistas


(cont.)
La insercin anterior puede representarse por una insercin en
la relacin actual loan a partir de la cual se construye la vista
branch-loan.
Una insercin en la relacin loan requiere un valor para
amount. Hay dos enfoques para trabajar esta insercin:
1. Rechazarla y devolver un mensaje de error al usuario.
2. Insertar la tupla (L-37, Perryridge, null) en la relacin loan.

Algunas actualizaciones a travs de vistas no son posibles de


convertir en actualizaciones de relaciones de la base de datos:
create view v as branch-name = Perryridge (account))
v v (L-99, Downtown, 23)

Otras no pueden ser convertidas unvocamente:


all-customer all-customer {(Perryridge, John)}
Hay que seleccionar loan o account, y crear un nuevo nmero
loan/account!

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Vistas Definidas Utilizando Otras


Vistas
Una vista puede ser utilizada en la definicin
de otra vista.
Se dice que la vista v1 depende directamente
de la vista v2 si v2 se emplea en la expresin
que define a v1
Se dice que la vista v1 depende de la vista v2
si v1 depende directamente de v2 o hay un

camino de dependencias desde v1 hasta


v2

Una vista v se denomina recursiva si


depende de si misma.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Expansin de vistas
Es una manera de definir el significado de las vistas
definidas en trminos de otras vistas.
Sea la vista v1 definida por la expresin e1 que
puede contener a su vez otras vistas.
La expansin de vista de una expresin repite el
siguiente paso de reemplazo:
repeat
Buscar todas las vistas vi de e1
Sustituir la vista vi por la expresin que define vi
until no queden mas vistas en e1
Mientras las definiciones de vistas no sean
recursivas, este bucle concluir.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Clculo relacional de tuplas


Lenguaje de consultas no procedural,
donde cada consulta est expresada en la
forma
{t | P (t) }
Es el conjunto de todas las tuplas t tales
que el predicado P es verdadero para t
t es una variable de tupla, t[A] denota el
valor del atributo A para la tupla t
t r denota que la tupla t est en la
relacin r
P es una frmula similar a las del clculo de
predicados
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Frmulas del clculo de


predicados
1. Conjunto de atributos y constantes.
2. Operadores de comparacin: , , , , ,
3. Conectores: and (), or (v) not ()
4. Implicacin (): x y, si x es verdadero,
entonces y es verdadero
x y x v y
5. Cuantificadores:

t r (Q(t)) existe una tupla t en relacin r

tal que el predicado Q(t) es true


t r (Q(t)) Q es true para todas las tuplas t
en la relacin r
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplo del banco


branch (branch-name, branch-city, assets)
customer (customer-name, customer-street,
customer-city)
account (account-number, branch-name,
balance)
loan (loan-number, branch-name, amount)
depositor (customer-name, accountnumber)
borrower (customer-name, loan-number)

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplo de consultas
Buscar loan-number, branch-name, y amount
para prstamos superiores a $1200
{t | t loan t [amount] 1200}

Buscar el loan-number para cada prstamo con

una cantidad mayor que $1200

{t | s loan (t[loan-number] = s[loan-number] s [amount] 1200)}

Ntese que implcitamente queda definida la relacin [loan-number]


en el esquema producto de la consulta.

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplo de consultas
Buscar los nombres de todos los clientes con
un prstamo, una cuenta, o ambas cosas:
{t | s borrower( t[customer-name] = s[customer-name])
u depositor( t[customer-name] = u[customer-name])

Buscar los nombres de todos los clientes que

tienen prstamo y cuenta en el banco:

{t | s borrower( t[customer-name] = s[customer-name])


u depositor( t[customer-name] = u[customer-name])

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplo de consultas
Buscar los nombres de todos los clientes con
prstamo en la sucursal Perryridge:
{t | s borrower(t[customer-name] = s[customer-name]
u loan(u[branch-name] = Perryridge
u[loan-number] = s[loan-number]))}

Buscar los nombres de todos los clientes que

tienen un prstamo otorgado por la sucursal


Perryridge, pero que no tienen cuenta en ninguna
sucursal del banco:
{t | s borrower( t[customer-name] = s[customer-name]
u loan(u[branch-name] = Perryridge
u[loan-number] = s[loan-number]))
not v depositor (v[customer-name] =
t[customer-name]) }
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplo de consultas
Buscar nombres de todos los clientes que han
tomado prstamo en la sucursal Perryridge y
las ciudades en que viven:
{t | s loan(s[branch-name] = Perryridge
u borrower (u[loan-number] = s[loan-number]
t [customer-name] = u[customer-name])
v customer (u[customer-name] = v[customer-name]
t[customer-city] = v[customer-city])))}

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplo de consultas
Buscar los nombres de todos los clientes que
tienen una cuenta en todas las sucursales
ubicadas en Brooklyn:
{t | c customer (t[customer.name] = c[customer-name])
s branch(s[branch-city] = Brooklyn
u account ( s[branch-name] = u[branch-name]
s depositor ( t[customer-name] = s[customer-name]
s[account-number] = u[account-number] )) )}

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Seguridad de Expresiones
Es posible escribir expresiones de clculo de tuplas que
generan relaciones infinitas.
Por ejemplo, {t | t r} resulta en una relacin infinita si el
dominio de uno cualquiera de los atributos de la relacin r es
infinito.
Para evitar este problema, se restringe el conjunto de
expresiones permitidas a expresiones seguras.
Una expresin {t | P(t)} en el clculo relacional de tuplas es
segura si cada componente de t aparece en una de las
relaciones, tuplas, o constantes que aparecen en P
NOTA: Esta condicin es mas que slo una condicin sintctica.
Ejemplo: { t | t[A]=5 true } no es segura --- define un conjunto
infinito con valores de atributos que no aparecen en ninguna relacin o
tuplas o constantes en P.

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Clculo relacional de dominios


Lenguaje de consultas no procedural
equivalente en potencialidad al clculo
relacional de tuplas.
Cada consulta es una expresin de la
forma:
{ x1, x2, , xn | P(x1, x2, , xn)}
x1, x2, , xn representan variables de dominio
P representa una frmula similar a las del
clculo de predicados.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplo de consultas
Buscar loan-number, branch-name, y amount
para prstamos superiores a $1200:
{ l, b, a | l, b, a loan a > 1200}

Buscar nombres de clientes con prstamos

superiores a $1200:

{ c | l, b, a ( c, l borrower l, b, a loan a > 1200)}

Buscar los nombres de todos los clientes que

tienen un prstamo de la sucursal Perryridge y el


monto de dicho prstamo:
{ c, a | l ( c, l borrower b( l, b, a loan
b = Perryridge))}
or { c, a | l ( c, l borrower l, Perryridge, a loan)}
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejemplo de consultas
Buscar los nombres de todos los clientes que
tienen un prstamo, una cuenta ambas cosas
en la sucursal Perryridge:
{ c | l ({ c, l borrower
b,a( l, b, a loan b = Perryridge))
a( c, a depositor
b,n( a, b, n account b = Perryridge))}

Buscar los nombres de todos los clientes que


tienen una cuenta en todas las sucursales
ubicadas en Brooklyn:
{ c | s, n ( c, s, n customer)
x,y,z( x, y, z branch y = Brooklyn)
a,b( x, y, z account c,a depositor)}
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Seguridad de las Expresiones


{ x1, x2, , xn | P(x1, x2, , xn)}
es segura si se cumplen todos los tres puntos siguientes:
1.

Todos los valores que aparecen en tuplas de la


expresin son valores de dom(P), que significa: los
valores aparecen en P o en una tupla de una relacin
mencionada en P.

2.

Para cada subfrmula existe de la forma x (P1(x)),


dicha subfrmula es verdadera si y solamente si hay un
valor de x en dom(P1) tal que P1(x) sea verdadera.

3.

Por cada subfrmula para todo de la forma x (P1 (x)),


dicha subfrmula es verdadera si y solamente si P1(x)
es verdadera para todos los valores x de dom (P1).

2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Otros Lenguajes
Los lenguajes orientados a Transformaciones
son lenguajes no procedurales que emplean
relaciones para transformar datos de entrada
en las salidas requeridas. Por ejemplo: el
Lenguaje estructurado de Consultas
(Structured Query Language - SQL).
Los lenguajes grficos muestran a los
usuarios diagramas de la estructura de la
relacin. El usuario llena un ejemplo de lo
que desea y el sistema devuelve los datos
solicitados en ese formato. Por ejemplo:
Consultas por ejemplo (Query by example QBE).
Pearson Education Limited 1995, 2005
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Otros Lenguajes
Los lenguajes de cuarta generacin (4GLs)
pueden crear aplicaciones completamente
personalizadas utilizando un conjunto
limitado de comandos en un ambiente
amistoso al usuario, comnmente
manejado por mens.
Algunos sistemas aceptan una variante de
lenguaje natural, denominada 5GL, aunque
este desarrollo se encuentra an en su
etapa inicial.
Pearson Education Limited 1995, 2005
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Resumen (1)
El lgebra Relacional (AR) define un
conjunto de operaciones sobre tablas que
devuelven como resultado tablas.
Estas operaciones pueden combinarse para
obtener expresiones acordes con las
consultas deseadas.
Las operaciones del AR pueden dividirse en:
Bsicas.
Adicionales, que pueden expresarse en trminos
de las operaciones bsicas.
Extendidas, algunas de las cuales aaden mayor
poder expresivo al AR
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Resumen (2)
Las Bases de Datos (BD) pueden
modificarse con:
la insercin,
el borrado y
la actualizacin

de tuplas.
Se us el AR con el operador de
asignacin para expresar estas
modificaciones.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Resumen (3)
Las vistas son relaciones virtuales definidas
mediante expresiones de consulta. Constituyen
mecanismos tiles para simplificar accesos a la
BD. Pueden tener consecuencias desventajosas,
por lo que los sistemas de BD restringen
estrictamente las actualizaciones mediante
ellas.
Por razones de eficiencia del procesamiento de
las consultas, una vista puede estar
materializada: la consulta se evala y el
resultado se almacena fsicamente. Esto implica
que si las relaciones correspondientes se
actualizan, debe actualizarse tambin dicha
vista materializada.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Resumen (4)
El clculo relacional de tuplas y el
clculo relacional de dominios son
lenguajes no procedurales que poseen
la potencia bsica necesaria en un
lenguaje de consultas relacional.
El lgebra relacional bsica es un
lenguaje procedural que es
equivalente en potencia con ambas
formas del clculo relacional cuando
se restringen a las expresiones
seguras.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Resumen (5)
El lgebra Relacional y los Clculos
Relacionales son lenguajes rgidos,
formales, que no resultan adecuados
para los usuarios ocasionales de los
sistemas de Bases de Datos.
Los sistemas comerciales emplean
alternativas que favorecen al usuario
final:
SQL: Basado en lgebra relacional.
QBE: Basado en clculo relacional de
dominios.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Bibliografa
Silberschatz, Korth y Sudarshan
Fundamentos de Bases de Datos
Connolly y Begg Sistemas de Bases de
Datos
Date Introduccin a los Sistemas de Bases
de Datos
Ullmann Principios de los Sistemas de
Bases de Datos
Cisterna METODOS DE OPTIMIZACION DE
CONSULTAS PARA EL LENGUAJE SQL
http://macine.epublish.cl/tesis/indexContents.html (visitado 2006.05.11 11:53)
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejercicios (1)
Las siguientes tablas forman parte de una BD:
Hotel (hotelNo, hotelNombre, ciudad)
Room (roomNo, hotelNo, tipo, precio)
Booking(hotelNo, guestNo, dateFrom, dateTo,
roomNo)
Guest (guestNo, guestNombre, guestDireccion)

1. Describa las relaciones que se generan


mediante las siguientes operaciones del
lgebra relacional:
a) hotelNo(price>50000(Room))
b) Hotel.hotelNo=Room.hotelNo(Hotel x Room)

2. Proporcione las expresiones equivalentes en


el clculo relacional de tuplas y en el de
dominios.
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejercicios (2)
3. Escriba las expresiones tanto del lgebra
relacional, como del clculo relacional de
tuplas y del de dominios para responder
las siguientes consultas:
a) Enumerar todos los hoteles
b) Enumerar todas las habitaciones cuyo precio
sea inferior a $20000
c) Enumerar los nombres y ciudades de
procedencia de todos los huspedes en el hotel
Raddison
d) Enumerar los detalles guestNo, guestNombre y
guestDireccion para todos los huspedes en el
hotel Sheraton
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejercicios (3)
Dada la siguiente Base de Datos:
Empleado (nombre-empleado, calle,
ciudad)
Trabaja (nombre-empleado, nombreempresa, sueldo)
Empresa (nombre-empresa, ciudad)
Jefe (nombre-empleado, nombre-jefe)

1. Escriba una expresin del lgebra


relacional que permita realizar las
siguientes consultas:
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda

Ejercicios (4)
a) Averiguar los nombres de todos los empleados
que trabajan para la UDLA
b) Averiguar el nombre, calle y ciudad de residencia
de todos los empleados que ganan mas de
$2000000 mensuales
c) Averiguar el nombre de todos los empleados que
viven en la misma ciudad donde radica la empresa
para la que trabajan
d) Determinar la empresa con mayor nmero de
empleados
e) Determinar la compaa que paga menos nmina
(salario de todos los empleados en conjunto)
f) Dar a todos los jefes un aumento de salario del
10% a menos que el sueldo resultante sea mayor
que $2000000. Para estos casos, aumentar el
salario solamente en un 3%
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda