Tema 3. El modelo Relacional Juan Ignacio Rodr´ıguez de Leon ´ Resumen Presenta el modelo entidad-relacion. ´ Vision ´ de alto nivel de las cuestiones referentes a diseno ˜ de bases de datos y los problemas encontrados al intentar reflejar la sem´antica de aplicaciones reales dentro de los confines de un modelo de datos. Conceptos b´asicos. Restricciones. Claves. Cuestiones de diseno. ˜ Diagrama entidad-relacion. ´ Conjuntos de entidades d´ebiles. Caracter´ısticas del modelo E-R extendido. Diseno ˜ de un esquema de base de datos E-R. Reduccion ´ de un esquema E-R a tablas. El lenguaje de modelado unificado UML
El modelo Relacional En este cap´ıtulo se estudia en primer lugar los fundamentos del modelo relacional, que proporciona una forma muy simple y potente de representar datos. A continuacion ´ se describen tres lenguajes formales de consulta; los lenguajes de consulta se usan para especificar las solicitudes de informacion. ´ Los tres que se estudian en este cap´ıtulo no son comodos de usar, pero a ´ cambio sirven como base formal para lenguajes de consulta que s´ı lo son y que se estudiar´an m´as adelante.
1.
La estructura de las bases de datos relacionales
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 relacion ´ 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 matem´atico de relacion, ´ del que toma su nombre el modelo de datos relacional. Las columnas de cada tabla representan atributos (igual que en el modelo E-R en el Cap´ıtulo 2). Para cada atributo hay un conjunto de valores permitidos, llamado dominio de ese atributo. Formalmente se define una relacion ´ como un subconjunto del producto cartesiano de los dominios de cada atributo. Si la relacion ´ R tiene como atributos a1 , a2 , . . . , an , siendo D1 , D2 , . . . , Dn los dominios correspondientes, entonces R ⊂ D1 × D2 × . . . × Dn La unica diferencia con el modelo matem´atico es que se han asignado nom´ bres a los atributos. Como las tablas son esencialmente relaciones, se utilizar´an los t´erminos matem´aticos relaci´on y tupla en lugar de los t´erminos tabla y fila. Dado que las relaciones son conjuntos se utiliza la notacion ´ matem´atica t ∈ r para denotar que la tupla t est´a en la relacion ´ r. Se utiliza la notacion ´ t[atributo]
1
2
´ EL ALGEBRA RELACIONAL
2
para denotar el valor de t en el atributo atributo. El orden de las tuplas es irrelevante, como en todo conjunto matem´atico. Se exigir´a que, para toda relacion ´ r, los dominios de los atributos de r sean atomicos (indivisibles). ´ Un valor de dominio que es miembro de todos los dominios posibles es el valor nulo (NULL), que indica que el valor es desconocido o no existe. Los valores nulos crean dificultades al acceder o modificar la base de datos y, por tanto, deben evitarse en lo posible. Se adopta el convenio de utilizar nombres en minusculas para las relaciones ´ y nombres que comiencen por una letra mayuscula para los esquemas de las ´ relaciones. Siguiendo esta notacion, ´ se utilizar´a Esquema-cuenta para denotar el esquema de la relacion ´ cuenta. Por tanto, Esquema−cuenta = (numero−cuenta, nombre−sucursal, saldo) y se representa que cuenta es una relacion ´ de Esquema-cuenta mediante: cuenta(Esquema−cuenta)
1.1.
Claves
Los conceptos de superclave, clave candidata y clave primaria, explicadas en el tema 2, son equivalentes en el modelo relacional. Adem´as, fruto de la conversion ´ hecha del modelo E-R al relacional, en la que aparec´ıan nuevas tablas y atributos, aparece la clave externa o for´anea. Una clave externa es cuando una relacion ´ incluye entre sus atributos la clave primaria de otra relacion. ´ La primera relacion ´ se denomina relaci´on referenciante, la segunda , relaci´on referenciada.
1.2.
Diagramas de esquema
Un diagramas de esquema representa el esquema de la base de datos, junto con las dependencias de clave primaria y externa. Cada relacion ´ aparece como un cuadro con los atributos listados dentro de e´ l y el nombre de la relacion ´ encima. Una l´ınea horizontal separa los atributos que forman la clave primaria del resto. A diferencia de los diagramas E-R, aqu´ı se muestran las claves externas.
2.
El a´ lgebra relacional
El a´ 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 relacion. ´ Las operaciones fundamentales del a´ lgebra relacional son selecci´on, proyecci´on, uni´on, diferencia de conjuntos, producto cartesiano y renombramiento. Existen otras operaciones no fundamentales, (en el sentido de que se pueden definir usando las elementales) como pueden ser la intersecci´on de conjuntos, la reuni´on natural, la divisi´on y la asignaci´on.
2
´ EL ALGEBRA RELACIONAL
2.1.
3
Operaciones fundamentales
Las operaciones seleccion, ´ proyeccion ´ y renombramiento se denominan unarias porque operan sobre una sola relacion. ´ Las otras tres operaciones operan sobre pares de relaciones y se denominan, por lo tanto, operaciones binarias. 2.1.1.
La operacion ´ seleccion ´ σ
La operacion ´ seleccion ´ selecciona tuplas que satisfacen un predicado dado. Se utiliza la letra griega sigma minuscula (σ) para denotar la seleccion. ´ ´ El predicado aparece como sub´ındice de σ. La relacion ´ del argumento se da entre par´entesis a continuacion ´ de σ. Por tanto, para seleccionar las tuplas de la relacion ´ pr´estamo en que la sucursal es ((Navacerrada)) hay que escribir σnombre−sucursal=Navacerrada (Prestamo) Se permiten realizar comparaciones usando los operadores =, ,, o ≥ en el predicado de seleccion. ´ Adem´as, se pueden combinar varios predicados en uno mayor utilizando las conectivas logicas y (∧) y o (∨). El predicado de ´ seleccion ´ puede incluir comparaciones entre dos atributos. Dado que el valor especial nulo indica ((valor desconocido o inexistente)), cualquier comparacion ´ que implique a un valor nulo se evalua ´ como falsa. 2.1.2.
La operacion ´ proyeccion ´ π
La operacion ´ proyeccion ´ es una operacion ´ unaria que devuelve la relacion ´ pasada como argumento, excluyendo algunos atributos. En otras palabras, nos permite suprimir columnas. Dado que las relaciones son conjuntos, se eliminan las filas duplicadas en la relacion ´ resultante. La proyeccion ´ se denota por la letra griega mayuscula pi (Π) ´ Se crea una lista de los atributos que se desea que aparezcan en el resultado como sub´ındice de Π. La relacion ´ argumento se escribe a continuacion ´ entre par´entesis. Por ejemplo, la consulta para obtener los numeros de pr´estamo y el importe ´ de la relacion ´ prestamo (suprimiendo el tercer atributo, nombre sucursal), ser´ıa: Πnumero 2.1.3.
prestamo,importe (prestamo)
Composicion ´ de operaciones relacionales
El resultado de una operacion ´ relacional es tambi´en una relacion. ´ Por ejemplo, la expresion: ´ Πnombre−cliente (σciudad−cliente=”Peregrinos” (cliente)) Es v´alida porque el resultado de σciudad−cliente=”Peregrinos” (cliente) es otra relacion, ´ que sirve como argumento de la proyeccion ´ Π. En general, las operaciones del a´ lgebra relacional pueden componerse para formar una expresion ´ del a´ lgebra relacional, de forma equivalente a la composicion ´ de operaciones aritm´eticas (como + , − , × y ÷) para formar expresiones aritm´eticas.
2
´ EL ALGEBRA RELACIONAL
2.1.4.
4
La operacion ´ union ´ ∪
La operacion ´ Union ´ es equivalente a la union ´ expresada en teor´ıa de conjuntos, e incluso se representa con el mismo s´ımbolo, ∪ se debe asegurar que las uniones se realicen entre relaciones compatibles. Para que una operacion ´ union ´ r ∪ s sea v´alida deben cumplirse dos condiciones: 1. Las relaciones r y s deben ser de la misma aridad. Es decir, deben tener el mismo numero de atributos. ´ 2. Los dominios de los atributos i-´esimos de r y de s deben ser iguales para todo i. 2.1.5.
La operacion ´ diferencia de conjuntos −
La operacion ´ diferencia de conjuntos, denotada por −, permite buscar las tuplas que est´en en una relacion ´ pero no en la otra. La expresion ´ r − s da como resultado una relacion ´ que contiene las tuplas que est´an en r pero no en s. Como en el caso de la operacion ´ union, ´ hay que asegurarse de que las diferencias de conjuntos se realicen entre relaciones compatibles. 2.1.6.
La operacion ´ producto cartesiano ×
La operacion ´ producto cartesiano se denota por una aspa (×), y permite combinar informacion ´ de cualesquiera dos relaciones. Sea r = r1 × r2 . El esquema de r contendr´a todos los atributos de r1 y de r2 . ¿Qu´e tuplas aparecer´an en r?. Se crea una tupla en r para todas y cada una de las posibles combinaciones entre las tuplas de r1 y las de r2 . La relacion ´ r es, por tanto, una relacion ´ de gran tamano. ˜ Si la relacion ´ r1 contiene n tuplas y la relacion ´ r2 contiene m, en r habr´a n · m tuplas. 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 relacion ´ de la que proviene originalmente. 2.1.7.
La operacion ´ renombramiento ρ
A diferencia de las relaciones de la base de datos, los resultados de las expresiones de a´ lgebra relacional no tienen un nombre que se pueda utilizar para referirse a ellas. Resulta util ´ poder ponerles nombre; el operador renombramiento, denotado por la letra griega rho minuscula (ρ), permite realizar esta ´ tarea. Supongase que una expresion ´ ´ del a´ lgebra relacional E tiene aridad n. Por tanto, la expresion ´ ρx(A1 , A2 , . . . , An )(E) devuelve el resultado de la expresion ´ E, con el nombre x y con los atributos con el nombre cambiado a A1 , A2 , . . . , An
3
5
OTRAS OPERACIONES
3.
Otras operaciones
Las operaciones fundamentales del a´ lgebra relacional son suficientes para expresar cualquier consulta del a´ lgebra relacional. Sin embargo, algunas consultas habituales resultan complicadas. Por ello se definen otras operaciones que, si bien no anaden potencia al a´ lgebra, simplifican las consultas. ˜ 3.0.8.
La operacion ´ interseccion ´ de conjuntos ∩
La intersecci´on de conjuntos se representa con el s´ımbolo ∩. Sea r = r1 ∩ r2 , entonces toda tupla contenida en r estar´a tambi´en contenida en r1 y r2 La interseccion ´ de conjuntos no es una operacion ´ fundamental, ya que r ∩ s ≡ r − (r − s). 3.0.9.
La operacion ´ reunion ´ natural Z
Generalmente, las consultas que implican un producto cartesiano incluyen un operador seleccion ´ sobre el resultado del producto cartesiano. La reunion ´ natural es una operacion ´ binaria que permite combinar ciertas selecciones y un producto cartesiano en una sola operacion. ´ Se denota por el s´ımbolo de la ((reunion)) ´ Z. La operacion ´ reunion ´ natural forma un producto cartesiano de sus dos argumentos, realiza una seleccion ´ forzando la igualdad de los atributos que aparecen en ambos esquemas de relacion ´ y, finalmente, elimina los atributos duplicados. La operacion ´ reuni´on zeta es una extension ´ de la operacion ´ reunion ´ natural, que permite combinar una seleccion ´ cualquiera y un producto cartesiano en una sola operacion. ´ Consid´erense las relaciones r(R) y s(S), y sea θ un predicado de los atributos del esquema R ∪ S. La operacion ´ reunion ´ zeta r Zθ s se define as´ı: r Zθ s = σθ (r × s) 3.0.10.
La operacion ´ division ´ ÷
La operacion ´ divisi´on se denota por ÷, y resulta adecuada para las consultas que incluyen la expresion ´ ((para todos)) Formalmente, sean r(R) y s(S) relaciones tal que S ⊆ R, es decir, que todos los atributos del esquema S est´an tambi´en en el esquema R. La relacion ´ r ÷ s es una relacion ´ del esquema R − S (es decir, del esquema que contiene todos los atributos del esquema R que no est´an en el esquema S). Una tupla t est´a en r ÷ s si y solo ´ si se cumplen estas dos condiciones: 1. t est´a en ΠR−S (r) 2. Por cada tupla ts ∈ s hay una tupla tr ∈ r que cumple las dos condiciones siguientes: a) tr [S] = ts [S] b) tr [R − S] = t
4
´ OPERACIONES DEL ALGEBRA RELACIONAL EXTENDIDA
3.0.11.
6
La operacion ´ asignacion ´ ←
La operacion ´ asignaci´on se representa con el s´ımbolo ← y nos permite escribir una expresion ´ del a´ lgebra relacional por partes, asignando el resultado de expresiones a una relacion ´ temporal. Con la operacion ´ asignacion ´ se pueden escribir las consultas como programas secuenciales consistentes en una serie de asignaciones seguida de una ultima expresion, ´ ´ cuyo valor se muestra como resultado.
4.
Operaciones del a´ lgebra relacional extendida
Las operaciones b´asicas del a´ lgebra relacional se han ampliado de varias maneras. Una ampliacion ´ sencilla es permitir operaciones aritm´eticas como parte de la proyeccion. ´ Una ampliacion ´ importante es permitir operaciones de agregacion, ´ como el c´alculo de la suma de los elementos de un conjunto, o su media. Otra ampliacion ´ importante es la operacion ´ reunion ´ externa, que permite a las expresiones del a´ lgebra relacional trabajar con los valores nulos que modelan la informacion ´ que falta.
4.1.
Proyeccion ´ generalizada
La operacion ´ proyeccion ´ generalizada ampl´ıa la operacion ´ proyeccion ´ permitiendo que se utilicen funciones aritm´eticas en la lista de proyeccion. ´ La operacion ´ proyeccion ´ generalizada tiene la forma: ΠF1 ,F2 ,...,Fn (E) donde E es cualquier expresion ´ del a´ lgebra relacional y F1 , F2 , . . . , Fn son expresiones aritm´eticas. De forma trivial, la expresion ´ aritm´etica puede ser simplemente un atributo o una constante.
4.2.
Funciones de agregacion ´
Las funciones de agregaci´on son funciones que toman una coleccion ´ de valores y devuelven como resultado un unico valor. Las funciones de agregacion ´ ´ m´as habituales son sum (Suma), avg (Media aritm´etica), count (numero de elemen´ tos), min y max (M´ınimo y m´aximo, respectivamente). En la siguiente tabla se muestran algunos ejemplos de funciones de agregacion. ´ Conjunto de valores {1, 1, 3, 4, 4, 11} {1, 1, 3, 4, 4, 11} {1, 1, 3, 4, 4, 11} {1, 1, 3, 4, 4, 11} {1, 1, 3, 4, 4, 11}
funcion ´ sum avg count min max
resultado 24 4 6 1 11
La expresion ´ del a´ lgebra relacional para el uso de una funcion ´ de agregacion ´ es G f (a) (R)
4
´ OPERACIONES DEL ALGEBRA RELACIONAL EXTENDIDA
7
Donde f es la funcion ´ de agregacion, ´ R es la relacion ´ considerada, y a es el atributo a utilizar. Por ejemplo: Gsum(sueldo) (empleado) Es una relacion atributo, que contiene una sola fila con un ´ con un unico ´ valor correspondiente a la suma de los sueldos de todos los empleados. Las colecciones en las que operan las funciones de agregacion ´ pueden tener valores repetidos; el orden en el que aparezcan los valores no tiene importancia. Pero hay casos en los que se desea borrar los valores repetidos antes de calcular la funcion ´ de agregacion. ´ Para ello hay que utilizar los mismos nombres de funciones que antes, con la cadena de texto -distinct al final del nombre de la funcion ´ (por ejemplo, count-distinct) Es posible dividir una relacion ´ en grupos, y aplicar las funciones de agregacion ´ de forma independiente en cada grupo. La sintaxis ser´ıa as´ı: G1 ,G2 ,...,Gn GF1 (a1 ),F2 (a2 ),...,Fm (am ) (E)
donde E es cualquier expresion ´ del a´ lgebra relacional; G1 , G2 , . . . , Gn constituyen una lista de atributos que indican como se realiza la agrupacion, ´ ´ cada Fi es una funcion ´ de agregacion ´ y cada Ai es el nombre de un atributo. La relacion ´ resultante consistir´a en las tuplas con los atributos usado para agrupar, m´as los resultado de las funciones de agregacion. ´ .
4.3.
Reunion ´ externa
La operacion ´ reuni´on externa es una ampliacion ´ de la operacion ´ reunion ´ para trabajar con la informacion ´ que falta. Esta operacion ´ tiene tres formas diferentes: reuni´on externa por la izquierda, denotada por X, reuni´on externa por la derecha, denotada por Y y reuni´on externa completa, denotada por [. La reunion ´ externa por la izquierda (X) toma todas las tuplas de la relacion ´ de la izquierda que no coincidan con ninguna tupla de la relacion ´ de la derecha, las rellena con valores nulos en todos los dem´as atributos de la relacion ´ de la derecha y las anade al resultado de la reunion ˜ ´ natural. La reunion ´ externa por la derecha (Y) es sim´etrica de la reunion ´ externa por la izquierda. La reunion ´ externa completa ( [ ) realiza estas dos operaciones, rellenando las tuplas de la relacion ´ de la izquierda que no coincidan con ninguna tupla de la relacion ´ de la derecha y las tuplas de la relacion ´ de la derecha que no coincidan con ninguna tupla de la relacion endolas al ´ de la izquierda, y anadi´ ˜ resultado de la reunion. ´
4.4.
Valores nulos
A menudo hay varias formas de tratar los valores nulos. Las operaciones y las comparaciones con valores nulos se deber´ıan evitar siempre que sea posible. Dado que el valor especial nulo indica “valor desconocido o no existente”, cualquier operacion ´ aritm´etica que incluya valores nulos devolver´a un valor
5
´ DE LA BASE DE DATOS MODIFICACION
8
nulo. De manera similar, cualquier comparacion ´ (como , ≥ y ,) que incluya un valor nulo se evalua desconocido. ´ al nuevo valor logico ´ Las operaciones logicas tratan los valores desconocidos tal y como se mues´ tra en la siguiente tabla. op1 cierto falso desconocido cierto falso desconocido desconocido
operador ∧ ∧ ∧ ∨ ∨ ∨ ¬
op2 desconocido desconocido desconocido desconocido desconocido desconocido —
resultado desconocido falso desconocido cierto desconocido desconocido desconocido
A la hora de efectuar operaciones en el a´ lgebra relacional que impliquen valores nulos, hay que tener en cuenta que las operaciones de proyeccion, ´ union, ´ interseccion ´ y diferencia tratan los valores nulos como cualquier otro valor al eliminar duplicados. Si dos tuplas del resultado de alguna de estas operaciones son exactamente iguales, y ambos tienen nulos en los mismos campos, se tratan como duplicados. La decision ´ es un tanto arbitraria porque sin saber cu´al es el valor real no se sabe si los dos valores nulos son duplicados o no. Para las funciones de agregacion, ´ hay que tener en cuenta que cuando hay nulos en los atributos agregados, la operacion ´ borra los valores nulos del resultado antes de aplicar la agregacion. ´ Si el multiconjunto resultante est´a vac´ıo, el resultado agregado ser´a nulo. Obs´ervese que el tratamiento de los valores nulos aqu´ı es diferente que en las expresiones aritm´eticas ordinarias.
4.5.
Otras operaciones adicionales
Ampliacion α. Es una operacion ´ unaria, que toma una relacion ´ R y crea una relacion ´ resultante que tiene un atributo m´as que la original, cuyos valor se obtienen evaluando una expresion ´ de c´alculo escalar. La sintaxis de la operacion ´ es: Rαcalculo escalar (nombre atributo) Resumen Ω. Permite incorporar operaciones de agregados (cuenta, suma, media, m´aximo, m´ınimo, etc). A partir de una relacion ´ R y de una lista de sus atributos, obtiene otra relacion ´ en cuya cabecera aparecen los atributos de R especificados y un nuevo atributo, con el nombre indiciado, siendo los valores de este ultimo el resultado de evaluar la expresion ´ ´ de agregados. La sintaxis de la operacion ´ es: R(lista atributos)Ωoperaciones agregadas (nombre atributo)
5.
Modificacion ´ de la base de datos
En este apartado se abordar´a la manera de insertar, borrar o modificar informacion ´ de la base de datos.
6
9
VISTAS
5.1.
Borrado
Las solicitudes de borrado se expresan b´asicamente igual que las consultas. Sin embargo, en lugar de mostrar las tuplas al usuario, se eliminan de la base de datos las tuplas seleccionadas. Solo ´ se pueden borrar tuplas enteras; no se pueden borrar valores de atributos concretos. En el a´ lgebra relacional los borrados se expresan mediante r←r−E donde r es una relacion ´ y E es una consulta del a´ lgebra relacional.
5.2.
Insercion ´
Para insertar datos en una relacion ´ hay que especificar la tupla que se va a insertar o escribir una consulta cuyo resultado sea un conjunto de tuplas que vayan a insertarse. El valor de los atributos de las tuplas insertadas deben ser miembros del dominio de cada atributo y las tuplas insertadas deben ser de la aridad correcta. En el a´ lgebra relacional las inserciones se expresan mediante r←r∪E donde r es una relacion ´ y E es una consulta del a´ lgebra relacional.
5.3.
Actualizacion ´
Puede que, en algunas situaciones, se desee modificar un valor de una tupla sin modificar todos los valores de la tupla. Se puede utilizar el operador proyeccion ´ generalizada para realizar esta tarea: r ← ΠF1 ,F2 ,...,Fn (r) donde cada Fi es o bien el i-´esimo atributo de r, si el i-´esimo atributo no est´a actualizado, o una expresion ´ que solo ´ implique constantes y los atributos de r, y que de el nuevo valor del atributo. Si se desea seleccionar varias tuplas de r y solo ´ actualizar esas mismas tuplas, se puede utilizar la expresion ´ siguiente, donde P denota la condicion ´ de seleccion ´ que escoge las tuplas que hay que actualizar: r ← ΠF1 ,F2 ,...,Fn (σP (r)) ∪ (r − σP (r))
6.
Vistas
En los ejemplos propuestos hasta ahora se ha operado en el nivel del modelo logico. Es decir, se ha asumido que el conjunto de relaciones que se da son las ´ relaciones reales guardadas en la base de datos. No es deseable que todos los usuarios puedan ver la totalidad del modelo logico. ´ La seguridad pueden exigir que algunos datos queden ocultos para determinados usuarios. O puede que se desee crear un conjunto personalizado de
7
´ EL CALCULO RELACIONAL DE TUPLAS
10
relaciones que se adapte mejor que el modelo logico a la intuicion ´ ´ de un usuario concreto. Las relaciones que no forman parte del modelo logico pero se hacen visibles ´ a los usuarios como relaciones virtuales se denominan vistas.
6.1.
Definicion ´ de vistas
Las vistas se definen utilizando la instruccion ´ create view. Para definir una vista hay que darle un nombre e indicar la consulta que la va a calcular. La forma de la instruccion ´ create view es create view v as < expresion ´ de consulta > Una vez se ha definido una vista se puede utilizar su nombre para hacer referencia a la relacion ´ virtual, y podr´a usarse como cualquier otra relacion ´ siempre y cuando no se ejecuten sobre ella operaciones de actualizacion.. ´
6.2.
Actualizaciones mediante vistas y valores nulos
las modificaciones de la base de datos expresadas en t´erminos de vistas son problem´aticas, porque deben traducirse en modificaciones de las relaciones reales en el modelo logico de la base de datos, y puede ser que no dispongamos ´ de la informacion ´ necesaria para hacerlo.. Debido a esto generalmente no se permiten las modificaciones en las relaciones de vistas excepto en casos limitados.
6.3.
Vistas definidas utilizando otras vistas
las relaciones de vistas pueden aparecer en cualquier lugar en que pueda hacerlo el nombre de una relacion. ´ Por tanto, se pueden utilizar vistas en la expresion ´ que define otra vista. La expansi´on de vistas es una manera de definir el significado de las vistas definidas en t´erminos de otras vistas. El procedimiento asume que las definiciones de vistas no son recursivas; es decir, ninguna vista se usa en su propia definicion, ´ bien directa o indirectamente a trav´es de otras definiciones de vistas.
7.
El c´alculo relacional de tuplas
Cuando escribimos una expresion ´ del a´ lgebra relacional proporcionamos una serie de procedimientos que generan la respuesta a la consulta. El c´alculo relacional de tuplas, en cambio, es un lenguaje de consulta no procedimental. Describe la informacion ´ deseada sin dar un procedimiento espec´ıfico para obtenerla. Las consultas se expresan en el c´alculo relacional de tuplas como {t | P(t)} Es decir, son el conjunto de todas las tuplas tales que el predicado P es cierto para t. Siguiendo la notacion ´ utilizada previamente, se utiliza t[A] para denotar el valor de la tupla t en el atributo A y t ∈ R r para denotar que la tupla t est´a en la relacion ´ r.
7
´ EL CALCULO RELACIONAL DE TUPLAS
7.1.
11
Consultas de ejemplo
Supongase que se desea averiguar nombre-sucursal, numero-pr´ estamo e ´ ´ importe de los pr´estamos superiores a 1.200 €. {t | t ∈ prestamo ∧ t[importe] > 1200} Supongase que solo estamo, en vez ´ ´ se desea obtener el atributo numero–pr´ ´ de todos los atributos de la relacion ´ pr´estamo. Para escribir esta consulta en el c´alculo relacional de tuplas hay que escribir una expresion ´ para una relacion ´ del esquema (numero–pr´ estamo). Se necesitan las tuplas de (numero–pr´ estamo) ´ ´ tales que hay una tupla en pr´estamo con el atributo importe > 1200. Para expresar esta solicitud hay que utilizar el constructor ((existe)) de la logica ´ matem´atica. La notacion ´ ∃ t ∈ r(Q(t)) se lee ((existe una tupla t en la relacion ´ r tal que el predicado Q(t) es verdadero)). Utilizando esta notacion ´ se puede escribir la consulta ((Averiguar el numero ´ de pr´estamo de todos los pr´estamos por importe superior a 1.200 €como {t | ∃ s ∈ prestamo(t[numeroPrestamo] = s[numeroPrestamo] ∧ s[importe] > 1200)} El truco est´a en que la variable tupla t solo ´ se define para el atributo numero– ´ pr´estamo, dado que es el unico atributo para el que se especifica una condicion. ´ ´ Por tanto, el resultado es una relacion estamo). ´ de (numero-pr´ ´ Otro ejemplo, considerando dos relaciones: ((Averiguar el nombre de todos los clientes que tienen concedido un pr´estamo en la sucursal de Navacerrada)) {t | ∃ s ∈ prestatario(t[numeroPrestamo] = s[numeroPrestamo] ∧∃ u ∈ prestamo(u[numeroPrestamo] = s[numeroPrestamo] ∧u[nombreSucursal] = “Navacerrada”))}
7.2.
Definicion ´ formal
Las expresiones del c´alculo relacional de tuplas son de la forma { t | P(t) } donde P es una formula. En una formula pueden aparecer varias variables ´ ´ tupla. Se dice que una variable tupla es una variable libre a menos que est´e cuantificada mediante ∃ o ∀. Por tanto, en: t ∈ prestamo ∧ ∃ s ∈ cliente(t[nombreSucursal] = s[nombreSucursal]) t es una variable libre. La variable tupla s se denomina variable ligada. Las formulas de c´alculo relacional de tuplas se construyen con a´ tomos. Los ´ a´ tomos tienen una de las formas siguientes: 1. s ∈ r, siendo s una variable tupla y r una relacion ´ (no se permite el uso de 1200 es el conjunto de todos los valores de pr´estamo m´as el valor 1200. Adem´as, dom(¬(t ∈ pr´estamo)) es el conjunto de todos los valores que aparecen en pr´estamo, dado que la relacion ´ pr´estamo se menciona en la expresion. ´ Se dice que una expresion ´ {t | P(t)} es segura si todos los valores que aparecen en el resultado son valores de dom(P).
8
´ EL CALCULO RELACIONAL DE DOMINIOS
7.4.
13
Potencia expresiva de los lenguajes
El c´alculo relacional de tuplas restringido a expresiones seguras es equivalente en potencia expresiva al a´ lgebra relacional b´asica (sin los operadores relacionales extendidos tales como la proyeccion ´ generalizada G y las operaciones de reunion ´ externa).
8.
El c´alculo relacional de dominios
Hay una segunda forma de c´alculo relacional denominada c´alculo relacional de dominios. Esta forma utiliza variables de dominio que toman sus valores del dominio de un atributo, en vez de tomarlos de una tupla completa. El c´alculo relacional de dominios, sin embargo, se halla estrechamente relacionado con el c´alculo relacional de tuplas.
8.1.
Definicion ´ formal
Las expresiones del c´alculo relacional de dominios son de la forma {< x1 , x2 , . . . , xn >| P(x1 , x2 , . . . , xn )} Donde x1 , x2 , . . . , xn representan las variables de dominio y P representa una formula compuesta de a´ tomos, como en el c´alculo relacional de tuplas. ´ Los a´ tomos del c´alculo relacional de dominios tienen una de las formas siguientes: 1. < x1 , x2 , . . . , xn >∈ r, donde r es una relacion ´ con n atributos y x1 , x2 , . . . , xn son variables de dominio o constantes de dominio. 2. x Θ y, donde x a y son variables de dominio y Θ es un operador de comparacion ´ (=, ,, , ≥). Los dominios de x e y deben poder compararse mediante Θ. 3. x Θ c, donde x es una variable de dominio, c una constante del dominio de x y Θ es un operador de comparacion ´ Las formulas se construyen a partir de los a´ tomos utilizando las reglas ´ siguientes: 1. Un a´ tomo es una formula. ´ 2. Si P1 es una formula, tambi´en lo son ¬P1 y (P1 ) ´ 3. Si P1 y P2 son formulas, tambi´en lo son P1 ∨ P2 , P1 ∧ P2 y P1 ⇒ P2 . ´ 4. Si P(s) es una formula en x, siendo x una variable de dominio, entonces ´ ∃ x(P(x)) y ∀ x(P(x)) tambi´en son formulas. ´
8
´ EL CALCULO RELACIONAL DE DOMINIOS
8.2.
14
Seguridad de las expresiones
En el c´alculo relacional de dominios tambi´en es posible escribir expresiones que pueden generar relaciones. Se dice que la expresion ´ {< x1 , x2 , . . . , xn >| P(x1 , x2 , . . . , xn )} es segura si se cumplen las siguientes condiciones: 1. Todos los valores que aparecen en las tuplas de la expresion ´ son valores de dom(P). 2. Para cada subformula ((existe)) de la forma ∃ x(P(x)), la subformula es ´ ´ cierta si y solo ´ si hay un valor x en dom(P) tal que P(x) sea verdadero. 3. Para cada subformula ((para todo)) de la forma ∀ x(P(x)), la subformula es ´ ´ cierta si y solo ´ si P(x) es verdadera para todos los valores de x de dom(P). El proposito de las reglas adicionales es asegurar que se puedan probar las ´ subformulas ((para todo)) y ((existe)) sin tener que probar infinitas posibilidades. ´
8.3.
Potencia expresiva de los lenguajes
Cuando el c´alculo relacional de dominios se restringe a expresiones seguras es equivalente en potencia expresiva al c´alculo relacional de tuplas restringido a expresiones seguras. Dado que se observo´ anteriormente que el c´alculo relacional de tuplas restringido es equivalente al a´ lgebra relacional, los tres lenguajes siguientes son equivalentes: El a´ lgebra relacional b´asica (sin las operaciones extendidas) El c´alculo relacional de tuplas (restringido a expresiones seguras) El c´alculo relacional de dominios (restringido a expresiones seguras)