Está en la página 1de 34

Introduccin

Al comenzar el recorrido por lo que ser este interesantsimo trabajo, es necesario


decir que se consideran que el almacenamiento de datos es el corazn de un sistema
de informacin, lo que hace alusin a la base datos que manejan dicho sistemas. Pero
para que dicha base de datos tenga un buen funcionamiento necesita diversos
elementos importante para su creacin y desarrollo, en esta ocasin abarcaremos un
elemento importante a la hora de desarrollar una base de datos como lo es el Algebra
Relacional.
Dicho elemento mencionado no es ms es un conjunto de operaciones (bsicas y
derivadas) que facilitan el entender y representar de una manera ms sencilla las
bases de datos con un fundamento slido matemtico.

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

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:

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 .

La Relacin que constituye el argumento se da entre parntesis despus de la .

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

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.

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

Diferencia
En lgebra relacional la diferencia entre dos relaciones compatibles A y B

MENOS

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

Producto cartesiano x

En

lgebra

relacional

Veces

el

producto

de

dos

relaciones

es:

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

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.

Formas de la operacin join


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

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

Operaciones que extienden el lgebra Relacional


Proyeccin Generalizada
Combinacin externa
Funciones de Agrupacin y Agregacin
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)

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

count:

de

valores

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

Ejemplo de la Operacin Agregacin


Relacin account agrupada por branch-name:

branch-name

account-

balance

A-102

400

Perryridge

A-201

900

Brighton

A-217

750

Perryridge
}}

branch-name
Perryridge

balance
1300

branch-name g sum(balance) (account)

El resultado de la agregacin no tiene un nombre.


Puede utilizarse la operacin de renombrar (rename) as para
denominarla.
Por conveniencia, se permite renombrar como parte de la operacin de
agregacin.
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.
Ejemplo de Combinacin externa
Relacin loan

loan-number branch-name amount


Downtown
L-170
3000
Relacin
borrower
Redwood
L-230
4000
Perryridge
L-260
1700
customer-name
loan-number
Jones
Smith
Hayes

L-170
L-230
L-155

Combinacin interna

loan

Borrower

loan-number branch-name amount customer-name


L-170
L-230

Downtown
Redwood

3000
4000

Jones
Smith

Combinacin externa izquierda


loan

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

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

(unknown

or

=
false)

true,
unknown

(unknown or unknown) = unknown


AND:

(true and unknown)


(false and unknown)

= 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

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:
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.
Ejemplo de borrado:
Borrar en la tabla account todas las tuplas cuyo nombre de sucursal sea
Perryridge.

account account

branch-name =
(account)

Perryridge
r1 branch-city
= Needham (account

Borrar todos los registros de la tabla loan con cantidad en el rango de 0 a 50

branch)

loan loan amount

r2 branch-name,

0 and amount

account-number,

(r1)las cuentas para las sucursales ubicadas en Needham.


Borrar todas
balance
r3 customer-name,
depositor)
account account r2
depositor depositor r3

account-number (r2

r1 (branch-name = Perryridge (borrower loan))


account account branch-name, account-number,200 (r1)
depositor depositor customer-name, loan-number(r1)

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.

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

Ejemplo
Pagar intereses incrementando todos los balances en un 5%.

account

AN, BN, BAL * 1.05 (accoun

Las cuentas con balances sobre $10,000 perciben un 6% de inters. A las

donde AN, BN y BAL significan account-number, branch-nam


restantes, pagar el 5 %

account

AN,

BN, BAL * 1.06 ( BAL 10000

(account))
Vistas

AN,

BN, BAL * 1.05 (BAL

En muchos
casos no se desea que todos los usuarios vean el modelo lgico
(account))

10000

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

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

Considere la vista denominada all-customer, consistente de todas las sucursales


y sus clientes.

create view all-customer as


(depositor account)
customer-name
Pueden encontrarse todos los clientes de la sucursal Perryridge escribiendo:

branch-name,

branch-name,

customer-name (borrower

loan)

customer-name

(branch-name = Perryridge (allcustomer))


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

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

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
Sustituir

todas
la

vista

las
vi

por

vistas
la

expresin

vi
que

de
define

e1
vi

until no queden mas vistas en e1


Mientras las definiciones de vistas no sean recursivas, este bucle concluir.
Calculo 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

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:

(Q(t))

existe

una

tupla

en

relacin

tal que el predicado Q(t) es true


t r (Q(t)) Q es true para todas las tuplas t en la relacin r
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, account-number)

borrower (customer-name, loan-number)

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}

{t | s loan (t[loan-number] = s[loan-number] s [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]))

not v depositor (v[customer-name] =


t[customer-name]) }

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])))}

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] )) )}

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.

También podría gustarte