EL MODELO RACIONAL

El Modelo Racional, se ha establecido como el principal modelo de datos para las aplicaciones de procesos de datos, ya que es simple y facilita el trabajo del programador en comparación a otros modelos. El modelo Racional se basa en un conjunto de tablas. El usuario del sistema de bases de datos puede consultar esas tablas, insertar nuevas tuplas, borrar tuplas y actualizar (modificar) las tuplas.
Hay varios lenguajes para expresar estas operaciones. Se describe tres lenguajes formales de consulta, se usan para especificar las solicitudes de información; estos son más cómodos de usar, pero a cambio sirven como base formal para lenguajes de consulta que sí lo son. El primer lenguaje, el álgebra relacional, forma la base del lenguaje de consulta SQL ampliamente usado; el cálculo relacional de tuplas y el cálculo relacional de dominios(es la base del lenguaje QBE), que son lenguajes declarativos de consulta basados en la lógica matemática.
3.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 les asigna un nombre exclusivo. Cada fila de la tabla representa una relación entre un conjunto de valores. Dado que cada tabla es un conjunto de dichas relaciones, que corresponden entre el concepto de tabla y el concepto matemático de relación.
            3.1.1 Estructura básica
Considérese la tabla cuenta, tiene tres cabeceras de columna: número-cuenta, nombre-sucursal y saldo. Siguiendo la terminología del modelo relacional se puede hacer referencia a estas cabeceras como atributos. Para cada atributo hay un conjunto de valores permitidos, llamado  dominio de ese atributo. Para el atributo nombre-sucursal, por ejemplo, el dominio es el conjunto de los nombres de las sucursales.
Supongamos que D1 denota el conjunto de todos los números de cuenta, D2 el conjunto de todos los nombres de sucursal y D3 el conjunto de los saldos. Todas las filas de cuenta deben consistir en una tupla (v1, v2, v3), donde v1 es un número de cuenta (es decir, v1 está en el dominio D1), v2 es un nombre de sucursal (es decir, v2 está en el dominio D2) y v3 es un saldo (es decir, v3 está en el dominio D3). 


Como las tablas son esencialmente relaciones, se utilizarán los términos matemáticos relación y tupla en lugar de los términos tabla y fila. Una variable tupla es una variable que representa a una tupla; en otras palabras, una tupla que representa al conjunto de todas las tuplas.
En la relación cuenta hay siete tuplas. Dado que las relaciones son conjuntos se utiliza la notación matemática t r para denotar que la tupla t está en la relación r.
Un dominio es atómico si los elementos del dominio se consideran unidades indivisibles. Por ejemplo, el conjunto de los enteros es un dominio atómico, pero el conjunto de todos los conjuntos de enteros es un dominio no atómico. La diferencia es que no se suele considerar que los enteros tengan subpartes, pero sí se considera que los conjuntos de enteros las tienen; por ejemplo, los enteros que forman cada conjunto.
Es posible que varios atributos tengan el mismo dominio Es posible que los atributos nombre-cliente y nombre-empleado tengan el mismo dominio, el conjunto de todos los nombres de personas, que en el nivel físico son cadenas de caracteres. Los dominios de saldo y nombre-sucursal, por otra parte, deberían ser distintos. En el nivel físico, tanto los nombres de clientes como los nombres de sucursales son cadenas de caracteres. Sin embargo, en el nivel lógico puede que se desee que nombre-cliente y nombre-sucursal tengan dominios diferentes. Un valor de dominio que es miembro de todos los dominios posibles es el valor nulo, que indica que el valor es desconocido o no existe.

            3.1.2 Esquema de la base de datos
Cuando se habla de bases de datos se debe diferenciar entre el esquema de la base de datos, o diseño lógico de la misma, y el ejemplar de la base de datos, que es una instantánea de los datos de la misma en un momento dado.
El concepto de relación se corresponde con el concepto de variable de los lenguajes de programación. El concepto de esquema de la relación se corresponde con el concepto de definición de tipos de los lenguajes de programación.
Se adopta el convenio de utilizar nombres en minúsculas para las relaciones y nombres que comiencen por una letra mayúscula para los esquemas de las relaciones. Siguiendo esta notación se utilizará Esquema-cuenta para denotar el esquema de la relación de la relación cuenta. Por tanto,

