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