Está en la página 1de 12

Unidad: 4 Modelo Relacional - Algebra Relacional BASE DE DATOS

Lcdo. Wilfredo Daz Pgina 1



Gua de Estudio
MODELO RELACI ONAL
El modelo relacional se ha establecido actualmente como el principal modelo de datos para las aplicaciones de
procesamiento de datos. Ha conseguido la posicin principal debido a su simplicidad, que facilita el trabajo del
programador en comparacin con otros modelos anteriores como el de red y el jerrquico.
Estudiaremos los fundamentos del modelo relacional, que proporciona una forma muy simple y potente de representar
datos. A continuacin se describen tres lenguajes formales de consulta, los lenguajes de consulta se usan para
especificar las solicitudes de informacin. Los tres que se estudiaran no son cmodos de usar, pero a cambio sirven
como base formal para lenguajes de consulta que s lo son y que se estudiarn ms adelante. Lenguaje de consulta:
1. El lgebra relacional forma la base del lenguaje de consulta SQL ampliamente usado.
2. El clculo relacional de tuplas.
3. El clculo relacional de dominios.
El clculo relacional de tuplas y dominios son lenguajes declarativos de consulta basados en la lgica matemtica. El
clculo relacional de dominios es la base del lenguaje QBE. Por lo tanto se estudiara el lenguaje formal de Algebra
Relacional que nos sirve como base para el lenguaje de consulta SQL.

1. Estructura Bsica:
Una base de datos relacional consiste en un conjunto de tablas, a cada una de las cuales se le asigna un nombre
exclusivo. Cada fila de la tabla representa una relacin entre un conjunto de valores. Dado que cada tabla es un
conjunto de dichas relaciones, hay una fuerte correspondencia entre el concepto de tabla y el concepto matemtico de
relacin, del que toma su nombre el modelo de datos relacional.
Estas relaciones representan parte de una entidad bancaria, se estudiarn los criterios sobre la adecuacin de las
estructuras relacionales.

Figura: 1 Diagrama E-R de la entidad Bancaria,

La entidad bancaria que se ha descrito se deriva del diagrama E-R mostrado en la Figura 1. Obsrvese que las
tablas para cuenta-sucursal y prstamo-sucursal se han combinado en las tablas de cuenta y prstamo
respectivamente. Esta combinacin es posible dado que las relaciones son de varios a uno desde cuenta y
prstamo, respectivamente, a sucursal y, adems, la participacin de cuenta y prstamo en las relaciones
correspondientes es total, como indican las lneas dobles en la figura. Finalmente, obsrvese que la relacin
cliente puede contener informacin sobre clientes que ni tengan cuenta ni un prstamo en el banco.
Unidad: 4 Modelo Relacional - Algebra Relacional BASE DE DATOS

Lcdo. Wilfredo Daz Pgina 2

Relacin: Cuenta Relacin: Surcusal
Numero_cuenta Nombre_sucursal Saldo gfhg
f
Nombre_surcusal Ciudad_sucursal activos
C-101 Centro 500 Galapagar Arganzuela 7.500
C-102 Navacerrada 400 Centro Arganzuela 9.000.000
C-201 Galapagar 900 Becerril Aluche 2.000
C-215 Becerril 700 Segovia Cerceda 3.700.000
C-217 Galapagar 750 Navacerrada Aluche 1.700.000
C-222 Moralzarzal 700 Navas de la Asuncin Alcal de Hernares 1.500
C-302 Colado Mediano 350 Moralzarzal La Granja 2.500
Collado Mediano Aluche 8.00.000

Relacin: Cliente Relacin: impositor
Nombre_cliente Calle_cliente Ciudad_cliente Nombre_cliente Numero_cuenta
Abril Preciados Valsan Abril C-102
Amo Embajadores Arganzuela Gmez C-101
Badorrey Delicias Valsan Gonzlez C-201
Fernndez Jazmn Len Gonzlez C-217
Gmez Carretas Cerceda Lpez C-222
Gonzlez Arenal La Granja Ruprez C-215
Lpez Mayor Peguerinos Santos C-305
Prez Carretas Cerceda
Rodrguez Yeseras Cdiz
Ruprez Ramblas Len
Santos Mayor Peguerinos
Valdivieso Goya Vigo