Esquema-cuenta = (número-cuenta, nombre-sucursal, saldo)

Los esquemas de las relaciones incluyen una lista de los atributos y de sus dominios correspondientes.
El concepto de ejemplar de relación se corresponde con el concepto de valor de una variable en los lenguajes de programación, cuyo valor puede cambiar con el tiempo, e incluso el contenido del ejemplar de una relación cuando la relación se actualiza. El utilizar atributos comunes en los esquemas de las relaciones es una manera de relacionar las tuplas de relaciones diferentes. Por ejemplo, supóngase que se desea obtener información sobre todas las cuentas abiertas en sucursales ubicadas en Arganzuela. Primero se busca en la relación sucursal para encontrar los nombres de todas las sucursales sitas en Arganzuela. Luego, para cada una de ellas, se mira en la relación cuenta para encontrar la información sobre las cuentas abiertas en esa sucursal. Esto no es sorprendente: recuérdese que los atributos que forma la clave primaria de un conjunto de entidades fuertes aparecen en la tabla creada para representar el conjunto de entidades, así como en las tablas creadas para crear relaciones en las que participar el conjunto de entidades.

            3.1.3 Claves

Por ejemplo, en Esquema-sucursal, tanto {nombre-sucursal} como {nombre-sucursal, ciudad-sucursal} son superclaves. {nombre-sucursal, ciudad-sucursal} no es una clave candidata porque {nombre-sucursal} es un subconjunto de {nombre-sucursal, ciudad-sucursal} y {nombre-sucursal} es una superclave. Sin embargo, {nombre-sucursal} es una clave candidata, y servirá también como clave primaria para estos fines. El atributo ciudad-sucursal no es una superclave, dado que dos sucursales de la misma ciudad pueden tener nombres diferentes (y diferentes volúmenes de activos).

Una superclave de un conjunto de entidades es un conjunto de uno o más atributos que, tomados colectivamente, permiten identificar unívocamente una entidad en un conjunto de entidades. Se elige una superclave mínima para cada conjunto de entidades de entre sus superclaves; la superclave mínima se denomina la clave primaria del conjunto de entidades. Análogamente, un conjunto de relaciones es un conjunto de uno o más atributos que, tomados colectivamente, permiten identificar unívocamente una relación en un conjunto de relaciones. De igual forma se elige una superclave mínima para cada conjunto de relaciones de entre todas sus superclaves; ésta es la clave primaria del conjunto de relaciones.
Un conjunto de entidades que no tiene suficientes atributos para formar una clave primaria se denomina conjunto de entidades débiles. Un conjunto de entidades que tiene una clave primaria se denomina conjunto de entidades fuertes.







Sea R el esquema de una relación. Si se dice que un subconjunto K de R es una superclave de R para las relaciones r(R) en las que no hay dos tuplas diferentes que tengan los mismos valores en todos los atributos de K. Es decir, si t1 y t2 están en R y t1 t2, entonces t1[K] t2[K]. Si el esquema de una base de datos relacional se basa en las tablas derivadas de un esquema E-R es posible determinar la clave primaria del esquema de una relación a partir de las claves primarias de los conjuntos de entidades o de relaciones de los que se deriva el esquema:
• Conjunto de entidades fuertes. La clave primaria del conjunto de entidades se convierte en la clave primaria de la relación.
• Conjunto de entidades débiles. La tabla y, por tanto, la relación correspondientes a un conjunto de entidades débiles incluyen:
— Los atributos del conjunto de entidades débiles.
— La clave primaria del conjunto de entidades fuertes del que depende el conjunto de entidades débiles.
La clave primaria de la relación consiste en la unión de la clave primaria del conjunto de entidades fuertes y el discriminante del conjunto de entidades débil.
• Conjunto de relaciones. La unión de las claves primarias de los conjuntos de entidades relacionados se transforma en una superclave de la relación. Si la relación es de varios a varios, esta superclave es también la clave primaria.
Tablas combinadas. Un conjunto binario de relaciones de varios a uno entre A y B puede representarse mediante una tabla que consista en los atributos de A y en los atributos (si hay alguno) del conjunto de relaciones. La clave primaria de la entidad «varios» se transforma en la clave primaria de la relación (es decir, si el conjunto de relaciones es de varios a uno entre A y B, la clave primaria de A es la clave primaria de la relación). 
• Atributos multivalorados.  Un atributo multivalorado M se representa mediante una tabla consistente en la clave primaria del conjunto de entidades o de relaciones del que M es atributo y en una columna C que guarda un valor concreto de M.

            3.1.4 Diagramas de esquema
