Un sistema de bases de datos (SBD) es el conjunto de bases de datos unido a los programas que interactúan con el mismo.
Una base de datos posee un administrador que se encarga de determinar los métodos de acceso a la información que se almacena en la misma y velar por su buen funcionamiento.
El administrador de base de datos tiene entre sus funciones:
Definir las estructuras de almacenamiento y los métodos de acceso.
Definir el esquema de base de datos.
Realizar modificaciones del esquema y su organización física.
Conceder los permisos de acceso a la información a los diferentes usuarios de la BD
Determinar los mecanismos para salvar la información.
Especificar las restricciones de intregidad.
Arquitectura de una BD
Una base de datos se divide 3 niveles de abstracción
Nivel externo: En este nivel es donde el usuario ve lo externo de la base de datos sin llegar a las especificaciones de cómo está estructurada ni cómo se realiza el tratamiento a los ficheros. Es lo que a cada usuario interesa individualmente.
Nivel conceptual: Vista comunitaria de toda la información. Es la estructura de la base de datos.
Nivel interno: Es el nivel donde se encuentran los ficheros para el tratamiento del acceso a la información almacenada en la base de datos.
Gráficamente una base de datos puede verse de la siguiente forma:
Lenguajes de bases de datos que usan los usuarios
Lenguaje de Definición de Datos (DDL): Conjunto de sentencias que permiten la definición de la estructura de la base de datos.
Ejemplo: CREATE TABLE (en SQL)
Lenguaje de Manipulación de Datos (DML): Sentencias que permiten insertar, borrar, actualizar, recuperar, organizar toda la información que se encuentra almacenada en la base de datos. Son instrucciones que uno crea o llamados a procedimientos.
Ejemplo: APPEND FROM (en FOXPRO)
Lenguaje Procedimental (PL): Son lenguajes donde se dice lo que se quiere y cómo se debe hacer lo que se quiere.
Lenguaje no Procedimental (PNL): Son lenguajes donde se dice lo que se quiere y no cómo se debe hacer lo que se quiere.
Sistema de gestión de base de datos (SGBD)
Es un sistema que proporciona una interacción con los datos almacenados en la BD y los procedimientos de aplicación y consulta hechos al sistema.
Componentes de un SGBD
Gestor de archivos (GA): Gestiona la asignación de memoria en disco y las estructuras de datos
Gestor de base de datos (GBD): Se encarga de la interface con los datos de bajo nivel y programas de aplicación y consultas.
Procesador de consultas (PC): Traduce las consultas realizadas a lenguaje de bajo nivel.
Precompilador de DML (PDML): Convierte las sentencias de DML en llamadas a procedimientos.
Compilador de DDL (CDDL): Convierte las sentencias de DDL en conjuntos de tablas.
Estructura de datos
Como se dijo anteriormente un dato es un conjunto de caracteres que describe algo de nuestra realidad. Pero bien, no todos los datos que nos encontramos en el proceso de análisis de un fenómeno, constituye información. Se denomina información a la parte de los datos que influye en las acciones o en la toma de decisiones o a aquellos datos que su ausencia determina en la toma de decisiones o en la realización de las acciones dentro de un fenómeno particular. Para el almacenamiento de la información en un ordenador se establecen ciertas estructuras de datos que se corresponden con las características de la información almacenada. Entre las estructuras de datos en las que se almacena la informacion se encuentran tres tipos fundamentales de archivos:
Archivo de datos: Para almacenar los datos.
Diccionarios de datos: Para almacenar información sobre los datos que se almacenan en la BD.
Indice: Proporciona un acceso rápido a los datos.
Características del SGBD
1. Capacidad de acceder a grandes volúmenes de información de una forma eficiente.
2. Soportar los modelos de datos a través del cual los usuarios pueden ver la información.
3. Soportar un lenguaje de alto nivel que permita a los usuarios definir estructura de datos, acceder a los datos y manipularlos.
4. Controlar el acceso a los datos.
5. Control de transaciones que permite la concurrencia de varios usuarios.
6. Acceso controlado a la información.
7. Resiliencia: Capacidad de recobrar la información ante fallos del sistema sin que se pierdan los datos
Existen 3 tipo de usuarios que se clasifican en dependencia de la forma en que interactúan con el SGBD. Estos son:
Usuarios ingenuos: La comunicación con el sistema se realiza a través de programas de
Aplicación.
Programadores de las aplicaciones: Las aplicaciones utilizan la BD pero no trabajan con
ella. Son aquellos que trabajan con la base de datos pero que no pueden cambiar su estructura.
Programadores de a BD: Interactúan con la BD a través de un lenguaje y pueden
cambiar su estructura.
ESTRUCTURA DE UN SGBD
Modelación de datos
Un modelo de datos es un formalismo matemático que consta de dos partes fundamentales:
1- una notación matemática para describir datos y relaciones
2- un conjunto de operaciones para manipular datos.
Desde el punto de vista computacional, un modelo de datos puede verse como una colección de estructuras de datos, un conjunto de operaciones actuan sobre estas estructuras y un conjunto de reglas de integridad. Esta reglas de integridad pueden ser generales cuando se determinan por la naturaleza propia del fenómeno que se analiza o especificas cuando las determina el usuario.
En el proceso de análisis de un fenómeno se determinan de alguna manera todos los conjuntos de objetos que intervienen en el fenómeno estudiado y la relación que existe entre ellos. En dependencia del objetivo final deseado del análisis se tienen en cuenta algunas de las características de cada conjunto de objetos o bien de todas ellas.
Llamaremos entidad a cada uno de los conjuntos de objetos que participan en un fenómeno. A cada una de sus características las llamaremos atributos.
Cuando se analiza a cada entidad que interviene en un fenómeno no se tienen en cuenta los elementos particulares que pueden o no intervenir en dicho fenómeno. El proceso de análisis se lleva a cabo teniendo en cuenta las características comunes y generales que son de interés en cada entidad.
Para determinar los objetos particulares que pertenecen a cada conjunto de objetos, se le asocian valores a cada una de estas características. A la acción de determinar todos y cada uno de los objetos particulares que pertenecen a cada entidad a partir de otorgarle valores a cada uno de los atributos que se tienen en cuenta durante el análisis de dicha entidad, se le conoce como instanciar una entidad. Luego se denomina instancia de una entidad a cada uno de los objetos particulares de la misma que participan en el fenómeno analizado.
El proceso de instanciar una entidad se realiza tantas veces como objetos particulares participen en el fenómeno. Durante este proceso puede ocurrir que un atributo reciba un mismo valor en varias ocasiones. De esta forma se obtienen diferentes instancias de una misma entidad con un atributo que contiene un valor igual en cada una de estas instancias. Cuando ocurre lo anterior decimos que estamos en presencia de un atributo descriptivo, ya que sólo describe una característica más de la entidad sin determinarla de forma única.
Cuando durante el proceso anterior un atributo recibe valores, tales que el valor recibido en cada ocasión determina un objeto diferente, un objeto único, aún cuando existan atributos descriptivos que reciben valores repetidos en diferentes instancias, decimos que estamos en presencia de un atributo identificativo. Luego un atributo identificativo, no sólo nos ofrece una simple característica de una entidad analizada. Este nos determina con su valor a una instancia y a partir de este valor cada instancia de una entidad será diferente de otra perteneciente a la misma entidad.
Tomando como ejemplo una base de datos en la que se almacenan datos de trabajadores de una empresa tendríamos una entidad "TRABAJADOR" y sus atributos, por citar algunos, serían "NOMBRE ", "# IDENTIDAD", "SEXO", "DIRECCION"; de ellos el "# IDENTIDAD" es un atributo que identifica de forma única al trabajador y por eso es un atributo identificativo. Lo anterior se debe a que una persona tiene un número de identidad y sólo uno. Los restantes atributos son descriptivos porque describen a la entidad a la que nos referimos.
Cuando se analiza un fenómeno encontramos que dentro de algunas entidades existen un conjunto de atributos que las identifican unívocamente. A este conjunto de atributo se le denomina llave. Para el ejemplo anterior la llave de la entidad TRABAJADOR es el atributo # IDENTIDAD.
Entre cada uno de los conjuntos de objetos que intervienen en el fenómeno analizado pueden existir distintos tipos de relaciones en dependencia de lo que se analice y de las características que se tengan en cuenta para el análisis. Supongamos que se tienen n entidades Di, cada una con sus atributos y que de cada una de estas entidades, se tiene un atributo ti pertenecen a la entidad Di. Se define como una relación la tupla
De acuerdo a la aridad del producto cartesiano que define a una relación, es decir, de acuerdo a la cantidad de entidades que participan en la relación, esta se puede clasificar en binaria (dos entidades), ternaria (tres entidades) o en agregación. Se denomina agregación a la relación entre relaciones. Desde el punto de vista de funcionalidad las relaciones se clasifican en relaciones de 1 a 1 (de uno a uno), de 1 a n (de uno a muchos) y de n a n (de muchos a muchos).
Si se establece una relación entre dos entidades JEFES y DEPARTAMENTOS para reflejar quién dirige un departamento dado dentro del fenómeno analizado, estaremos en presencia de una relación de 1 a 1 teniendo en cuenta que un departamento tiene uno y sólo un responsable y un responsable puede dirigir a uno y solo un departamento. Así por ejemplo si se establece una relación entre las entidades PERSONA y LIBROS para representar la pertenencia de un libro a una persona, estaremos en presencia de una relación de 1 a n. A cada persona puede pertenecer n libros y un libro pertenece a una y sólo a una persona.
Como ejemplo de una relación de n a n podemos citar dos entidades TEMAS y LIBROS que reflejan las temáticas de búsquedas de información en una biblioteca y los libros que se encuentran en la misma respectivamente. Para representar las temáticas que pueden ser tratadas en cada libro podemos establecer una relación de n a n. Cada temática puede ser tratada por n libros y un libro puede tratar n temáticas.
En el proceso de análisis es difícil a menudo determinar cuales de los objetos que intervienen en el fenómeno, se presentan como conjuntos y cuales solamente son características de algunos objetos. Para determinar cuándo lo que inteviene en un fenómeno es una entidad o simplemente un atributo es necesario tener en cuenta los siguientes aspectos:
De entidades y atributos
1. Las entidades tienen información descriptiva; los atributos no.
2. Los atributos multievaluados deben ser clasificados como entidades.
3. Un atributo que mantiene una relación con otra entidad debe ser clasificado como entidad.
4. Debe evitarse identificadores compuestos (formados por más de un atributo).
5. No debe usarse nombres repetidos para los atributos.
De relaciones
1. Evitar relaciones redundantes.
2. Definir cuidadosamente relaciones de aridad mayor que 2.
Existen diferentes modelos de datos para representar los distintos fenómenos que pueden ser analizados en la práctica. En la medida que sean vistos los diferentes modelos existentes se podrá considerar cuando es mejor utilizar uno u otro. Para la selección de un modelo de datos es necesario tener en cuenta los siguientes aspectos:
1. Objetivos que se persiguen de la representación.
2. Orientación hacia los objetos que intervienen en el fenómeno o hacia los valores de estos objetos. En ocasiones lo que interesa es donde se encontrará el objeto en memoria y en otras, qué valores le serán asignados a estos objetos.
3. Tratamiento de la redundancia.
4. Tratamiento de las relaciones muchos a muchos.
A continuación analizaremos los modelos que se establecen en el análisis y diseño de los diferentes fenómenos a analizar.
Modelo de Entidad – Relacionalidad Extendida (MEER)
Este es uno de los modelos utilizados en el análisis de un fenómeno. El MEER se puede representar gráficamente mediante los símbolos
En este modelo de datos existen modelos de abstracciones. Estos son jerarquías de especificaciones y subconjuntos o generalización.
1) Jerarquía de especificación: se tiene una entidad y a partir de determinados especificación, se crean nuevos entidades que tienen sus propios atributos.
2) Jerarquía de generalización: existen atributos comunes y a partir de un atributo se define conjuntos disjuntos.
Ejemplo de 1)
Se tiene una entidad que representa a los estudiantes de la facultad de Matemáticas de la Universidad de La Habana. De esta entidad se analiza si el estudiante es becado y si pertenece a un grupo de investigación dado. Note que pueden existir estudiantes que sean becados y que al mismo tiempo pertenezcan al grupo de investigación. Quiere esto decir que los cinjuntos obtenidos no son disjuntos.
Ejemplo de 2)
Se tiene una entidad que representa a los estudiantes de la facultad de Matemáticas de la Universidad de La Habana. De esta entidad se analiza un atributo año que indica el año al cual pertenece un estudiante. A partir de este atributo se crean nuevos subconjuntos del conjunto de estudiantes de la facultad que son disjuntos.
Ventajas del MEER
1. Constituye una herramienta para el diseño conceptual.
2. Constituye un medio de comunicación eficaz entre el usuario y el diseñador.
3. Es fácil de entender y es más natural.
4. Simplicidad debido a que el número de entidades siempre es menor al número de elementos de datos.
5. Constituye una representación gráfica muy clara del fenómeno.
Desventajas del MEER
1. Es un material abstracto y no de tratamiento.
2. Ausencia de requerimiento de integridad.
3. Ausencia de controles de validación.
Modelo Jerárquico
Es un modelo para representar relaciones de uno a muchos (1-n). Es por ello que para la representación de fenómenos a través del modelo jerárquico se utilizan estructuras de datos como árboles y bosques (colección de árboles donde los puntos de enlaces son de los padres a los hijos).
Supongamos que se tienen suministradores de los que se conoce el nombre, el número, un tipo para cada uno de ellos y el municipio donde radica. Cada uno suministra una cantidad determinada de cada uno de los productos de los que se conoce el número del producto, el nombre y el precio. Se controla para cada suministrador la cantidad que suministra por cada producto. En el MERR la representación de este fenómeno sería la siguiente:
Supongamos que particularmente se tienen dos suministradores S1 y S2 y cinco productos P1, P2, P3, P4 Y P5. S1 suministra los productos P1, P2 y P4 y S2 suministra P2, P3 y P5. Veamos un ejemplo de cómo se realizaría la representación gráfica de este fenómeno en el modelo jerárquico.
Computacionalmente la representación que se tendría sería la siguiente;
Estas estructuras se representarían utilizando arreglos. En el caso del dato cantidad se utilizaría apuntadores.
Ventajas del Modelo jerárquico
– Es el más simple y constituye un modelo natural de modelar las estructuras jerárquicas comunes en el mundo real.
Desventajas del modelo jerárquico
1. Falta de simetría para determinadas operaciones de consultas. Estos se manifiesta cuando con requerimientos idénticos se opera de diferente forma.
2. Anomalía en las operaciones de actualización (extraer, modificar, insertar).Esto se manifiesta cuando se realizan actualizaciones parciales. Esto trae como consecuencia inconsistencias en la formaciónque se tiene almacenada.
Modelo Reticular
Modelo para representar jerarquías de muchos a muchos. La base para la representación del modelo es la estructura de datos multilista. Estas estructuras se caracterizan por poseer elementos que pertenecen a más de una lista. En este modelo la representación de la informacion es a través de gráficos donde los nodos responden a las entidades y los arcos a las relaciones.
Veamos la representación del fenómeno de los suministradores y los productos teniendo en cuenta el modelo reticular.
Ventajas del modelo reticular
1. Se resuelve el problema de la simetría en las operaciones.
2. Se eliminan las anomalías en las operaciones de actualización.
Desventajas del modelo reticular
1. Es un modelo muy complejo.
2. Siempre que se desee dar respuesta a una demanda se necesita realizar una navegación a través de la red que se obtiene de la representación.
Modelo Relacional
El modelo relacional es una forma de representación de los datos cuyo fundamento matemático son las relaciones.
Cuando hablamos de modelo relacional debemos considerar tres aspectos: las estructuras de datos, la integridad de los datos y la manipulación de los datos. Este modelo es muy utilizado en la actualidad.
La estructura de datos utilizada para representar las relaciones son tablas bidimensionales, donde cada entrada o columna representa los atributos de la entidad analizada y las filas representan los objetos particulares que intervienen en el fenómeno analizado.
La aridad de la relación está dada por el orden de la tabla y se determina por el número de columnas que esta posee. La cordinalidad depende de la cantidad de objetos particulares que estén almacenados en la BD en un tiempo determinado. En cada relación debe cumplirse lo siguiente:
1) No existencia de filas iguales.
Cada relación es considerada como un conjunto de valores donde lo que importa es la pertenencia o no de un elemento dado.
2) El orden de las filas no es significativo
Como cada relación es considerada como un conjunto no ordenado de valores donde el orden que este posea un elemento dado dentro del conjunto no importa.
3) El orden de las columnas no es significativo.
No se toma en cuenta el orden en que son analizados los atributos de cada entidad. Lo importante es si un atributo es analizado o no.
4) Cada valor de un atributo en cada tupla de la relación es un dato atómico.
Un dato atómico es un dato que es indivisible. El valor de cada atributo representa una pieza individual dentro del fenómeno.
El atributo K de la relación R es una clave candidata si y solo si en cualquier momento no existen dos tuplas en R con el mismo valor de K. K puede ser un atributo compuesto. En ese caso no será posible eliminar ningún componente ki de K sin destruir la propiedad de unicidad de la clave. Esta propiedad se conoce como de minimalidad de la clave (clave mínima).
Si para una relación existen varias claves candidatas, una de ellas debe tomarse como clave primaria y las demás como claves alternativas.
Supongamos que se tiene un conjunto de productos que poseen entre sus carácterísticas el código CUP, la descripción, un precio de empresa, un precio de venta al público, un precio de exportación y la unidad de medida de dicho producto. La empresa que los produce establece una clave, única para cada producto, que será utilizada siempre que sea necesario de manera secreta hablar del producto por los medios de comunicación correspondientes.
Entidad: PRODUCTO
Atributos: 1.- CUP Según nuestro ejemplo son claves candidatas
2.- descripción el código CUP del producto y la clave que
3.- pemp establece la empresa para cada producto.
4.- ppub En este caso puede ser clave primaria el
5.- pexp código CUP del producto y clave alternativa la
6.- um clave que establece la empresa para el
7.- clave producto
Sean R1 y R2 dos relaciones no necesariamente distintas. Sean un atributo ti de R2 que puede ser o no compuesto. El atributo ti es una clave foránea de R2 si existen valores de la clave primaria ti de la relación R1. En este caso todos los valores de ti en la relación R2 tienen que estar en la relación R1. El inverso no se cumple.
Como se dijo anteriormente la representación de las relaciones en el modelo relacional se realiza a partir de las tablas. Las tablas se componen de una fila cabecera de columnas y de 0 o más filas de valores de datos.
Analicemos el ejemplo de los suministradores y los productos. Teniendo en cuenta la naturaleza del problema se tienen las siguientes tablas:
Para construir el modelo relacional a partir del MEER se convierte cada entidad y cada relación en una tabla. Como filas cabeceras en las tablas provenientes de entidades se colocan los atributos de la entidad correspondiente. Para conformar las cabeceras de las tablas que representan relaciones se fijan las claves de cada una de las entidades que intervienen en la relación y los atributos que se deriven de esta. Para entidades débiles se fijan la llave de la entidad de la cual se deriva y los atributos de la entidad débil.
En el caso de la jerarquía de generalización existen dos tipos de representaciones:
1. Una tabla para la entidad fuerte con todos sus atributos y una para la entidad débil con la clave de la entidad fuerte y los atributos de la entidad débil.
2. Una tabla única que tiene los atributos de la entidad fuerte incluyendo los de la entidad débil.
Para este caso la elección de la forma está en dependencia del problema original aunque la más utilizada es la primera, por ser mucho más clara.
Existen diferentes tipos de tablas en las que se almacena información y la existencia de cada tipo está basada en la permanencia, en términos de tiempo, de la tabla y de los datos que almacena. Una tabla base es una tabla que existe y que se encuentra almacenada. Una tabla derivada es una tabla virtual definida a partir de otras tablas. De ella solo se almacena su definición. Los valores de la tabla derivada existen en el momento en que se pide información a través de las diferentes operaciones.
Se denomina esquema de la base de datos al conjunto de todas las tablas que conforman la base de datos.
Ya vimos las estructuras de datos, como un elemento que compone un modelo de datos desde el punto de vista computacional. Veremos ahora las reglas de integridad que también conforman el modelo.
Reglas de integridad
1. Regla de Integridad
Esta regla establece que ningún componente de la clave primaria de una relación base, puede ser nulo. Si la llave tiene un valor nulo en un momento determinado no se podría saber que valor es especificamente pues nulo es cualquier cosa y al trabajar con este valor tendríamos problemas.
Regla Referencial
Esta regla establece que la BD no debe tener valores foráneos sin concordancias, es decir, que si un valor es foráneo en una relación, este valor debe existir en la relación de donde proviene dicho valor. En el ejemplo de los suministradores y los productos no tiene sentido que el número de un producto aparezca en la relación y que este producto no aparezca en la tabla de productos de la cual se extrajo el producto.
Ventajas del modelo relacional
1) Las relaciones se presentan como tablas bidimensionales lo que hace más fácil su comprensión.
2) Brindan soluciones simétricas a demandas simétricas, es decir se realizan operaciones similares para satisfacer demandas similares.
3) No hay anomalías en las operaciones de actualización.
4) Simplicidad; se dice que es lo que se quiere y no como hacerlo.
Desventajas del modelo relacional
1) Este modelo presenta mucha dificultad para su implementación
Lenguaje Relacional
Cuando mencionamos al inicio los aspectos a tener en cuenta cuando utilizamos un modelo relacional para la representación de un fenómeno, nos referimos a la manipulación o manejo de los datos como tercer aspecto. Ahora veremos los lenguajes relacionales que nos permiten manipular los datos y los operandos y operaciones posibles de utilizar y realizar respectivamente en cada uno de estos lenguajes. Entre los diferentes lenguajes o notaciones definidas por Codd que veremos se encuentran el álgebra relacional, el cálculo relacional de dominio y el cálculo relacional de tuplos.
Álgebra Relacional
El álgebra relacional consiste de un conjunto de operadores de alto nivel que operan sobre las relaciones. En el momento de definir un operador se tienen en cuenta una o dos relaciones, pero en principio los operadores pueden ser definidos para un número cualquiera de operandos siempre que se satisfagan las condiciones de la simple definición.
Operandos y operaciones sobre el modelo relacional
Codd definió un conjunto especifico de 8 operadores el cual dividió en dos grupos :
Para realizar operaciones tradicionales (unión, intersección, diferencia y productos cartesianos).
Para relizar operaciones especiales (Selección, proyección, encuentro y cociente).
A continuación veremos la definición de cada uno de estos operadores. Es importante señalar que el resultado de todos estos operadores es una nueva relación. Definamos pues operando como constantes o variables de relaciones de una aridad fija.
Integridad operacional
Sean R y S relaciones. Se dice que R y S son relaciones compatibles para la unión si:
1. tienen igual aridad
2. se puede establecer una correspondencia 1-1 entre las columnas de ambas relaciones, es decir, a cada Ai de R se le hace corresponder un Bj de S donde Ai y Bj toman valores en un mismo dominio.
Unión
La unión construye una relación que cosiste en los tuplos de cada una de las relaciones o de ambas. R y S son dos relaciones compatibles para la unión. Este operador se define de la siguiente forma.
Ejemplo: Sean R y S representadas por las siguientes tablas respectivamente.
Intersección
La intersección construye una relación que cosiste en los tuplos que pertenecen a ambas relaciones al mismo tiempo. R y S son dos relaciones compatibles para la unión. Este operador se define de la siguiente forma.
Ejemplo: Sean R y S dos relaciones representadas por las siguientes tablas respectivamente.
Diferencia
La diferencia construye una relación formada por los tuplos que se encuentra en la relación sumando y que no se encuentre en la relación sustraendo. Sean R y S dos relaciones compatibles para la unión. Este operador se define de la siguiente forma:
Ejemplo: Sean R y S dos relaciones representadas por las siguientes tablas respectivamente.
Producto cartesiano
El producto cartesiano construye una relación que consiste de todas las posibles combinaciones de los tuplos tomando primero de una relación y combinándolos con los tuplos de la segunda de ellas. Este operador se define de la siguiente forma:
Ejemplo: Sean R y S dos relaciones representadas por las siguientes tablas respectivamente.
Proyección
Sea R una relación de aridad k. Se define el operador proyección
Ejemplo: Sean R una relación representada por la siguiente tabla.
Selección
La selección define una relación compuesta por los tuplos de la relación original que cumplan una condición. Este operador se define de la siguiente forma:
Ejemplo: Sean R una relación representada por la siguiente tabla.
(-unión
La (-unión construye una relación formada por los tuplos del primero de los operandos seguidos por los tuplos del segundo operando tales que se cumla la condición establecida por (. Este operador se define de la forma:
Otra forma de aplicar la operación (-unión a dos relaciones es calcular su producto cartesiano y seleccionar de todos los tuplos del mismo a aquellos tuplos que cumplan la condición (. ( puede ser cualquiera de los signos de comparación (, (, (, ( y((.
Ejemplo: Sean R y S dos relaciones representadas por las siguientes tablas respectivamente.
Encuentro o unión natural
Esta operación es aplicable sólo cuando R y S tienen al menos una columna común. Se construye una relación formada por las columnas que resultan de proyectar el producto cartesiano de los operandos, sin repetir las columnas que son iguales. Se toman finalmente los elementos que tienen igual valor en las columnas con iguales cabeceras. Esta operación se define de la siguiente forma:
Ejemplo: Sean R y S dos relaciones representadas por las siguientes tablas respectivamente.
Cociente
Sean dos relaciones R y S con tuplos de la forma (x1, x2, …, xm, y1, y2, …, yn) y (y1, y2, …, yn) respectivamente. Bajo estas condiciones supongamos que los atributos con igual nombre son poseen valores de un mismo dominio. Hablaremos de (x1, x2, …, xm) haciendo referencia a X y de (y1, y2, …, yn) referenciándonos a Y. El cociente de R por S (R es el dividendo y S el divisor) con encabezamiento de la forma X, formada por los tuplos x de X tales que de los tuplos de R (X:x, Y:y) se toman aquellos (Y:y) en S que para todo Y de S. En otras palabras, la relación resultante de la aplicación de la operación cociente de R por S consiste de todos los tuplos de forma X escogidos de R, tales que la parte del tuplo con cabecera Y coincide con uno de los tuplos en S. Esto debe cumplirse para todos y cada uno de los tuplos que pertenecen a S. Esta operación se define de la siguiente forma:
Ejemplo: Sean R y S dos relaciones representadas por las siguientes tablas respectivamente.
Cálculo Relacional
El álgebra relacional y el cálculo relacional son dos notaciones alternativas que Codd definió como bases formales en la parte de manipulación de un modelo. La diferencia entre ambas notaciones radica en que el álgebra relacional ofrece una serie de operadores para obtener nuevas relaciones a partir de relaciones dadas. Por su parte el cálculo relacional brinda los medios para definir mediante fórmulas la relación deseada, también a partir de relaciones dadas. Mientras el cálculo relacional establece cuál es el problema, el álgebra relacional ofrece el procedimiento para resolver dicho problema.
De hecho el álgebra relacional y el cálculo relacional son equivalentes. Quiere esto decir que para toda expresión del álgebra relacional, existe una expresión equivalente en el cálculo relacional.
El cálculo relacional está basado en una rama de la lógica matemática: el cálculo de predicados. Kuhns fue el primero en pensar en la utilización del cálculo de predicados como base de los lenguajes de bases de datos. El cálculo relacional fue una notación propuesta, por primera vez por Codd. Una característica fundamental del cálculo relacional es la noción de la variable tuplo, también conocida como variable rango. Una variable tuplo es una variable que toma valores sobre alguna relación, es decir, una variable, cuyos valores son tuplos de alguna relación. En otras palabras, si T es una variable de tuplo que toma valores sobre la relación R, entonces en algún momento T representa a un tuplo t que pertenece a R. Esta variable se representa de la forma (x1, x2, …, xn) donde cada xi responde a una atributo ti de la relación.
Por ocurrencia de una variable entendemos la aparición de esa variable dentro de determinado contexto y bajo determinadas condiciones. Una variable de tuplo puede ocurrir como una referencia a algún atributo de una relación o siguiendo a algunos de los cuantificadores "para todos" y "existe".
Cuando la variable aparece haciendo referencia a algún atributo de alguna relación se dice que la variable aparece de forma libre. Así por ejemplo cuando aparece en una simple comparación de atributos, se dice que las variables de tuplo aparecen de forma libre. Una variable de tuplo aparece de forma acotada cuando está siguiendo a los cuantificadores dentro de un contexto. Supongamos que en el ejemplo de los estudiantes estamos buscando a un estudiante de cuarto año que tiene como número de expediente el 456. Buscaríamos dentro de la relación E, correspondiente a la entidad ESTUDIANTE, aquel que cumpla con la condición especificada. Veríamos si existe un estudiante en la relación. Esto genéricamente se pudiera expresar de forma siguiente:
existe t(E | t1=456 ( t4=4
El cálculo relacional fue identificado con el cálculo relacional de tuplos por ser esta su característica fundamental y para hacer una diferenciación del mismo con el cálculo relacional de dominios que veremos más adelante.
Para realizar cualquier trabajo en el cálculo relacional de tuplos es necesario saber qué se entiende por una fórmula, pues es a partir de la utilización de esta que formaremos todas las expresiones. Definamos de forma recursiva una fórmula.
1. Un átomo es una fórmula.
2. Si P1 es una fórmula, (P1 también lo es.
3. Si p1 y p2 son fórmulas, P1(P2, P1(P2 y P1(P2 también lo son.
4. Si P1 es una fórmula con s libre, entonces (s(R(P(s)) y (s(R(P(s)) también lo son.
Sea P una fórmula. Si una variable de tuplo T aparece libre (o acotada) en una fórmula P, entonces aparece libre (o acotada) en (P), NOT P. Si la variable aparece libre (o acotada) en P1 y P2 entonces aparece libre (o acotada) en P1(P2 y P1(P2.
Sea P una fórmula. Se defina como dominio de P y se denota Dom(P) al conjunto de todos los valores referenciados por P. Si una fórmula P es finita NOT P es infinita y surgieran dificultades al establecer el dominio de una fórmula infinita. Es por eso que se establece la siguiente regla para asegurar que una expresión siempre sea válida en el cálculo relacional de tuplo.
Dom(t(R)=Dom(( (t(R)).
( (t(R) se refiere a los elemento del dominio donde se mueve t los cuales no pertenecen a la relación R. Todo lo anterior se traduce en que tanto los elementos que pertenecen a R como los que no pertenecen toman valores en un mismo dominio, aún sin los últimos cumplir con las condiciones que establece R como relación.
Al comienzo de este tema sobre el cálculo relacional planteamos que éste y el álgebra relacional eran dos notaciones equivalentes teniendo en cuenta que, para toda expresión del álgebra relacional existían una expresión equivalente en el cálculo relacional. Veremos cómo poder convertir las expresiones del álgebra relacional al cálculo relacional de tuplos, que es lo que nos ocupa en este momento.
Ejemplos:
1. Se desea obtener una relación a la que pertenezcan todos los estudiantes que son de cuarto año.
En el álgebra relacional esta relación se obtiene a partir de la selección se los estudiantes de cuarto año. Se plantea de la siguiente forma:
(año=4(E(# Exped, nombre, municipio, año))
En el cálculo relacional se obtendría la siguiente expresión:
{ t | E(# Exped, nombre, municipio, año) ( t[4]=4}
2. Se desea obtener el número del expediente y el nombre de todos los estudiantes de tercer año.
En el álgebra relacional esta relación se obtiene a partir de la selección se los estudiantes de tercer año y hacer una proyección de los datos que se desean. Se plantea de la siguiente forma:
(# Exped, nombre((año=3(E(# Exped, nombre, municipio, año)))
En el cálculo relacional se obtendría la siguiente expresión:
{ t2 | (u E(u) ( t[1]=u[1] ( t[2]=u[2] ( u[4]=4 }
Cálculo relacional de dominios
El cálculo relacional de dominios fue una alternativa al cálculo relacional de tuplos en la que las variables de tuplo son reemplazadas por variables de dominio. Una variable de dominio actúa sobre un dominio en lugar de actuar sobre las relaciones. El cálculo relacional de tuplos es equivalente al cálculo relacional de dominios, es decir para toda expresión del cálculo relacional de tuplos existe una expresión equivalente en el cálculo relacional de dominios. Visto de esta forma, es posible entonces realizar conversiones de una notación hacia otra. Se establecen pues las siguientes reglas para la conversión:
Si t es una variable de tuplo de grado k se utilizan k variables de dominio t1, t2, …, tk y se reemplaza la expresión { t | ((t) } por la expresión { (t1, t2, …, tk) | ('( t1, t2, …, tk) }. (' es ( con cualquier átomo R(t) reemplazado por R(t1, t2, …, tk). Cada variable libre t[i] es reemplazada por ti y las variables acotadas ( u y (u se reemplazan por u1, u2, …, um si u es de grado m.
Ejemplos:
1. Se desea obtener una relación a la que pertenezcan todos los estudiantes que son de cuarto año.
En el álgebra relacional esta relación se obtiene a partir de la selección se los estudiantes de cuarto año. Se plantea de la siguiente forma:
(año=4(E(# Exped, nombre, municipio, año))
En el cálculo relacional de tuplos se obtendría la siguiente expresión:
{ t | E(# Exped, nombre, municipio, año) ( t[4]=4}
En el cálculo relacional de dominios se obtendría la siguiente expresión:
{ t1, t2, t3, t4 | E(t1, t2, t3, t4) ( t4=4}
2. Se desea obtener el número del expediente y el nombre de todos los estudiantes de tercer año.
En el álgebra relacional esta relación se obtiene a partir de la selección se los estudiantes de tercer año y hacer una proyección de los datos que se desean. Se plantea de la siguiente forma:
(# Exped, nombre((año=3(E(# Exped, nombre, municipio, año)))
En el cálculo relacional se obtendría la siguiente expresión:
{ t2 | (u E(u) ( t[1]=u[1] ( t[2]=u[2] ( u[4]=4 }
En el cálculo relacional de dominios se obtendría la siguiente expresión:
{ t1, t2 | (u2, u4 E(t1, t2, u2, u4) ( u4=4}
Lenguaje SQL
"La adopción de un modelo relacional de datos … permite el desarrollo de un sublenguaje universal de datos basado en el cálculo aplicado a predicados"
E, F, Codd. 1970.
En el año 1974 se propuso un lenguaje de consulta estructurado conocido como SEQUEL. Al año siguiente se presentó otro lenguaje, SQUARE, muy parecido al anterior pero que utilizaba expresiones matemáticas ((((() en lugar de las expresiones "EXIST" y "FORALL". Según un artículo presentado por Codd en 1974, un lenguaje es relacionalmente completo si es al menos tan potente como el cálculo relacional de tuplos. Los autores demostraron que ambos lenguajes eran relacionalmente completos. Con la experiencia de los usuarios sobre SEQUEL se le añadieron algunos detalles finales que dieron lugar al lencuaje de consulta estructurado SQL. Más información sobre este lenguaje puede encontrarla en "SQL. El lenguaje de consulta estructurado." De C, J. Hursh y J, L. Hursh.
Integridad
En el contexto de las bases de datos es muy frecuente oir términos como seguridad e integridad. Haremos énfasis en el término integridad, utilizado para referirnos de cierta forma a cuán correcto se encuentran los datos que están almacenados en la bases de datos. Muchos sistemas entregan a los programadores de las aplicaciones la responsabilidad de la verificación de la corrección de los datos almacenados. Otros son capaces de realizar esta validación.
Cuando expusimos las partes componentes de un modelo de datos planteamos como tercer componente a las reglas de integridad y las clasificamos en generales y específicas en dependencia de quién las determinaba. Más tarde vimos dos reglas de integridad que se referían a la no existencia de valores nulos en la clave primaria y a la no existencia de claves foráneas sin concordancia respectivamente. Dada la importancia que tiene este tema retomaremos el mismo a fin de profundizar en algunos aspectos importantes.
Muchos son los problemas que pueden ocurrir en una aplicación de bases de datos que no tenga en cuenta la integridad de los datos que la base almacena. Estos problemas están generalmente relacionados con el no cumplimiento de la regla de integridad referencial, la que establece que no deben existir claves foráneas sin concordancia. Veremos donde se producen fundamentalmente los mismos.
1. Inserción en una fila hijo. Cuando se insertan una fila hijo, cuya clave foránea no se encuentra en el padre.
2. Actualización de una clave foránea en una fila hijo. Cuando se actualiza una fila hijo, cuya clave foránea no se encuentra en el padre o solamente se actualiza algunas de sus apariciones en la relación hijo.
3. Supresión de una fila padre. No se tiene en cuenta la necesidad de borrar las filas hijo que contienen claves foráneas que se encontraban en la fila padre que se suprime.
4. Actualización de la clave primaria en una fila padre. Cuando no se actualizan todas las filas hijo que contienen claves foráneas que se encontraban en la fila padre actualizada.
Teniendo en cuenta estos problemas muchos SGBD crean nuevos operadores que trabajan en cascada.
1. Actualización de clave primaria con actualización en cascada de filas hijo.
2. Actualización de clave primaria con marcaje en cascada de filas hijo. Se hace una actualización de la clave primaria y se marca con NULL las filas hijo.
3. Supresión de clave primaria con actualización en cascada de filas hijo.
4. Supresión de clave primaria con marcaje en cascada de filas hijo. Se hace una actualización de la clave primaria y se marca con NULL las filas hijo.
En SGBD como DBx en cada relación padre creada mediante la filosofía de clave primaria, se puede especificar una regla de supresión.
Reglas de supresión
1. RESTRICT: Impide la supresión de una fila de la relación padre si existe alguna fila en la relación hijo.
2. CASCADE: Suprime las filas de la relación hijo de forma automática cuando la relación padre ha sido suprimida.
3. SET NULL: Cuando se suprime una fila en la relación padre, las filas de la relación hijo que contengan la clave foránea con este valor pasan a ser NULL.
Cuando la integridad es responsabilidad de los programadores de las aplicaciones puede ocurrir:
1. Una duplicación de esfuerzos. Todos los programas de aplicación sobre la misma base chequean el dominio sobre el que se mueven los valores de los atributo.
2. Falta de consistencia. Cada programador de aplicación sobre la misma base chequea lo mismo de diferentes formas y además chequea diferentes reglas.
3. Problemas de mantenimiento. Son creados al cambiar los criterios de integridad.
4. Complejidad. Una base de datos sencilla puede complicarse al incluirle nuevas reglas de integridad.
En 1985 Codd establece 12 reglas, que están precedidas por una "Regla cero", para determinar si una base de datos puede o no llamarse totalmente relacional. Para ello deben cumplirse por lo menos seis de ellas.
0. Gestión de una base de datos relacional. Todo sistema que se diga ser relacional debe ser capaz de manipular bases de datos solamente con sus capacidades relacionales.
1. Representación de la información.
2. Garantía de accesibilidad lógica.
3. Representación sistemática de la información que falta.
4. Catálogo dinámico en línea.
5. Sub-lenguaje de datos completos.
6. Vistas actualizables.
7. Inserción, actualización y borrado de alto nivel.
8. Independencia de datos físicos.
9. Independencia de datos lógicos.
10. Independencia de la integridad.
11. Independencia de la distribución.
12. Regla de la no inversión.
Otra información más detallada sobre estas reglas la puede encontrar en "SQL. El lenguaje de consulta estructurado." De C, J. Hursh y J, L. Hursh.
Teoría del diseño
La automatización de la actividad de una oficina o de una empresa se realiza con el objetivo de hacer las tareas, que hasta el momento se realizaban manualmente, en una forma más rápida y eficiente. Es por ello que debe realizarse un buen análisis a fin de recopilar toda la información necesaria para dar respuesta a todas las demandas planteadas por el usuario.
El proceso de automatización de una organización consta de varios subprocesos: análisis, modelación de datos, diseño, programación o implementación de los procedimientos necesarios para satisfacer las demandas de los usuarios, período de prueba o puesta a punto, utilización del sistema y mantenimiento.
Aunque todo el proceso comienza con el análisis de las tareas que se desean automatizar, este curso no incluye el estudio de las bases fundamentales para la realización de esta etapa. Vimos cómo modelar datos, las herramientas que se utilizan en la etapa de modelación y algunos lenguajes que poseen los analistas para expresar de alguna forma las demandas planteadas por los usuarios. Ahora veremos las bases en las que se sienta la obtención de un buen diseño. Antes de decir qué se entiende por un buen diseño expondremos un ejemplo de por qué un esquema relacional puede ser inadecuado.
Supongamos que se tienen dos entidades, una de suministradores y una de productos y que del análisis del fenómeno se obtuvo la siguiente relación para reflejar qué producto de suministraba cada suministrador:
SUM(nomb_sum, dirección, producto, precio)
Esta relación presenta varios problemas. Analicemos los mismos.
Redundancia: La dirección del suministrador dado es repetida en cada una de las filas en la que aparece suministrando un nuevo producto.
Inconsistencia potencial (Anomalías de actualización): Se puede actualizar la dirección de un suministrador en una de las filas en las que aparece, no siendo así en las demás. Luego aparecería un mismo suministrador al menos con dos direcciones.
Anomalías de Inserción: No se puede registrar una dirección para un suministrador si éste no suministra al menos un producto. Para resolver este problema se pudiera insertar el nombre y la dirección del suministrador y marcar el producto y al precio como NULL. Estos campos que fueron marcados como NULL pueden ser llenados más tarde, en el momento que el suministrador comience a suministrar productos o bien se pudiera insertar una nueva fila con el nuevo producto suministrado y borrar aquella donde el producto y el precio están marcados como NULL. Los atributos que identifican a cualquier tuplo de la relación son nomb_sum y producto, en conjunto. Como producto es un atributo identificativo, no debe tomar valores nulos.
Anomalías de borrado: Si desearamos borrar todos los productos de un suministrador, perderíamos entonces la dirección del mismo para el caso que éste comience nuevamente a suministrar productos.
Luego es necesario dividir la relación SUM en dos relaciones SUM y SUMPROD de la siguiente forma:
SUM (nomb_sum, dirección)
SUMPROD (nomb_sum, producto, precio)
Lo anterior fue un ejemplo de mal diseño y de los problemas que éste ocasiona. Antes de exponer la teoría para la obtención de un buen diseño, expondremos algunos conceptos básicos para trabajar con la misma.
Conceptos básicos
Sobre las relaciones que existen entre cada una de las entidades que intervienen en el fenómeno que se desea automatizar y sobre los atributos de cada una de ellas se establecen algunas restricciones, que en ocasiones dependen de la semántica de los elementos del dominio en el cual toman valores los atributos y en otras dependen de la igualdad o desigualdad de dichos valores.
Por ejemplo, carecen de sentido hablar de una edad o una talla negativa, como también carece de sentido hablar de una fecha de inicio de un evento ya ocurrido que sea mayor, que la fecha en que nos encontramos actualmente. En el caso de la fecha, se dice que una fecha es menor (mayor) que otra si tiene lugar antes (después) que la fecha que se toma como patrón de comparación. Luego, se denomina dependencia funcional a una correspondencia que se establece entre determinados conjuntos de atributos de una relación.
Sea ((R,U) un esquema relacional de base de datos con R, conjunto de relaciones del esquema y U el conjunto de atributos. Sean X e Y dos atributos que pertenecen al conjunto de atributos U del esquema. Se dice Y depende de X o bien que Y se deriva de X, si para cualquier relación Ri de R no es posible que existan dos tuplos que coincida en X y no coincidan en Y.
Veamos por ejemplo una base de datos en la que se almacenan, entre otras cosas, datos de personas que intervienen en el fenómeno analizado. Sean dos instancias de la entidad PERSONA en la que se tuvieron en cuenta los atributos #ident, nombre y sexo.
# IDENTIDAD | NOMBRE | SEXO | ||
70072201361 | Pérez Pérez, Perico | M | ||
70060901393 | Anda Mocha, Maricusa | F |
Como cada persona tiene un único carné de identidad y un número de identidad pertenece a una única persona, cuando #ident tenga como valor la cadena "70072201361", el atributo sexo no podrá tener otro valor que no sea el carácter "M" y asimismo el atributo nombre no podrá obtener otra cadena que no sea "Pérez Pérez, Perico" luego se establecen las dependencias funcionales:
El concepto de dependencia funcional es puramente semántico. Reconocer las dependencias funcionales es parte del proceso de entender el significado de los datos. Como parte semántica de la situación que se analiza, las dependencias funcionales deben cumplirse de alguna manera y la forma de garantizar su cumplimiento es especificándolo en el esquema relacional para que el administrador de la bases de datos haga que se cumpla.
Al conjunto formado por todas las dependencias funcionales que se implican lógicamente a partir del conjunto de dependencias funcionales de F, se le denomina clausura del conjunto F. Se define entonces el siguiente conjunto:
Para calcular el conjunto clausura del conjunto de dependencias funcionales es necesario calcular las clausuras de todos sus atributos. Para ello analicemos primeramente el conjunto clausura de un atributo particular que se define como el conjunto de todos los atributos que se pueden implicar a partir de X teniendo en cuenta el conjunto de dependencias funcionales F, es decir, el conjunto definido de la forma
Algoritmo para calcular la clausura de un atributo
Sea U un conjunto de atributos y F un conjunto de dependencias funcionales. Sea X(U. Se desea calcular la clausura de X que se denota X+. El método de cálculo consiste en computar X(0), X(1), X(2), … teniendo en cuenta los siguientes pasos:
Siempre que hablamos de una entidad suponemos que existe una clave, es decir, un conjunto de atributos que identifican a una entidad de forma única. Cuando analizamos las relaciones y las dependencias funcionales encontramos un concepto análogo al concepto de clave. Sea ((R,U) un esquema relacional de base de datos, R un conjunto de relaciones del esquema y U={A1, A2,…, An} el conjunto de atributos. Sea X un subconjunto de atributos, que pertenece al conjunto de atributos U y Ri una de las relaciones de R. Decimos que X es una llave de Ri si:
Como CS y SZ generan el universo y además son mínima, entonces son llaves. Véase cómo CSZ también genera el universo de atributos, pero no cumple con la minimalidad de la llave. Por tanto no lo es.
Axiomas de Amstrong
Los axiomas de Amstrong con completos, porque cualquier dependencia funcional que sea verdadera en F debe obtenerse a partir de F y aplicando estos axiomas y seguros porque cualquier dependencia que se obtiene a partir de F usando los axiomas de Amstrong serán verdaderos en cualquier relación Ri del esquema relacional en el cual F sea verdadero.
Existen varias reglas que se infieren a partir de los axiomas de Amstrong. A continuación veremos tres de ellas. La demostración de cada una puede encontrarse en "Principles of Database Systems" de Ullman, J. D. Páginas 217-220.
Reglas de inferencias.
El cubrimiento mínimo de un conjunto de dependencias funcionales F es un conjunto de dependencias funcionales equivalentes a F que cumplen:
i) No existen dependencias redundantes.
ii) No existen atributos extraños.
Veamos a continuación un procedimiento para calcular el cubrimiento mínimo de un conjunto de dependencias funcionales.
Proceso de determinación del conjunto minimal de F o cubrimiento mínimo.
El cubrimiento mínimo de un conjunto de dependencias funcionales no es único ya que su forma final depende del orden que se establezca en el cálculo.
Paso 2. Eliminación de las dependencias funcionales redundantes en F'.
Cálculo de clausuras
Paso 3. Eliminar los atributos extraños en F".
Se analizan solamente las dependencias de la forma X(Y, tales que X sea un atributo compuesto
Cálculo de clausuras
El conjunto F''' es el cubrimiento mínimo de F.
Para que el diseño de un fenómeno que se ha analizado resulte adecuado, éste debe presentarse en una forma normal adecuada y debe cumplirse que el mismo satisfaga las propiedades de encuentro sin pérdida y preservación de las dependencias funcionales. Antes de entrar exponer las propiedades mencionadas, veamos algunos conceptos.
Se dice que una relación R se encuentra en una determinada forma normal si satisface un cierto conjunto de restricciones que se establecen para cada forma.
Primera forma normal (1FN): Una relación se encuentra en 1FN si y sólo si todos sus elementos son atómicos, es decir, si todos sus atributos contienen valores indivisibles.
Segunda forma normal (2FN): Una relación se encuentra en 2FN si y sólo si se encuentra en 1FN y todos sus atributos no llaves dependen completamente de la llave primaria.
Tercera forma normal (3FN): Una relación se encuentra en 3FN si y sólo si se encuentra en 2FN y todos sus atributos no llaves dependen directamente de la llave primaria.
Boyce – Codd forma normal (BCFN): Una relación se encuentra en BCFN si y sólo si para toda dependencia no trivial X(Ai en la proyección sobre la relación R, X es llave o superllave de R. Relaciones de este tipo presentan menos anomalías que las anteriores, pero es más difícil obtenerlas.
Ejemplo:
Propiedad de encuentro sin pérdida (PLJ)
Vemos como en la relación resultante del conjunto del encuentro natural de las proyecciones, no conserva el conjunto de dependencias funcionales. La dependencia
Esta descomposición si conserva el conjunto de dependencia funcionales.
Veamos a continuación un algoritmo que permite comprobar el cumplimiento de la PLJ por una descomposición.
Para ello construyamos la tabla inicial (TABLA 1).
La corrección del algoritmo anterior es demostrada en "Principles of Database Systems" Ullman, J. D. pp 228-230.
Este procedimiento puede ser aplicado cuando se tiene una descomposición con cualquier número de relaciones. Sin embargo, para descomposiciones con sólo dos relaciones se establece un método más simple de comprobar si las mismas cumplen la PLJ.
Teorema:
Siempre que se pueda garantizar, es deseable que ( preserve las dependencias en F ya que cada dependencia es vista como restricciones de integridad que deben cumplirse en R. Cuando una descomposición ( preserva el conjunto de dependencias funcionales se dice que ( cumple la propiedad de preservación de dependencias funcionales (PPDF).
Veamos a continuación un algoritmo que permite comprobar el cumplimiento de la PPDF por una descomposición.
El algoritmo anterior termina cuando con la aplicación de la Ri-operación, no se reportan cambios en Z. Si ocurren cambios tales que el conjunto de atributos obtenidos contiene a Y, entonces la descomposición cumple la PPDF. Si cuando termina el algoritmo no se obtiene a Y como parte del conjunto de atributos obtenidos, entonces la descomposición no cumple la PPDF.
Aplicamos AB-operación. Z=BCD
Como a partir de las aplicaciones de la R-operaciones se obtuvo el atributo A, entonces ( cumple la PPDF.
Hasta ahora hemos visto las diferentes formas normales en que pueden encontrarse las relaciones de un esquema relacional. Vimos además dos importantes propiedades que pueden o no cumplir las descomposiciones de los esquemas relacionales. Intentemos construir esquemas relacionales con descomposiciones que cumplan las propiedades y en la cual sus relaciones se encuentren en una forma normal deseada (3FN o BCFN).
Algoritmo de descomposición de un esquema relacional en BCFN que cumple PLJ
Primero se calculan todas las llaves para determinar si se encuentra en BCFN. Las llaves se calculan utilizando en esquema E0. Después se realiza la división del esquema en dos relaciones. Estos pasos se repiten hasta llegar a obtener todas las relaciones en BCFN. La descomposición que se obtiene al final está formada por todas las relaciones que descansan en las hojas del árbol y cada una de ellas se encuentra en BCFN. Este algoritmo garantiza la obtención de una descomposición en una forma normal adecuada que cumple una de las propiedades pero no la otra. Veamos a continuación un algoritmo para obtener una descomposición en 3FN que cumple PPDF.
Algoritmo de descomposición de un esquema relacional en 3FN que cumple PPDF
El procedimiento consiste en:
1. Determinar si existe en R algún atributo no envuelto en ninguna dependencia funcional. De existir este atributo, el mismo pasaría a formar parte de una relación por sí sólo y se quita de R.
La dificultad de este algoritmo consiste en calcular el cubrimiento mínimo.
En el ejemplo anterior se tiene que el conjunto de dependencias funcionales ya es el cubrimiento mínimo de sí mismo. Luego por cada dependencia se forma una relación. La descomposición que se tiene está formada por CT, CHR, HRT, CGS y HRS. Esta descomposición cumple la PPDF y sus relaciones se encuentran en 3FN. Este algoritmo, al igual que el anterior, garantiza la obtención de una descomposición en una forma normal adecuada que cumple una de las propiedades pero no la otra.
Veamos un último teorema que garantiza la obtención de una descomposición en 3FN que cumple las dos propiedades.
Nota: La demostración del teorema anterior es demostrada en "Principles of Database Systems" Ullman, J. D. pp 242-243.
ANEXO1.- Ejemplos de Modelación utilizando el MEER
Ejemplo 1 : Supongamos que se desea automatizar el control de vuelos en un aeropuerto para lo cual se tienen las siguientes descripciones de los elementos que conformarán el sistema. Represente el modelo de entidad relacionalidad extendida.
Entidad 1.: Pasajeros
Atributos : 1. Nombre La llave está formada por el conjunto de {nombre, dirección}
2. Dirección
3. Teléfono
Entidad 2. : Vuelos
Atributos : 1. Número El origen y el destino almacenan el código comercial de los
2. Origen aeropuertos (origen y destino del vuelo)
3. Destino Se supone que los vuelos son directos, es decir, no hay
4. Hora_sal escala. La llave esta formada por el conjunto
5. Hora_lleg {origen, destino, Hora_sal}
Entidad 3. : Salidas
Atributos : 1. Fecha
Entidad 4. : Avión
Atributos : 1. Productor La llave está formada por el conjunto
2. No_modelo {productor, No_modelo}
Entidad 5. : Motor
Atributos :1. No_serie Se supone que el número de serie es asignado por la
aerolínea y sirve como una llave para cada propietario de
cada aerolínea
Entidad 6. : Personal
Atributos : 1. No_empleado La llave está formada por el conjunto {No_empleado}
2. Nombre
3. dirección
4. salario
Entidad 7. : Piloto
Sin atributos
Los pilotos se relacionan con el avión en una relación PODER_VOLAR. Se establecen además las siguientes relaciones:
Modelo de entidad relacionalidad extendida
Ejemplo 2 : Exploremos una base de datos que almacena información sobre jugadores de beisbol, los equipos para los cuales jugaron, el average o promedio de bateo y las posiciones jugadas por cada jugador. Represente el modelo de Entidad -Relacionalidad Extendida a partir de las siguientes descripciones.
Entidad 1. : Jugador
Atributos : 1. nombre La llave está formada por el conjunto {nombre}
2. lnac lnac y fnac son el lugar y fecha de nacimiento
3. fnac respectivamente.
Entidad 2. : Posición
Atributos : 1. nombre La llave está formada por el conjunto {nombre} o por el
2. número conjunto {número}
Entidad 3. : Equipos
Atributos : 1. Privilegio El privilegio es una propiedad, es algo que va a identificar a
2. ciudad a un equipo en una temporada, aunque este equipo cambie
3. año su nombre o cambie la ciudad donde jugó. Es un sello que
marca al equipo en la historia. Por consiguiente, la llave está
formada por el conjunto {privilegio, año}
Se tiene que el promedio de bateo de cada jugador dentro de un determinado equipo. Se establecen las siguientes relaciones :
MODELO DE ENTIDAD RELACIONALIDAD EXTENDIDA
Modelación de datos. Ejercicios
1. Represente el diagrama de entidad relacionalidad extendida para la siguiente situación.
Se desea llevar el control de la actividad realizada en una tienda por departamentos. Por cada empleado se almacena su número, nombre, su dirección y el departamento para el cual el empleado trabaja. Cada departamento posee un nombre, empleados, un jefe y los artículos que vende. De cada artículo a vender se conoce su nombre, el productor, el precio, el número de modelo que le asigna el productor y un número interno asignado por la tienda. Cada productor tiene un nombre, una dirección un conjunto de artículos que le suministra a la tienda y sus precios.
a) Indique la lleve para cada entidad.
b) Establezca las relaciones existentes y diga su clasificación (1-1, 1-n, n-n).
Nota : Plantee las suposiciones que no se han hecho en el ejercicio en dependencia de la naturaleza del problema.
2. El conjunto de seres humanos, dividido en hombres y mujeres, permite establecer diferentes relaciones entre sus elementos en dependencia del parentesco que exista entre los mismos. Teniendo en cuenta lo anterior, represente el diagrama de entidad-relacionalidad extendida para reflejar las relaciones siguientes.
a) MATERNIDAD
b) PATERNIDAD
c) HERMANDAD
d) AMISTAD
e) TIA ó TIO
f) SER ESPOSO DE (SER ESPOSA DE)
3. Represente el diagrama de entidad-relacionalidad extendida para el siguiente fenómeno.
Se tienen empleados, los cuales se describen por su nombre, dirección y el departamento donde este trabaja así como el número que lo identifica. Se distinguirán de modo especial a los vendedores. De cada departamento se conoce el nombre, los empleados que trabajan en él, quién lo dirige y los renglones que vende. Un renglón es vendido por un departamento y sólo uno. De cada renglón conocemos su nombre, el fabricante, precio, número del modelo que le asigna el fabricante y un número interno que le asigna el departamento. Cada fabricante se identifica por un nombre y se describe por su dirección.
4. Represente el diagrama de entidad-relacionalidad extendida para el siguiente fenómeno.
Considere un universo informativo conformado por diversos tipos de vehículos y los individuos relacionados con ellos.
5. Represente el diagrama de entidad-relacionalidad extendida para el siguiente fenómeno.
En un establecimiento textil la organización de la producción se lleva a cabo utilizando el siguiente esquema. En el taller hay máquinas simples en las que se realizan trabajos de festón, dobladillos, ojal y botón y máquinas especiales donde se realiza el perfilado de las piezas; pero todas, tanto las primeras como las últimas se identifican por un número que representa el modelo de fabricación de las mismas.
Para llevar a cabo el control de los trabajadores, la administración los divide en dos grupos fundamentales. Un grupo lo conforman los trabajadores organizativos (contabilidad, recursos humanos, auxiliares de limpieza, etcétera) y el otro grupo está formado por los operarios, que son los que directamente interactúan con la producción.
De cada trabajador se conoce su nombre y su dirección. Para controlar la producción que realiza cada operario, el departamento de producción le asocia a cada uno de ellos el número de la máquina en que opera, la operación que realiza y el número de los paquete que recibe para realizar dicha producción, los que se describen con la cantidad de piezas que contiene cada uno de ellos.
Cada operario tiene un nombre y un número que lo identifica. Además tiene una categoría un tiempo de producción y una norma. Las operaciones en el taller pueden realizarse de forma manual y automatizada atendiendo a las necesidades de las mismas.
MODELO DE ENTIDAD RELACIONALIDAD EXTENDIDA PARA EJERCICIO No. 2
MODELO DE ENTIDAD RELACIONALIDAD EXTENDIDA PARA EJERCICIO No. 3
MODELO DE ENTIDAD RELACIONALIDAD EXTENDIDA PARA EJERCICIO No. 4
MODELO DE ENTIDAD RELACIONALIDAD EXTENDIDA PARA EJERCICIO No. 5
Lenguajes relacionales. Ejercicios
1. Sea R y S dos relaciones formadas por las siguientes tablas:
Ignore los nombres de los atributos para el cálculo de la unión y la diferencia.
2. Suponga que R y S son relaciones de aridad 3 y 2 respectivamente. Convierta la expresión
al
a) cálculo relacional de tuplos
b) cálculo relacional de dominios.
3. Convierta la siguiente fórmula del cálculo relacional de tuplos
a) lenguaje natural
b) cálculo relacional de dominiosálgebra relacional
4. Convierta la fórmula del cálculo relacional de dominios
al
a) lenguaje natural
b) cálculo relacional de tuplos
c) álgebra relacional.
5. Considere la siguiente base de datos formada por tres relaciones
frecuenta(bebedor, bar) bares que cada bebedor frecuenta
oferta(bar, cerveza) cerveza que cada bar oferta
gusta(bebedor, cerveza) cerveza que le gusta a cada bebedor
Exprese en el
i) álgebra relacional
ii) cálculo relacional de tuplos
iii) cálculo relacional de dominios
las siguientes demandas del lenguaje natural:
a) Los bares que ofertan la cerveza que le gusta a Charles.
b) Los bebedores que frecuentan al menos un bar que oferta la cerveza que a ellos les gusta.
c) Los bebedores que frecuentan solamente los bares que ofertan algunas de las cervezas que a ellos les gusta.
d) Los bebedores que no frecuentan los bares donde ofertan una cerveza que a ellos les gusta.
6. Se dice que una operación es independiente si éste puede ser definido sin recursividad, es decir, si éste no se usa en su propia definición. Demuestre que los operadores del álgebra relacional unión, diferencia, selección, proyección y producto cartesiano son independientes.
Respuestas
Computar
a) lenguaje natural
Antes de dar solución a esta pregunta es necesario especificar que se tiene. Se cuenta con dos relaciones R y S. La aridad de ambas relaciones es 2. Luego la expresión representa los tuplos de R tales que sus segundas componentes no son iguales a las primeras componentes de los tuplos que pertenecen a S.
a) lenguaje natural
A la relación pertenecen los tuplos de aridad 2 tales que si invertimos las posiciones de sus componentes, también encontramos el tuplos resultante de la inversión. En otras palabras a la relación pertenecen tanto los tuplos como sus simétricos.
b) cálculo relacional de tuplos
5. Expresar las siguientes demandas del lenguaje natural en el lenguaje apropiado, teniendo en cuenta las relaciones que a continuación le ofrecemos.
frecuenta(bebedor, bar) bares que cada bebedor frecuenta
oferta(bar, cerveza) cerveza que cada bar oferta
gusta(bebedor, cerveza) cerveza que le gusta a cada bebedor
a) Los bares que ofertan la cerveza que le gusta a Charles.
i) álgebra relacional
Para buscar todas las cervezas que le gustan a Charles es necesario hacer una selección.
Si se realiza un encuentro natural de la relación anteriormente obtenida con la relación oferta(bar, cerveza) tendremos los bares que ofertan la cerveza que a Charles le gusta.
b) Los bebedores que frecuentan al menos un bar que oferta la cerveza que a ellos les gusta.
i) álgebra relacional
Si se realiza un encuentro de las relaciones oferta(bar, cerveza) y frecuenta(bebedor, bar) se obtienen los bares que cada bebedor frecuenta y la cerveza que se oferta en cada uno de ellos. Si la relación resultante la encontramos con la relación gusta(bebedor, cerveza), se obtienen los bebedores que frecuentan los bares que ofertan la cerveza que a ellos les gusta. Se obtendría la expresión siguiente :
c) Los bebedores que frecuentan solamente los bares que ofertan algunas de las cervezas que a ellos les gusta.
i) álgebra relacional
Si se realiza un encuentro de las relaciones oferta(bar, cerveza) y gusta(bebedor, cerveza) se obtienen todas las combinaciones de bebedores y bares a partir de las cerveza que a ellos le gusta.
Hallamos una proyección de la relación Q y obtenemos a los bebedores que frecuentan los bares que ofertan cervezas que a ellos no les gusta.
d) Los bebedores que no frecuentan los bares donde ofertan una cerveza que a ellos les gusta.
i) álgebra relacional
Si se realiza un encuentro de las relaciones frecuenta(bebedor. bar), oferta(bar, cerveza) y gusta(bebedor, cerveza) se obtienen todos los bebedores que frecuentan al menos un bar donde ofertan la cerveza que a ellos le gusta. Denominaremos a la relación finalmente obtenida P.
Teoría de diseño. Ejercicios
1.- Determine si son equivalentes los conjuntos F y G
6.- Sea R un esquema relacional dado. Calcule las posibles llaves de R teniendo en cuenta los siguientes conjuntos de dependencias funcionales:
a) Encuentre un cubrimiento mínimo para las dependencias de F proyectadas sobre estas relaciones.
b) Encuentre un cubrimiento mínimo para la unión de las dependencias proyectadas.
c) ¿Preserva esta descomposición las dependencias funcionales?
Bibliografía del curso
Análisis y diseño de sistema de información.
An introduction to database system
Database system/Ullman
Autor:
Venus Faez Fuentes
Página anterior | Volver al principio del trabajo | Página siguiente |