Relacin: Prstamo Relacin: Prestatario
Numero_prstamo Nombre_surcusal Importe Nombre_cliente Numero_prstamo
P-11 Collado Mediano 900 Santos P-17
P-14 Centro 1.500 Gmez P-23
P-15 Navacerrada 1.500 Lpez P-15
P-16 Navacerrada 1.300 Sotoca P-14
P-17 Centro 1.000 Prez P-93
P-23 Moralzarzal 2.000 Gmez P-11
P-93 Becerril 500 Valdivieso P-17
Fernndez P-16


Diagramas de esquema
Un esquema de bases de datos, junto con las dependencias de clave primaria y externa, se puede mostrar
grficamente mediante diagramas de esquema. La Figura muestra el diagrama de esquema del ejemplo
bancario. Cada relacin aparece como un cuadro con los atributos listados dentro de l y el nombre de la relacin
sobre l. Si hay atributos clave primarios, una lnea horizontal cruza el cuadro con los atributos clave primaria
listados sobre ella. Las dependencias de clave externa aparecen como flechas desde los atributos clave externa de
la relacin referenciante a la clave primaria de la relacin referenciada.
No hay que confundir un diagrama de esquema con un diagrama E-R. En particular, los diagramas E-R no
muestran explcitamente los atributos clave externa, mientras que los diagramas de esquema s.
Muchos sistemas de bases de datos proporcionan herramientas de diseo con una interfaz grfica de usuario para
la creacin de diagramas de esquema.
Unidad: 4 Modelo Relacional - Algebra Relacional BASE DE DATOS

Lcdo. Wilfredo Daz Pgina 3






Un lenguaje de consulta es un lenguaje en el que un usuario solicita informacin de la base de datos. Estos
lenguajes suelen ser de un nivel superior que el de los lenguajes de programacin habituales.
La mayor parte de los sistemas comerciales de bases de datos relacionales ofrecen un lenguaje de consulta que
incluye elementos de los enfoques procedimental y no
procedimental.


Existe varios lenguajes comerciales tales como los
lenguajes SQL, QBE y Datalog, este ltimo parecido a
Prolog. En esta unidad se examinarn los lenguajes
puros: el lgebra relacional es procedimental, mientras
que el clculo relacional de tuplas y el de dominios son
no procedimentales.
Estos lenguajes de consulta son rgidos y formales, y
carecen del azcar sintctico de los lenguajes
comerciales, pero ilustran las tcnicas fundamentales
para la extraccin de datos de las bases de datos.


Lenguajes de consulta

Los lenguajes de consulta pueden clasificarse como:
Procedimentales.
No procedimentales.
En los lenguajes procedimentales el usuario instruye al sistema para que lleve a cabo una serie de
operaciones en la base de datos para calcular el resultado deseado tal como Algebra Relacional . En los
lenguajes no procedimentales el usuario describe la informacin deseada sin dar un procedimiento
concreto para obtener esa informacin, como el Calculo Relacional

Aunque inicialmente slo se estudiarn las
consultas, un lenguaje de manipulacin de datos
completo no slo incluye un lenguaje de
consulta, sino tambin un lenguaje para la
modificacin de las bases de datos. Estos
lenguajes incluyen rdenes para insertar y borrar
tuplas, as como rdenes para modificar partes
de las tuplas existentes. Solo estudiaremos el
lenguaje procedimental Algebra Relacional ya
que este lenguaje es manipulado con SQL.
Unidad: 4 Modelo Relacional - Algebra Relacional BASE DE DATOS

Lcdo. Wilfredo Daz Pgina 4




INTRODUCCION

Un lenguaje de consulta es un lenguaje con el que el usuario solicita informacin de la base de datos: se
construye una expresin que contesta interrogantes sobre la instancia actual de la base.
En este tema se estudiar la cuestin de las consultas desde una perspectiva abstracta, presentando los
principales operadores estndar que se han definido en el Modelo Relacional
Se ver un lenguaje puro que es rgido y formal, pero que ilustra las tcnicas fundamentales para la extraccin de
la informacin: el Algebra Relacional

CONCEPTOS BSICOS