Un esquema de bases de datos, junto con las dependencias de clave primaria y externa, se puede mostrar gráficamente mediante diagramas de esquema.
No hay que confundir un diagrama de esquema con un diagrama E-R. En particular, los diagramas E-R no muestran explícitamente  los atributos clave externa, mientras que los diagramas de esquema sí.
           
            3.1.5 Lenguajes de consulta
Un lenguaje de consulta es un lenguaje en el que un usuario solicita información de la base de datos. Estos lenguajes suelen ser de un nivel superior que el de los lenguajes de programación habituales. Los lenguajes de consulta pueden clasificarse como procedimentales o 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. En los lenguajes no procedimentales el usuario describe la información deseada sin dar un procedimiento concreto para obtener esa información.


3.2 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 relación. Las operaciones fundamentales del álgebra relacional son selección, proyección, unión, diferencia de conjuntos, producto cartesiano y renombramiento. Además de las operaciones fundamentales hay otras operaciones, por ejemplo, intersección de conjuntos, reunión natural, división y asignación.
3.2.1.1. La operación selección
La operación selección selecciona tuplas que satisfacen un predicado dado. Se utiliza la letra griega sigma minúscula (σ) para denotar la selección. El predicado aparece como subíndice de σ. La relación del argumento se da entre paréntesis a continuación de σ. Por tanto, para seleccionar las tuplas de la relación préstamo en que la sucursal es «Navacerrada» hay que escribir:
σnombre-sucursal = «Navacerrada» (préstamo)

3.2.1.2. La operación proyección
Supóngase que se desea hacer una lista de todos los números de préstamo y del importe de los mismos, pero sin que aparezcan los nombres de las sucursales. La operación proyección permite producir esta relación. La operación proyección es una operación unaria que devuelve su relación de argumentos, excluyendo algunos argumentos.

            3.2.1.3. Composición de operaciones relacionales
Es importante el hecho de que el resultado de una operación relacional sea también una relación. Considérese la consulta más compleja «Encontrar los clientes que viven en Peguerinos». Hay que escribir:

Πnombre-cliente (σciudad-cliente = «Peguerinos» (cliente))

3.2.1.4. La operación unión
Considérese una consulta para averiguar el nombre de todos los clientes del banco que tienen una cuenta, un préstamo o ambas cosas. Obsérvese que la relación cliente no contiene esa información, dado que los clientes no necesitan tener ni cuenta ni préstamo en el banco.
Para contestar a esta consulta hace falta la información de la relación impositor y la de la relación prestatario. Se conoce la manera de averiguar los nombres de todos los clientes con préstamos en el banco:
Πnombre-cliente (prestatario)

3.2.1.5. La operación diferencia de conjuntos
La operación diferencia de conjuntos, denotada por –, permite buscar las tuplas que estén en una relación pero no en la otra. La expresión r s da como resultado una relación que contiene las tuplas que están en r pero no en s.
Se pueden buscar todos los clientes del banco que tienen abierta una cuenta pero no tienen concedido ningún préstamo escribiendo
Πnombre-cliente (impositor) Πnombre-cliente (prestatario)

3.2.1.6. La operación producto cartesiano
La operación producto cartesiano, denotada por un aspa (×), permite combinar información de cualesquiera dos relaciones. El producto cartesiano de las relaciones r1 y r2 como r1 × r2.
Las relaciones se definen como subconjuntos del producto cartesiano de un conjunto de dominios. A partir de esta definición ya se debe tener una intuición sobre la definición de la operación 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 relación de la que proviene originalmente.

            3.2.1.7. La operación renombramiento
