Professional Documents
Culture Documents
RELACIONAL
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda
Objetivos
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:
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
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
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda
Ejemplo.-
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda
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)
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
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
Combinacin externa
Extensin de la operacin join que evita prdidas
de informacin, ya que trabaja con la informacin
que falta.
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
Borrower
loan-number
L-170
L-230
branch-name
Downtown
Redwood
amount
3000
4000
customer-name
Jones
Smith
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
L-170
L-230
L-155
branch-name
amount
Downtown
Redwood
null
3000
4000
null
customer-name
Jones
Smith
Hayes
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.
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
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
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)
ubicadas en Needham.
r1 branch-city = Needham (account
branch)
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
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.
loan))
Actualizacin
Mecanismo para cambiar algunos valores en una
tupla sin que cambien todos los valores de la
misma.
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.
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)
loan)
2006 UDLA - Escuela de Ingeniera - Bases de Datos - Ana Paola Arriagada y Juan Jos Aranda
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
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}
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])
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]))}
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
Ejemplo de consultas
Buscar loan-number, branch-name, y amount
para prstamos superiores a $1200:
{ l, b, a | l, b, a loan a > 1200}
superiores a $1200:
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))}
2.
3.
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)
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)
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