Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algebra relacional
El lgebra constituye un lenguaje formal asociado con el Modelo Relacional.
Informalmente, el lgebra Relacional (AR) es un lenguaje de procedimientos
(procedural lenguaje). 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 operando 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.
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
Operaciones
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}
Seleccin o 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 .
Ejemplos :
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
Ejemplos :
argumento
se
escribe
despus
de
entre
parntesis.
Unin
En lgebra relacional la unin de dos relaciones compatibles A y B es:
UNION
Ejemplo:
Interseccin
Ejemplo:
Diferencia
En lgebra relacional la diferencia entre dos relaciones compatibles A y B
MENOS
Ejemplo:
Devuelve todos los dueos que NO son choferes
Producto cartesiano x
En
lgebra
relacional
Veces
el
producto
de
dos
relaciones
es:
Ejemplos:
el
producto.
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.
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.
en
la
lista
proyectada.
valor
promedio
min:
valor
mnimo
max:
valor
mximo
sum:
suma
count:
de
valores
cantidad de valores
branch-name
account-
balance
A-102
400
Perryridge
A-201
900
Brighton
A-217
750
Perryridge
}}
branch-name
Perryridge
balance
1300
L-170
L-230
L-155
Combinacin interna
loan
Borrower
Downtown
Redwood
3000
4000
Jones
Smith
Borrower
loan-number
L-170
L-230
L-260
branch-name
Downtown
Redwood
Perryridge
amount customer-name
3000
Jones
4000
Smith
1700
null
Valores nulos
Es posible en las tuples tomar un valor nulo, denotado por null, para algunos
atributos
(unknown
or
true)
(unknown
or
=
false)
true,
unknown
= unknown,
= false,
account account
branch-name =
(account)
Perryridge
r1 branch-city
= Needham (account
branch)
r2 branch-name,
0 and amount
account-number,
account-number (r2
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.
Ejemplo:
Insertar informacin en la base de datos especificando que Smith tiene $1200 en la
cuenta A-973 en la sucursal de Perryridge.
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.
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
Ejemplo
Pagar intereses incrementando todos los balances en un 5%.
account
account
AN,
(account))
Vistas
AN,
En muchos
casos no se desea que todos los usuarios vean el modelo lgico
(account))
10000
Definicin de vistas
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.
Ejemplo
branch-name,
branch-name,
customer-name (borrower
loan)
customer-name
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)}
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:
3. create view v as branch-name = Perryridge (account))
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.
todas
la
vista
las
vi
por
vistas
la
expresin
vi
que
de
define
e1
vi
2.
Operadores de comparacin: , , , , ,
3.
4.
5.
Cuantificadores:
(Q(t))
existe
una
tupla
en
relacin
Ejemplo de consultas
Buscar loan-number, branch-name, y amount para prstamos superiores a $1200
Buscar el loan-number para cada prstamo con una cantidad mayor que $1200
{t | t loan t [amount]
1200}
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]))}
{t | s borrower( t[customer-name] = s[customer-name]
u loan(u[branch-name] = Perryridge
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:
u[loan-number] = s[loan-number]))
prstamo en la sucursal
{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])))}
Buscar los nombres de todos los clientes que tienen una cuenta en todas las
sucursales ubicadas en Brooklyn:
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.