A diferencia de las relaciones de la base de datos, los resultados de las expresiones de álgebra relacional no tienen un nombre que se pueda utilizar para referirse a ellas. Resulta útil poder ponerles nombre; el operador renombramiento, denotado por la letra griega rho minúscula (ρ), permite realizar esta tarea. Dada una expresión E del álgebra relacional, la expresión  ρx (E) devuelve el resultado de la expresión E con el nombre x. Las relaciones r por sí mismas se consideran expresiones (triviales) del álgebra relacional. Por tanto, también se puede aplicar la operación renombramiento a una relación r para obtener la misma relación con un nombre nuevo.

3.3 MODIFICACION DE LA BASE DE DATOS
            3.3.1 Borrado
En lugar de mostrar las tuplas al usuario, se eliminan de la base de datos las tuplas seleccionadas. Sólo se pueden borrar tuplas enteras; no se pueden borrar valores de atributos concretos. En el álgebra relacional los borrados se expresan mediante    r r – E donde r es una relación y E es una consulta del álgebra relacional.
3.4.2. Inserción
Para insertar datos en una relación 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. Evidentemente, el valor de los atributos de las tuplas insertadas deben ser miembros del dominio de cada atributo. De manera parecida, las tuplas insertadas deben ser de la aridad correcta. En el álgebra relacional las inserciones se expresan mediante r r E donde r es una relación y E es una expresión del álgebra relacional. La inserción de una sola tupla se expresa haciendo que E sea una relación constante que contiene una tupla.
3.4.3. Actualización
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 proyección generalizada para realizar esta tarea:
r←ΠF1, F2, …, Fn (r) donde cada Fi es el i-ésimo atributo de r, si el i-ésimo atributo no está actualizado, o, si hay que actualizar el atributo, una expresión, que sólo implica constantes y los atributos de r, que da el nuevo valor del atributo.



3.4 EL CÁLCULO RELACIONAL DE TUPLAS

Cuando escribimos una expresión del álgebra relacional proporcionamos una serie de procedimientos que generan la respuesta a la consulta. El cálculo relacional de tuplas, en cambio, es un lenguaje de consulta no procedimental.
Describe la información deseada sin dar un procedimiento específico para obtenerla.
Las consultas se expresan en el cálculo 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 notación utilizada previamente, se utiliza t[A] para denotar el valor de la tupla t en el atributo A y t r para denotar que la tupla t está en la relación r.
3.4.1. Definición formal
Ahora se tiene la preparación necesaria para una definición formal. Las expresiones del cálculo relacional de tuplas son de la forma
{t | P (t)} donde P es una fórmula. En una fórmula pueden aparecer varias variables tupla. Se dice que una variable tupla es una variable libre a menos que esté cuantificada mediante o . Por tanto, en
t préstamo s cliente (t[nombre-sucursal] = s[nombre-sucursal])
t es una variable libre. La variable tupla s se denomina variable ligada.
Las fórmulas de cálculo relacional de tuplas se construyen con átomos. Los átomos tienen una de las formas siguientes:
• s r, donde s es una variable tupla y r es una relación (no se permite el uso del operador )
• s[x] Θ u[y], donde s y u son variables tuplas, x es un atributo en el que está definida s, y es un atributo en el que está definida u y Θ es un operador de comparación (<, , =, , >, ); es necesario que los atributos x e y tengan dominios cuyos miembros puedan compararse mediante Θ
• s[x] Θ c, donde s es una variable tupla, x es un atributo en el que está definida s, Θ es un operador de comparación y c es una constante en el dominio del atributo x.
3.4.2. Seguridad de las expresiones
Queda un último asunto por tratar. Las expresiones del cálculo relacional de tuplas pueden generar relaciones infinitas. Supóngase que se escribió la expresión
{t | ¬ (t préstamo)}
Hay infinitas tuplas que no están en préstamo. La mayor parte de estas tuplas contienen valores que ni siquiera aparecen en la base de datos. Resulta evidente que no se desea permitir ese tipo de expresiones.
Para ayudar a definir las restricciones del cálculo relacional de tuplas se introduce el concepto de dominio de una fórmula relacional de tuplas, P. De manera intuitiva, el dominio de P, denotado por dom(P), es el conjunto de todos los valores a los que P hace referencia.
Esto incluye a los valores mencionados en la propia P, así como a los valores que aparezcan explícitamente en P o en una o en varias relaciones cuyos nombres aparezcan en P. Así, el dominio de P es el conjunto de todos los valores que aparecen explícitamente en una o más relación cuyos nombres aparecen en P. Por ejemplo, dom(t préstamo t[importe] > 1200) es el conjunto que contiene a 1200 y el conjunto de todos los valores que aparecen en préstamo. Además, dom(¬ (t préstamo)) es el conjunto de todos los valores que aparecen en préstamo, dado que la relación préstamo se menciona en la expresión.
3.4.3. Potencia expresiva de los lenguajes
El cálculo relacional de tuplas restringido a expresiones seguras es equivalente en potencia expresiva al álgebra relacional básica (con los operadores , – , ×, σ y ρ, pero sin los operadores relacionales extendidos tales como la proyección generalizada G y las operaciones de reunión externa). Por tanto, para cada expresión del álgebra relacional hay una expresión equivalente del cálculo relacional de tuplas, y para cada expresión del cálculo relacional de tuplas hay una expresión equivalente del álgebra relacional.