Una Base de Datos Relacional muestra las tablas en forma de filas y columnas
Dominio. Es el conjunto de todos los valores permitidos que una columna puede tomar. Se tiene
D1,D2,...,Dn, si tenemos n columnas.
Producto cartesiano. De lo anterior se tiene v1D1,v2D2, ... , vnDn, porque cada elemento est en el
dominio respectivo. En matemticas podemos decir que la tupla es un elemento del producto cartesiano de
los dominios: (v1,v2,....,vn)(D1xD2x.....xDn) =Xi=1,n(Di)
Tupla. Cada una de las filas de una tabla se compone de n elementos (V1,V2,..,Vn). En matemticas este
conjunto ordenado de elementos se llama tupla.
Relacin. Es un subconjunto del producto cartesiano de una lista de dominios, no necesariamente disjuntos

Es por esto que en el lgebra relacional se denomina relacin a una tabla y tupla a un fila de tabla.
Notacin: Atributos, tuplas y dominios.
Atributo: A
i
Relacin: R(A
1
,A
2
,A
3
,..,A
n
)
Dominio de A
i
: dom(A
i
)
R(A
1
,A
2
,A
3
,..,A
n
) _ (dom(A
1
) dom(A
2
) . dom(A
n
)

EL LGEBRA RELACIONAL
Un lgebra es un sistema matemtico constituido por:
- Operandos: objetos (valores o variables) desde los cuales nuevos objetos pueden ser construidos.
- Operadores: smbolos que denotan procedimientos para construir nuevos objetos desde objetos dados.
El algebra relacional es un algebra en la cual:
ALGEBRA RELACIONAL
Operadores y Operando de un Modelo Relacional.
Unidad: 4 Modelo Relacional - Algebra Relacional BASE DE DATOS

Lcdo. Wilfredo Daz Pgina 5

- Sus operandos son relaciones (instancias) o variables que representan relaciones.
- Sus operadores estn diseados para hacer las tareas mas comunes que se necesitan para manipular
relaciones en una base de datos.
El resultado es que el algebra relacional se puede utilizar como un lenguaje de consulta.
En la practica el algebra relacional debe ser extendida para abarcar la mayor parte de las tareas reales que se
hacen con los datos.
Estudiaremos en detalle los operadores clsicos.

El lgebra relacional es un lenguaje de consulta procedimental. Consta de un conjunto de operaciones que toman
como entrada una o dos relaciones y producen como resultado una nueva relacin.

Operaciones fundamentales
Las operaciones seleccin, proyeccin y renombramiento se denominan operaciones unarias porque operan sobre una
sola relacin. Las otras tres operaciones operan sobre pares de relaciones y se denominan, por lo tanto, operaciones
binarias.
1. La operacin seleccin(o)
La operacin seleccin selecciona el subconjunto de tuplas de una relacin que satisfacen un predicado lgico
dado (una condicin determinada). El predicado puede depender de los atributos de la relacin y de valores
constantes. Se utiliza la letra griega sigma minscula (o) para denotar la seleccin. El predicado aparece como
subndice de . La relacin del argumento se da entre parntesis a continuacin de o.
Sintaxis: o condicin (R) = {t R: condicin (t) es cierto}
Donde: R: Relacin, t: Tupla, Pertenece a.

Las operaciones fundamentales del lgebra relacional son:
Seleccin (o)
Proyeccin (H)
Unin ()
Diferencia de conjuntos ()
Producto cartesiano ()
Renombramiento ()

Adems de las operaciones fundamentales hay otras operaciones, por ejemplo:
Interseccin de conjuntos ( )
Reunin natural
Divisin y asignacin (

Estas operaciones se definirn en trminos de las operaciones fundamentales.

Unidad: 4 Modelo Relacional - Algebra Relacional BASE DE DATOS

Lcdo. Wilfredo Daz Pgina 6

En este tipo de consulta se emplean los diferentes operadores de comparacin:
(=,>, <, >=, <=, <>)
Y los operadores lgicos:
(and),(or), (not)
Ejemplo: Tomando las tablas relacional de la base de datos de la Entidad Bancaria.
a. Para seleccionar las tuplas de la relacin prstamo en que la sucursal es Navacerrada hay que escribir

o nombre_sucursal = Navacerrada (prstamo)

Si la relacin prstamo es como se muestra en la base de datos anterior, la relacin que resulta de la consulta es
como la que se muestra a continuacin:


Relacin: Prstamo
Numero_prstamo Nombre_surcusal Importe
P-15 Navacerrada 1.500
P-16 Navacerrada 1.300
RESULTADO DE: o nombre_sucursal = Navacerrada (prstamo)


b. Se pueden buscar todas las tuplas en las que el importe prestado sea mayor que 1.200 escribiendo


o importe>1200 (prstamo)

Relacin: Prstamo
Numero_prstamo Nombre_surcusal Importe
P-14 Centro 1.500
P-15 Navacerrada 1.500
P-16 Navacerrada 1.300
P-23 Moralzarzal 2.000
RESULTADO DE: o importe>1200 (prstamo)

c. Para encontrar las tuplas correspondientes a prstamos de ms de 1.200 concedidos por la sucursal de
Navacerrada, se escribe


o nombr_sucursal = Navacerrada importe>1200 (prstamo)

Relacin: Prstamo
Numero_prstamo Nombre_surcusal Importe
P-15 Navacerrada 1.500
P-16 Navacerrada 1.300
RESULTADO DE: o nombre_sucursal = Navacerrada importe>1200 (prstamo)

Unidad: 4 Modelo Relacional - Algebra Relacional BASE DE DATOS

Lcdo. Wilfredo Daz Pgina 7

2. La operacin proyeccin(H)
La operacin proyeccin es una operacin binaria que proyecta ciertas columnas de la relacin (Tabla) y
desecha las dems, por lo tanto slo se proyecta el subconjunto de sus atributos de una relacin, se eliminan
todas las filas duplicadas. La proyeccin se denota por la letra griega mayscula pi (). Se crea una lista de los
atributos que se desea que aparezcan en el resultado como subndice de .
Sintaxis: H A
1,
A
2
,A
3
,..,A
n
(R) = {t[A
1,
A
2
,A
3
,..,A
n
]: t R

Donde A
1
,...., A
n
es la lista de atributos y "R" la relacin sobre la que se acta.

Ejemplo:

a. La consulta para crear una lista de todos los nmeros de prstamo y del importe de los mismos puede escribirse
como:
H nmero_prstamo, importe (prstamo)

Relacin: Prstamo
Numero_prstamo Importe
P-11 900
P-14 1.500
P-15 1.500
P-16 1.300
P-17 1.000
P-23 2.000
P-93 500
Nmeros de prstamo y sus importes.

Composicin de operaciones relacionales
Es la composicin de los dos operadores de seleccin (o) y proyeccin (H), por lo tanto es importante el hecho
de que el resultado de una operacin relacional sea tambin una relacin.
Sintaxis: H A
1,
A
2
,A
3
,..,A
n
(o condicin (R))

Ejemplo:
b. Considrese la consulta ms compleja Encontrar los clientes que viven en Peguerinos. Hay que escribir:

H nombre_cliente (o ciudad_cliente = Peguerinos (cliente))

Relacin: Cliente
Nombre_cliente
Lpez
Santos


Unidad: 4 Modelo Relacional - Algebra Relacional BASE DE DATOS

Lcdo. Wilfredo Daz Pgina 8

Conjuntos de operaciones en relaciones
Se dice que dos relaciones R(A
1
,A
2
,A
3
,..,A
n
) y S(B
1
,B
2
,B
3
,..,B
n
) son compatible con la unin si tienen el
mismo grado n y si dom(A
i
) = dom(B
i
) para . Esto significa que las dos relaciones tienen el mismo
nmero de atributos y que cada par de atributos correspondientes tienen el mismo dominio.
Podemos definir las tres operaciones UNIN, INTERSECCIN, DIFRENCIA, para dos relaciones compatibles
con R y S.

3. La operacin unin()
El resultado de esta operacin, denotada por R S, es la relacin que incluye tosas las tuplas que estn en R o
en S o en ambas. Las tuplas repetida se eliminan. Por lo tanto R S, la unin de R y S es el conjunto de
elementos que estn en R o S o ambos.
Tngase en cuenta que r y s pueden ser, en general, relaciones temporales que sean resultado de expresiones del
lgebra relacional.
Ejemplo:
a. Una consulta para averiguar el nombre de todos los clientes del banco que tienen una cuenta, un prstamo o
ambas cosas.
De la base de datos Entidad bancaria se puede observar que la relacin cliente no contiene esa informacin,
dado que los clientes no necesitan tener ni cuenta ni prstamo en el banco. Para contestar a esta consulta hace
falta la informacin de la relacin impositor y la de la relacin prestatario. Se conoce la manera de averiguar los
nombres de todos los clientes con prstamos en el banco, y tambin se conoce la manera de averiguar el nombre
de los clientes con cuenta en el banco:
nombre_cliente (prestatario) nombre_cliente (impositor)

Relacin: Prestatario Relacin: impositor
Nombre_cliente Numero_prstamo Nombre_cliente Numero_cuenta
Fernndez P-16 Abril C-102
Gmez P-93 Gmez C-101
Gmez P-15 Gonzlez C-201
Lpez P-14 Gonzlez C-217
Prez P-17 Lpez C-222
Santos P-11
Sotoca P-23
Valdivieso P-17

Para contestar a la consulta hace falta la unin de estos dos conjuntos; es decir, hacen falta todos los nombres de
clientes que aparecen en alguna de las dos relaciones o en ambas. Estos datos se pueden averiguar mediante la
operacin binaria unin, denotada, como en la teora de conjuntos, por . Por tanto, la expresin buscada es

nombre_cliente (prestatario) nombre_cliente (impositor)


Unidad: 4 Modelo Relacional - Algebra Relacional BASE DE DATOS

Lcdo. Wilfredo Daz Pgina 9

Nombre de todos los clientes que tienen un prstamo o una cuenta
Nombre_cliente
Abril
Fernndez
Gmez
Gonzlez
Lpez
Prez
Ruprez
Santos
Sotoca
Valdivieso

4. La operacin diferencia de conjuntos ()
La operacin diferencia de conjuntos, denotada por , permite buscar las tuplas que estn en una relacin pero
no en la otra. La expresin R S da como resultado una relacin que contiene las tuplas que estn en R pero no
en S. Es importante resaltar que R S es diferente a S R
Ejemplo:
a. Se pueden buscar todos los clientes del banco que tienen abierta una cuenta pero no tienen concedido ningn
prstamo escribiendo

nombre_cliente (impositor) nombre_cliente (prestatario)

Nombre_cliente
Abril
Gonzlez
Ruprez
Clientes con cuenta abierta pero sin prstamo concedido.


5. La operacin interseccin de conjuntos ()
La primera operacin adicional del lgebra relacional que se definir es la interseccin de conjuntos (). El
resultado de esta operacin, denotado por R S, es una relacin que incluye las tuplas que estn tanto en R como en
S. Por lo tanto R S, el conjunto de elementos que aparecen en ambos R y S.
Se puede volver a escribir cualquier expresin del lgebra relacional utilizando la interseccin de conjuntos
sustituyendo la operacin interseccin por un par de operaciones de diferencia de conjuntos, de la manera
siguiente:
R S = R (R S)
Por tanto, la interseccin de conjuntos no es una operacin fundamental y no aade potencia al lgebra
relacional. Sencillamente, es ms conveniente escribir r s que r (r s).

Unidad: 4 Modelo Relacional - Algebra Relacional BASE DE DATOS

Lcdo. Wilfredo Daz Pgina 10

Ejemplo:
a. Se desea averiguar todos los clientes que tienen un prstamo concedido y una cuenta abierta. Utilizando la
interseccin de conjuntos se puede escribir
nombre_cliente (prestatario) nombre_cliente (impositor)


Clientes con una cuenta abierta y un prstamo en el banco


6. La operacin producto cartesiano()
La operacin producto cartesiano, denotada por un aspa (), permite combinar informacin de cualesquiera
dos relaciones. El producto cartesiano de las relaciones R1 y R2 como R1 R2. Por lo tanto la operacin
producto consiste en la realizacin de un producto cartesiano entre dos tablas dando como resultado todas las
posibles combinaciones entre los registros de la primera y los registros de la segunda.
Recurdese que las relaciones se definen como subconjuntos del producto cartesiano de un conjunto de
dominios. A partir de esta definicin ya se debe tener una intuicin sobre la definicin de la operacin producto
cartesiano. Sin embargo, dado que el mismo nombre de atributo puede aparecer tanto en R1 como en R2, hay que
crear un esquema de denominaciones para distinguir entre ambos atributos. En este caso se logra adjuntando al
atributo el nombre de la relacin de la que proviene originalmente.

Sintaxis: R1 R2 = {(a,b): a R1 b R2

R1 = {s,t}
R2 = {u,v,w}
R1 R 2 = {s,t} {u,v,w} = {(s,u),(s,v),(s,w),(t,u),(t,v),(t,w)}

o R1.k = R2.k (R1R2)
Donde: K es clave de los atributos de las relaciones R1 y R2

Ejemplo:
Por ejemplo, el esquema de relacin de R = (prestatario prstamo) es (prestatario.nombre_cliente,
prestatario.nmero_prstamo, prstamo.nombre_sucursal, prstamo.nmero_prstamo, prstamo.importe)
Con este esquema se puede distinguir entre prestatario.nmero_prstamo y prstamo.nmero_prstamo.
Para los atributos que slo aparecen en uno de los dos esquemas se suele omitir el prefijo con el nombre de la
relacin. Esta simplificacin no genera ambigedad alguna. Por tanto, se puede escribir el esquema de relacin
de R como
(nombre_cliente, prestatario.nmero_prstamo, nombre_sucursal, prstamo.nmero_prstamo,importe)
Nombre_cliente
Gmez
Prez
Santos
Unidad: 4 Modelo Relacional - Algebra Relacional BASE DE DATOS

Lcdo. Wilfredo Daz Pgina 11



a. Se desea averiguar los nombres de todos los clientes que tienen concedido un prstamo en la sucursal de
Navacerrada. Se necesita para ello informacin de las relaciones prstamo y prestatario. Si se escribe
o nombre_sucursal = Navacerrada (prestatario prstamo)

Relacin: Prstamo Relacin: Prestatario
Numero_prstamo Nombre_surcusal Importe Nombre_cliente Numero_prstamo
P-11 Collado Mediano 900 Santos P-17
P-14 Centro 1.500 Gmez P-23
P-15 Navacerrada 1.500 Lpez P-15
P-16 Navacerrada 1.300 Sotoca P-14
P-17 Centro 1.000 Prez P-93
P-23 Moralzarzal 2.000 Gmez P-11
P-93 Becerril 500 Valdivieso P-17
Fernndez P-16


Nombre_cliente Prestatario.numero_cliente Prstamo.numero_cliente Nombre_surcusal Importe
Santos P-17 P-15 Navacerrada 1.500
Santos P-17 P-16 Navacerrada 1.300
Gmez P-23 P-15 Navacerrada 1.500
Gmez P-23 P-16 Navacerrada 1.300
Lpez P-15 P-15 Navacerrada 1.500
Lpez P-15 P-16 Navacerrada 1.300
Sotoca P-14 P-15 Navacerrada 1.500
Sotoca P-14 P-16 Navacerrada 1.300
Prez P-93 P-15 Navacerrada 1.500
Prez P-93 P-16 Navacerrada 1.300
Gmez P-11 P-15 Navacerrada 1.500
Gmez P-11 P-16 Navacerrada 1.300
Valdivieso P-17 P-15 Navacerrada 1.500
Valdivieso P-17 P-16 Navacerrada 1.300
Fernndez P-16 P-15 Navacerrada 1.500
Fernndez P-16 P-16 Navacerrada 1.300
RESULTADO DE: o nombre_sucursal = Navacerrada (prestatario prstamo)


b. Dado que slo se desea obtener nombre_cliente, se realiza una proyeccin:


nombre_cliente (oprestatario.nmero_prstamo=prstamo.nmero_prstamo (onombre_sucursal = Navacerrada
(prestatario prstamo)))

Nombe_cliente
Fernndez
Lpez



Unidad: 4 Modelo Relacional - Algebra Relacional BASE DE DATOS

Lcdo. Wilfredo Daz Pgina 12

7. La operacin renombramiento

EN PROCESO DE DESARROLLO.