3.5. EL CALCULO RELACIONAL DE DOMINIOS**

Hay una segunda forma de cálculo relacional denominada cálculo 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álculo relacional de dominios, sin embargo, se halla estrechamente relacionado con el cálculo relacional de tuplas.
3.5.1. Definición formal
Las expresiones del cálculo relacional de dominios son de la forma:
{< x1, x2, …, xn > | P(x1, x2, …, xn)}
Donde x1, x2, …, xn representan las variables de dominio, P representa una fórmula compuesta de átomos, como era el caso en el cálculo relacional de tuplas. Los átomos del cálculo relacional de dominios tienen una de las formas siguientes:
• <x1, x2, …, xn> r, donde r es una relación con n atributos y x1, x2, …, xn son variables de dominio o constantes de dominio.
x Θ y, donde x e y son variables de dominio y Θ es un operador de comparación (<, , =, , >, ).
Se exige que los atributos x e y tengan dominios que puedan compararse mediante Θ.
x Θ c, donde x es una variable de dominio, Θ es un operador de comparación y c es una constante del dominio del atributo para el que x es una variable de dominio.
3.7.2. Seguridad de las expresiones
Ya se observó que en el cálculo relacional de tuplas es posible escribir expresiones que pueden generar relaciones infinitas. Esto llevó a definir la seguridad de las expresiones de cálculo relacional de tuplas. Se produce una situación parecida en el cálculo relacional de dominios.
Las expresiones como:
{< p, s, i > | ¬ (< p, s, i > préstamo)}
No son seguras porque permiten valores del resultado que no están en el dominio de la expresión.
En el cálculo relacional de dominios también hay que tener en cuenta la forma de las fórmulas dentro de las instrucciones «existe» y «para todo». Considérese la expresión
{< x > | y (< x, y r) z (¬ (< x, z > r) P(x, z))}
Donde P es una fórmula que implica a x y a z. Se puede probar la primera parte de la fórmula, y (< x, y r), tomando en consideración sólo los valores de r. Sin embargo, para probar la segunda parte de la fórmula, z (¬ (< x, z > r) P(x, z)), hay que tomar en consideración valores de z que no aparecen en r. Dado que todas las relaciones son finitas, no aparece en r un número infinito de valores.
3.7.3. Potencia expresiva de los lenguajes
Cuando el cálculo relacional de dominios se restringe a expresiones seguras es equivalente en potencia expresiva al cálculo relacional de tuplas restringido a expresiones seguras. Dado que se observó anteriormente que el cálculo relacional de tuplas restringido es equivalente al álgebra relacional, los tres lenguajes siguientes son equivalentes:
• El álgebra relacional básica (sin las operaciones extendidas)
• El cálculo relacional de tuplas restringido a expresiones seguras

• El cálculo relacional de dominios restringido a expresiones seguras





Comentarios

Entradas populares de este blog

Ejercicios

Evaluación Intermedia Unidad V

Arquitectura del Sistema Gestor de Base de Datos (SGBD)