Bases de Datos Notas de Curso Miguel Murguía miguelmurguía@gmail.com México, D.F. Mayo, 2004 Junio, 2005 Contenido I Introducción......................................................................6 I. Conceptos Básicos de Bases de Datos...........................................6 1.1 Panorama de las Bases de Datos.............................................................. 6 1.2 Modelos de Datos: 3 Niveles...................................................................... 9 1.3 Los Lenguajes en las Bases de Datos ..................................................... 12 1.4 Arquitectura general de un DBMS............................................................ 14 Preguntas....................................................................................................... 16 2. El Modelo Entidad-Relación .........................................................17 Generalidades del Modelo Entidad-Relación ................................................. 17 Dominios y Atributos ...................................................................................... 27 Restricción en las relaciones.......................................................................... 28 Relaciones (papeles y recursividad) .............................................................. 29 II El Modelo Relacional de Bases de Datos ....................30 1. Introducción al Modelo Relacional................................................30 Antecedentes y orígenes del Modelo Relacional ........................................... 30 Conceptos del Modelo Relacional .................................................................. 31 Tuplas ............................................................................................................ 32 Diagrama E-R para una escuela .................................................................... 36 Otra definición de relación.............................................................................. 37 Esquemas de relaciones ................................................................................ 38 Esquema de una Base de Datos.................................................................... 40 Notación ......................................................................................................... 41 2. Principales características del Modelo Relacional .......................42 Restricciones del Modelo Relacional.............................................................. 42 Relación: el único tipo de dato compuesto..................................................... 43 Críticas al modelo Entidad-Relación .............................................................. 44 Evolución del Modelo Relacional ................................................................... 45 Diferencias entre las Matemáticas y en el Modelo Relacional del concepto de relación y terminología ................................................................................... 46 Objetivos del Modelo Relacional .................................................................... 47 Interrelación de información entre relaciones distintas .................................. 47 Transacción.................................................................................................... 48 SQL (Structured Query Language) ................................................................ 49 DBMS relacionales......................................................................................... 50 La relación universal ...................................................................................... 51 Razones para soportar dominios ................................................................... 52 Recuerde que … ............................................................................................ 54 Bases de Datos. Miguel Murguía. FAR. 2 III Álgebra Relacional ......................................................55 1. Operadores básicos del Álgebra Relacional ................................55 Introducción.................................................................................................... 55 Los operadores .............................................................................................. 56 Proyección ..................................................................................................... 58 Theta-Selección ............................................................................................. 60 Combinando selección y proyección .............................................................. 62 Select y Theta-Select ..................................................................................... 63 Theta-selección extendido ............................................................................. 65 Producto cartesiano ....................................................................................... 66 Renombrar ..................................................................................................... 71 Unión.............................................................................................................. 72 Compatibilidad de unión................................................................................. 73 Diferencia ....................................................................................................... 74 Definición formal del álgebra relacional.......................................................... 75 Intersección.................................................................................................... 76 Producto natural............................................................................................. 77 Theta Join ...................................................................................................... 79 Theta Join extendido ...................................................................................... 81 Join natural..................................................................................................... 81 División........................................................................................................... 82 División (Reforzamiento) ................................................................................ 85 Asignación...................................................................................................... 86 Ejercicios I...................................................................................................... 88 Ejercicios II..................................................................................................... 89 2. Modificación de la Base de Datos ................................................90 Asignación...................................................................................................... 90 Inserción......................................................................................................... 91 Actualización .................................................................................................. 92 Borrar ............................................................................................................. 93 3. Vistas ............................................................................................93 Definición de vistas ........................................................................................ 93 Modificabilidad de las Vistas .......................................................................... 95 Algoritmo VU .................................................................................................. 96 IV Diseño de bases de Datos Relacionales .......................97 1. Normalización ...............................................................................97 Dependencia funcional................................................................................... 97 1a. forma normal ............................................................................................ 99 2a. forma normal ............................................................................................ 99 3a. forma normal .......................................................................................... 101 Forma normal de Boyce-Codd ..................................................................... 103 4a. forma normal .......................................................................................... 105 Dependencia multivaluada ........................................................................... 107 Limitaciones de la normalización ................................................................. 109 Dependencia de reunión (join) ..................................................................... 110 5NF o PR/NF (forma normal de proyección-reunión)................................... 111 Bases de Datos. Miguel Murguía. FAR. 3 Resumen de Formas Normales ................................................................... 115 Dependencias Funcionales .......................................................................... 116 Axiomas de Armstrong ................................................................................. 117 Análisis......................................................................................................... 119 Síntesis ........................................................................................................ 120 Ejercicios...................................................................................................... 121 2. Árboles, redes y relaciones recursivas .......................................123 Árboles ......................................................................................................... 123 Relaciones recursivas .................................................................................. 124 Redes........................................................................................................... 126 3. Integridad....................................................................................127 Integridad de dominio................................................................................... 127 Integridad intra-relacional............................................................................. 129 Integridad referencial ................................................................................... 129 Integridad semántica intra-relacional ........................................................... 130 Análisis de consistencia en bases de datos geográficas.............................. 130 Afirmaciones ................................................................................................ 131 Disparadores................................................................................................ 132 4. Autorizaciones ............................................................................132 5. Catálogo .....................................................................................135 On-line.......................................................................................................... 135 Concurrencia................................................................................................ 135 Descripción de dominios, relaciones base y vistas ...................................... 137 Restricciones de integridad .......................................................................... 138 Funciones definidas por el usuario............................................................... 139 Datos de autorización .................................................................................. 139 Estadísticas.................................................................................................. 139 V Lógica y Cálculo Relacional de Tuplas ......................141 1. Lógica .........................................................................................141 Operadores lógicos ...................................................................................... 141 Tablas de verdad ......................................................................................... 143 Tautologías .................................................................................................. 145 Reglas de inferencia .................................................................................... 145 Equivalencias lógicas ................................................................................... 149 2. Lógica de predicados .................................................................150 Lenguaje de 1er orden o de predicados....................................................... 150 Reglas de la negación:................................................................................. 150 Reglas de cuantificación .............................................................................. 151 3. Cálculo relacional de tuplas........................................................153 Bibliografía .......................................................................156 Páginas WWW .................................................................157 Temarios ...................................................................................................... 157 Bases de Datos. Miguel Murguía. FAR. 4 Modelo Relacional........................................................................................ 157 ANEXO 1. Prolog como Base de Datos ..........................158 A) Código del Programa .................................................................158 B) Resultado de Querys .................................................................160 Bases de Datos. Miguel Murguía. FAR. 5 I Introducción I. Conceptos Básicos de Bases de Datos 1.1 Panorama de las Bases de Datos Orígenes del modelo relacional La era de las bases de datos relacionales se inicia con la publicación de una serie de artículos de Codd; el primero es: Codd, E. F. 1970. A relational model of data for large shared data banks. Communications of the ACM 13:377-387. Previo al modelo relacional existían otros, los más populares eran el modelo de red y el modelo jerárquico. Actualmente se puede decir que esos modelos fueron un camino recorrido que llevó al modelo relacional. Aunque los modelos jerárquico y de red son la base de algunos DBMS usados en la actualidad, se puede decir, en general, que esos modelos son historia. A inicios de los años 60’s se construyó lo que se puede considerar el primer DBMS, el sistema “Integrated Data Store”, por Charles Bachman de la General Electric que sentó las bases del modelo de red. A finales los años 60’s nace el IMS (Information Management System) de IBM y que fue base del modelo de jerárquico. El modelo relacional soluciona varios de los problemas no resueltos por otros modelos previos, sin embargo, se debe de considerar que el correcto planteamiento de los problemas es en sí un avance hacia su solución. Así, los modelos jerárquico y de red pueden considerarse como escalones en la construcción de modelos eficientes de bases de datos. El modelo relacional es robusto debido a la formalidad con que se plantea, pues está fundamentado matemáticamente en el álgebra de relaciones. En la actualidad, una de las principales alternativas al modelo relacional es el modelo orientado a objetos, sin embargo, el modelo relacional aún se considera más importante por su fundamento, la cantidad de usuarios, herramientas y sistemas comerciales existentes. Bases de Datos. Miguel Murguía. FAR. 6 Los “Turing Award” Los reconocimientos “Turing Award” son el equivalente en computación al premio Nobel. El área de Bases de Datos ha recibido ya tres de ésos reconocimientos: el primero para Bachman, por haber puesto las bases del modelo de red; el segundo para Codd por su Modelo Relacional, y el tercero para James Gray por sus trabajos sobre el concepto de transacción en Bases de Datos. Objetivos de los DBMS Los sistemas manejadores de bases de datos (DBMS por sus siglas en inglés) son un tipo de sistemas informáticos enfocados a la tarea del almacenamiento y recuperación de información, por lo que pueden ser sujetos a las metodologías de desarrollo de sistemas, por ejemplo UML. Existe una amplia gama de DBMS comerciales, como por ejemplo MSAccess, MS-SQL_Server, Oracle, Informix o Sybase; También existen alternativas de DBMS libres como MySQL o PosgreSQL. Los DBMS pueden ser vistos como “esqueletos” de bases de datos, en los que sólo es necesario incorporar los datos específicos de nuestra aplicación, por ejemplo, los nombres de los alumnos de una escuela, las calificaciones para cada materia, las claves de los grupos y los nombres de los profesores. Sin embargo, también es necesario definir la “estructura” de los datos, es decir el modelo de datos. Ese modelo de datos debe construirse de acuerdo a las necesidades de información, ya que para un mismo dominio (escuela o un sistema de control de inventario, por ejemplo) existen varias maneras de definir el modelo de acuerdo al nivel de precisión que se requiera. Los principales objetivos de los DBMS son: • • • Almacenamiento de grandes volúmenes de información. Procesamiento de la información (generación de reportes, análisis, reportes ejecutivos). Seguridad, eficiencia y oportunidad en la información. Los DBMS dan facilidades para realizar varias tareas comúnmente asociadas a la información de una base de datos, como son la definición de la estructura de las tablas donde se almacenará la información, el tipo de datos a almacenar, la creación de pantallas de captura, la generación de reportes, clasificaciones, filtros, actualizaciones, entre otras. Por ejemplo, para una base de datos de una escuela, el DBMS debe dar facilidades para: • • • • • • Registro de calificaciones. Impresión de listas de los grupos. Captura de calificaciones finales. Corrección de calificaciones. Reportes de materias que adeuda un estudiante. Promedios de calificaciones por materia. Bases de Datos. Miguel Murguía. FAR. 7 • Generación de historias académicas. Se puede generar un programa para cada tarea que funcione de manera independiente para constituir un “sistema procesador de archivos”. Pero se tienen los problemas de: Redundancia e inconsistencia de datos. Las direcciones de los clientes pueden estar almacenados en dos archivos (por ejemplo, en el de “cuentas de ahorro” y en el de “cuentas de cheques”), lo que hace que ocupen doble espacio, además de que se puede generar la situación de que se actualice sólo en un archivo generando una inconsistencia. Dificultad en el acceso. Casi todas las consultas son planeadas. Para hacer consultas no planeadas se necesitan escribir nuevos programas. Aislamiento de los datos. Los datos están repartidos en varios archivos, por lo que pueden tener diferentes formatos y es necesario escribir programas para cada nuevo proceso. Seguridad. No todos los usuarios del sistema deben tener acceso a todas las operaciones (v.g. actualización de saldos, ver ciertas cuentas, etc.). Integridad. Los valores de los campos de las tablas deben satisfacer ciertas “restricciones de dominio”. Por ejemplo, las cuentas de ahorro no deben contener cantidades negativas. Las ventajas de los DBMS con respecto a los sistemas de archivos son: • • • • • • • Independencia de Datos Eficiencia en el Acceso Integridad y Seguridad Administración de Datos Acceso Concurrente Recuperación de Crash Desarrollo de Aplicaciones en tiempos reducidos La independencia de datos se refiere a que los programas de aplicación están aislados de la forma en que estructuran los datos, y a su vez, la forma en que estructuran los datos tiene cierta independencia de cómo se almacenan físicamente. Se logra gracias a la existencia de “esquemas”, que se revisarán más adelante. Bases de Datos. Miguel Murguía. FAR. 8 1.2 Modelos de Datos: 3 Niveles Abstracción de datos Uno de los objetivos de los sistemas de bases de datos es mostrar una visión abstracta de los datos, es decir, se esconden ciertos detalles de cómo se almacenan y manejan los datos, para mostrar sólo aquellos aspectos de utilidad práctica al usuario. Esa visión abstracta de los datos puede clasificarse en tres niveles: Nivel físico. Se describe el almacenamiento digital de los datos en la memoria principal y secundaria de la computadora. Se debe de considerar la arquitectura y atributos de los sistemas y medios de almacenamiento. Nivel conceptual. Se describe la información que se almacena en la base de datos, hasta cierto punto independientemente del sistema físico en el que se implemente. En este nivel, la información ya tiene un carácter semántico concreto y directo para los usuarios (v.g. un 7 no se ve como una representación decimal de 0111 en binario, sino como la calificación de un alumno en cierta materia). Nivel de visión. Aunque en el nivel conceptual se describe la manera de almacenar información que tiene un significado concreto en el dominio de aplicación, en el nivel de visión se centra aún más en el significado para el usuario. La información se clasifica de acuerdo al tipo de usuario, cambiando el formato de presentación y seleccionando sólo aquella de interés directo. Modelos de datos Los modelos de datos son herramientas para describir la estructura de una base de datos: los datos y las relaciones entre ellos, la semántica asociada y las restricciones de consistencia. Se clasifican en tres grupos según el nivel de abstracción. • • • Semántico: Modelos basados en objetos Lógico: Modelos lógicos basados en registros Físico: Modelos físicos de datos Bases de Datos. Miguel Murguía. FAR. 9 Nivel SEMÁNTICO: Niveles conceptual y de visión. Permiten expresar restricciones de datos explícitamente. Hay muchos modelos, entre ellos: • • • • • • • UML Modelo entidad-relación Modelo orientado a objetos Modelo binario Modelo semántico de datos Modelo infológico Modelo funcional de datos De los anteriores, los más usados en la actualidad son el modelo entidad relación y el orientado a objetos. Algunos conceptos manejados en el modelo entidad relación son: Entidades Relaciones Conjunto de Entidades Conjunto de Relaciones Cardinalidad de Asignación Diagrama E-R Conceptos manejados en el modelo orientado a objetos son: Clases Instancias Métodos Mensaje Herencia Polimorfismo Nivel LÓGICO Los modelos lógicos basados en registros correspondes a los niveles de abstracción conceptual y físico. Se llaman basados en registros porque la base de la representación son los registros de formato fijo, donde cada campo normalmente es de longitud fija, lo que simplifica su implementación. En el modelo orientado a objetos se utilizan registros de longitud variable, generando una estructura más rica en el nivel físico. Los tres modelos de datos más aceptados actualmente son el relacional y el de objetos. Los modelos de red y jerárquico se consideran, como ya se comento, un escalón histórico para la concepción del relacional. Bases de Datos. Miguel Murguía. FAR. 10 Nivel FÍSICO Los modelos físicos corresponden al nivel de abstracción físico. Hay muy pocos modelos físicos en uso, a diferencia de los modelos lógicos; dos de los más conocidos son el modelo unificado y la memoria de elementos. Esquema: operación de los niveles de abstracción Los niveles de abstracción de datos son una estrategia para organizar los datos considerando desde la plataforma física hasta el nivel de usuario. Los esquemas son las estructuras diseñadas para resolver cada nivel de abstracción, así, los sistemas de bases de datos soportan varios esquemas: Nivel de abstracción Físico Conceptual Visión Esquema Esquema físico Esquema conceptual Esquema externo En el nivel de visión pueden existir varios subesquemas, ya que su función es brindar una forma especializada de acceso a la información a cada tipo de usuario. Figura 2. Los tres niveles de esquemas en los modelos de Bases de Datos. El esquema es en sí una estructura capaz de almacenar un conjunto de datos. Uno de los problemas que debe resolver una base de datos es el cambio de la información a través del tiempo, por esa razón se define el concepto de instancia, que es una colección de datos almacenada en un determinado instante. Por lo que la instancia, por definición cambiaa través del tiempo, mientras que el esquema, el diseño global de la BD, normalmente no cambia o cambia poco y en intervalos de tiempo mucho mayores. Bases de Datos. Miguel Murguía. FAR. 11 Haciendo una analogía con los lenguajes de alto nivel,el esquema corresponde a la nocón de tipo, mientras que la instancia a la de valor que adquiere determinada variable. Independencia de datos Independencia de datos es la capacidad de modificar la definición de un esquema sin afectar la definición de un nivel superior. Independencia Lógica: Modificar el esquema conceptual sin provocar que se necesiten escribir los programas de aplicación. Independencia Física: Modificar el esquema físico sin provocar que se necesiten escribir los programas de aplicación. La independencia lógica es más difícil de lograr que la física, pues los programas de aplicación son fuertemente dependientes de los datos que acceden. La independencia de datos es análoga a los tipos abstractos de datos de los lenguajes de programación. 1.3 Los Lenguajes en las Bases de Datos Los DBMS pueden responder a una amplia gama de preguntas sin necesidad de mucho esfuerzo por parte del usuario. Estas preguntas a la BD se llaman “Queries”. Los lenguajes para trabajar con datos se pueden dividir en dos tipos, o bien tiene dos funciones: Lenguaje de definición de datos Lenguaje de manipulación de datos Lenguaje de definición de datos DDL (data definition language): Lenguaje de definición de datos. Especifica un esquema de base de datos. El resultado de la compilación de un conjunto de instrucciones de DDL son un conjunto de tablas cuya definición se almacena en el diccionario de datos (o directorio). El diccionario contiene metadatos (datos sobre los datos). Lenguaje de manipulación de datos DML (data manipulation language): Lenguaje que permite a los usuarios acceder los datos y permite: • Recuperar información almacenada en la BD • Incorporar nueva información • Borrar información Bases de Datos. Miguel Murguía. FAR. 12 • Modificar información almacenada en la BD Se pueden dividir en dos tipos: • • Procedimentales (qué datos y cómo obtenerlos) No procedimentales (qué datos y no cómo obtenerlos) Lenguaje de consulta: subconjunto del DML que permite sólo consultas, pero no modificaciones. El lenguaje usado actualmente como DML y DDL es SQL. Aunque existen sistemas cion otros lenguajes, se puede de decir que para fines prácticos SQL “es” el lenguaje que utilizan los DBMS. Los fundamentos para los lenguajes de “queries” son el Cálculo Relacional y el Álgebra Relacional, ambos son equivalentes, el primero es declarativo, mientras que el segundo se concibe con base en operadores. El administrador de la base de datos La persona que se encarga del control central del sistema es el “administrador de la base de datos” (DBA). Sus funciones son: • • • • • • Definición del esquema. Definición de la estructura de almacenamiento y del método de acceso. Modificación del esquema y de la organización física. Concesión de autorizaciones para el acceso a los datos. Especificación de las restricciones de integridad. Aspectos de seguridad Usuarios de bases de datos Se pueden clasificar en cuatro: Programadores de aplicaciones. Generan programas de aplicación en DML, en ocasiones inmerso en algún lenguaje de alto nivel. Usuarios sofisticados. No escriben programas de aplicación, pero sí realizan preguntas sofisticadas en el lenguaje DML. Usuarios especializados. Usuarios interesados en aplicaciones sofisticadas, como sistemas expertos, sistemas de Información para Ejecutivos, Sistemas Multimedia (video, sonido, etc.). Usuarios finales. Únicamente hacen uso de los programas o “queries” ya establecidos. Bases de Datos. Miguel Murguía. FAR. 13 1.4 Arquitectura general de un DBMS En la figura 3 se muestra la arquitectura básica de un DBMS, los diferentes módulos se pueden agrupar en cuatro grandes clases: Máquina de evaluación Gestor de Base de Datos Administrador de Recuperación Control de Concurrencia Figura 3. Arquitectura de un DBMS (tomada de Ramakrishnan y Gehrke, 2003). Máquina de evaluación. Traduce instrucciones del lenguaje de consultas a instrucciones de bajo nivel que entiende el gestor de base de datos. Intenta transformarla en una pregunta equivalente pero eficiente. Parser Optimizador Plan de ejecución Evaluador. Traduce las instrucciones del DML a comandos de manipulación de archivos de bajo nivel. Bases de Datos. Miguel Murguía. FAR. 14 Gestor de Base de Datos. Interfaz entre los datos de bajo nivel y los programas de aplicación y consultas al sistema: Métodos de acceso Administrador del buffer Administrador de espacio en disco: Asignación de espacio en disco. Estructuras de datos usadas para representar información. Administrador de Recuperación. Todos los sistemas informáticos están sujetos a fallas lógicas y físicas (daño del disco, alteraciones en el suministro de energía, errores de software, etc.), el DBMS debe ser capaz de detectar estas fallas y tomar las medidas necesarias para reestablecer la base de datos, normalmente mediante copias de seguridad o bitácoras (archivos “log”). Control de Concurrencia. Cuando varios usuarios actualizan la base de datos es posible que no se conserve la consistencia de los datos. El DBMS debe controlar estas concurrencias, que es los que permite a los usuarios pensar como si ellos estuvieran trabajando de manera aislada. Administrador de transacciones Administrador de Bloqueos. “protocolo de bloqueo” Otros elementos que administra el DBMS son: Precompilador DML. Convierte las instrucciones de DML en un programa de aplicación, en llamadas normales a procedimientos en lenguaje de alto nivel. Compilador DDL. Convierte instrucciones de DDL (Data Definition Language) en un conjunto de tablas con metadatos. Archivos de Datos. Almacenan la base de datos. Diccionario de Datos. Almacenan metadatos: datos o información sobre la estructura de la base de datos. Índices. Proporcionan acceso rápido a los datos. Bases de Datos. Miguel Murguía. FAR. 15 Preguntas 1. 2. 3. 4. 5. ¿Cuáles son los niveles de esquemas de una BD? ¿Qué relación tiene la independencia de datos y los esquemas? ¿Cuáles son las ventajas de usar un DBMS? Identifica cada ventaja con los datos que manipulas en tu trabajo Explica el concepto de TRANSACCION y su importancia en el manejo de información. 6. Explica la arquitectura de los DBMS. 7. Define con tus palabras los siguientes conceptos: • BD Relacional • Bloqueo • Concurrencia • DBA • DBMS • DML • Esquema • Independencia de Datos • Nivel de abstracción • Protocolo de bloqueo • Recuperación • Registro de Transacciones • SQL Bases de Datos. Miguel Murguía. FAR. 16 2. El Modelo Entidad-Relación Generalidades del Modelo Entidad-Relación El modelo entidad relación es un “modelo lógico basado en objetos” que resuelve el problema de la descripción de datos en los niveles conceptual y de visión. Consiste en un conjunto de objetos básicos llamados Relaciones y Entidades. Entidades y Relaciones Entidad. Objeto que existe y es distinguible de otros. Puede ser físico (v.g. persona o libro) o abstracto (v.g. día festivo o conceptos). Conjunto de Entidades. Grupo de entidades del mismo tipo, por ejemplo, el conjunto (ALUMNO) de todas las personas que toman cursos en la FAR. Los conjuntos de entidades no necesariamente deben ser disjuntos, por ejemplo ALUMNO y PROFESOR pueden compartir entidades. Atributo. Características de las entidades. Una entidad está representada por un conjunto de atributos. Los atributos representan el uso de un dominio. Por ejemplo, Nombre_alumno es una atributo del conjunto de entidades ALUMNO. Dominio. Conjunto de valores permitidos para cada atributo. Por ejemplo, el dominio del atributo calificación podría ser el conjunto de todos los reales entre 0 y 10. Relación. Asociación entre dos o más entidades. Bases de Datos. Miguel Murguía. FAR. 17 Por ejemplo, a continuación se muestra una relación entre las entidades PROVEEDOR y PRODUCTO: PRODUCTO Nombre_producto LAPIZ GOMA CHOCOLATE CHAMOI PROVEEDOR Nombre_proveedor OFIMAX LUMEN EXPENDIO LUPITA MAGO DE OZ Teléfono 645 4523 234 5467 545 3421 534 6756 Que puede representarse por la tupla: Nombre_producto LAPIZ Nombre_proveedor LUMEN Teléfono 234 5467 y podría significar, por ejemplo, que LUMEN vende el producto LAPIZ. Formalmente: • Dados los conjuntos D1, D2, ..., Dn, se dice que R es una relación sobre estos n conjuntos si es un conjunto de n elementos ordenados (d1, d2, ..., dn) tales que d1 ∈ D1, d2 ∈ D2, ..., dn ∈ Dn. • Los conjuntos D1, D2, ..., Dn son los dominios de R. • El valor n es el grado de R. Dada esa definición, el término relación, también suele usarse para denotar a una tabla o conjunto de entidades, pues si: D1= Nombre_proveedor D2= Teléfono entonces, la siguiente es una relación: PROVEEDOR Nombre_proveedor OFIMAX LUMEN EXPENDIO LUPITA MAGO DE OZ Teléfono 645 4523 234 5467 545 3421 534 6756 Se dice que PROVEEDOR es una relación de grado 2 y tiene una cardinalidad de 4 (número de tuplas). Posteriormente se revisará otra definición de relación. Bases de Datos. Miguel Murguía. FAR. 18 Relación binaria. Relación de grado 2, i.e. entre dos entidades: R= {di, dj} Cardinalidad de una relación. Número de entidades que contiene una relación. Conjunto de Relaciones Conjunto de relaciones: Conjunto de relaciones del mismo tipo. Por ejemplo, la relación CATALOGO entre las entidades PROVEEDOR y PRODUCTO: PRODUCTO Nombre_producto LAPIZ GOMA CHOCOLATE CHAMOI CATALOGO PROVEEDOR Nombre_proveedor OFIMAX LUMEN EXPENDIO LUPITA MAGO DE OZ Teléfono 645 4523 234 5467 545 3421 534 6756 que puede representarse por la tabla: CATALOGO Nombre_producto LAPIZ LAPIZ LAPIZ GOMA GOMA CHOCOLATE CHOCOLATE CHAMOI Nombre_proveedor OFIMAX LUMEN EXPENDIO LUPITA LUMEN EXPENDIO LUPITA EXPENDIO LUPITA MAGO DE OZ EXPENDIO LUPITA Un conjunto de relaciones puede definirse como un subconjunto de: R={(e1, e2,... en) | e1 ∈ E1, e2 ∈ E2, ... en ∈ En,} donde: Bases de Datos. Miguel Murguía. FAR. 19 e1, e2,... en son entidades; E1, E2,... En son conjuntos de entidades y (e1, e2,... en) es una relación. Cardinalidad de asignación Cardinalidad de asignación: Número de entidades con las que puede asociarse otra entidad, dentro de un conjunto de relaciones. Si A y B son conjuntos de entidades, la cardinalidad de asignación de un conjunto de relaciones entre ellas, puede ser: 1:1 Si la entidad a∈A está asociada a lo más con una b∈B y la entidad b∈B está asociada a lo más con una a∈A. 1:N Si la entidad a∈A está asociada a lo más con una b∈B y la entidad b∈B está asociada con un número cualquiera de entidades a∈A. N:M Si la entidad a∈A está asociada con un número cualquiera de entidades b∈B y la entidad b∈B está asociada con un número cualquiera de entidades a∈A. Dependencia de existencia. La entidad x es dependiente por existencia de y, si es necesaria la existencia de la entidad y para la existencia de x. (Si se borra y, también se debe borrar x). Se dice que y es la entidad dominante y x la entidad subordinada. Bases de Datos. Miguel Murguía. FAR. 20 Cardinalidad de asignación: ejemplos Cardinalidad de asignación 1:1 ALUMNO Nombre_alumno ... DIRECCION Calle_y_número Colonia ... Cardinalidad de asignación 1:N CARRERA Nombre_carrera ALUMNO Nombre_alumno ... Cardinalidad de asignación N:M PRODUCTO Nombre_producto LAPIZ GOMA CHOCOLATE CHAMOI CATALOGO PROVEEDOR Nombre_proveedor OFIMAX LUMEN EXPENDIO LUPITA MAGO DE OZ Teléfono 645 4523 234 5467 545 3421 534 6756 Dependencia de existencia: ALUMNO (entidad subordinada) podría ser dependiente de CARRERA (entidad dominante). Bases de Datos. Miguel Murguía. FAR. 21 Claves Superclave. Conjunto de atributos que permiten distinguir de forma única a una entidad dentro del conjunto de entidades. Por ejemplo, {Rfc} es una superclave de la entidad CONTRIBUYENTE, también {Rfc, Nombre} es una superclave, pero {Nombre} no es una superclave, pues varios contribuyentes pueden tener el mismo nombre. Clave candidata. Superclave, tal que ningún sobconjunto propio es una superclave. El concepto de clave candidata sirve para definir conjuntos con cardinalidad mínima de atributos que identifiquen a las entidades. Pueden existir varias claves candidatas para cada entidad. Clave primaria. Clave candidata que elige el diseñador para distinguir a las entidades dentro del conjunto de entidades. Clave alterna. Clave candidata que no es la clave primaria. Conjunto débil de entidades. Conjunto de entidades para el que no se puede definir una clave candidata. Conjunto fuerte de entidades. Conjunto de entidades para el que sí se puede definir al menos una clave candidata. Entidad dominante. Entidad que pertenece a un conjunto fuerte de entidades. Entidad subordinada. Entidad que pertenece a un conjunto débil de entidades. Discriminador. Conjunto de atributos que el diseñador crea de manera artificial para permitir distinguir de manera única a cada entidad de un conjunto débil de entidades. Por ejemplo, el conjunto débil de entidades TRANSACCION = {Número_de_cuenta, Número_transacción, Fecha} contiene el atributo Número_transacción como discriminador. Así, la clave primaria de un conjunto débil de entidades está formada por la clave primaria del conjunto de entidades fuerte del que depende su existencia y el discriminador. Bases de Datos. Miguel Murguía. FAR. 22 Por ejemplo, {Número_de_cuenta, Número_transacción } distingue entidades TRANSACCION dentro de una misma CUENTA. Atributos de relaciones Sea R un conjunto de relaciones que involucran a los conjuntos de entidades E1, E2, ...En y sea Ei los atributos que conforman a la clave primaria de Ei, entonces los atributos de R son: la clave primaria de E1, la clave primaria de E2, ... y la clave primaria de En es decir: {E1, E2, ..., En} R puede tener atributos descriptivos (adicionales), por lo que el conjunto de atributos de la relación R sería: {E1, E2, ..., En, a1, a2, ..., an} E1=PRODUCTO Nombre_producto LAPIZ GOMA CHOCOLATE CHAMOI Clase PAPELERIA PAPELERIA DULCERIA DULCERIA E2=PROVEEDOR Clase PAPELERIA PAPELERIA DULCERIA DULCERIA Nombre_proveedor OFIMAX LUMEN EXPENDIO LUPITA MAGO DE OZ Teléfono 645 4523 234 5467 545 3421 534 6756 Por ejemplo, los atributos de la relación PEDIDO Bases de Datos. Miguel Murguía. FAR. 23 PEDIDO E1 E2 Nombre_producto LAPIZ CHOCOLATE Nombre_proveedor LUMEN LUPITA a1 Cantidad 100 20 Reglas de integridad La interpretación del mundo real que se hace de una relación, lleva a considerar la imposición de reglas de integridad. Es decir, hay cosas que el modelo teórico permite, pero que no se dan en la realidad. 1: Integridad de la Entidad. Ningún valor de un componente de la llave primaria puede ser nulo. 2: Integridad de Referencia. Sea D un dominio primario y R una relación con atributo A que se define sobre D. Cada valor de A en R debe ser un valor de la llave primaria de alguna relación con llave primaria sobre D. Dominio Primario. Dominio para el que existe una llave primaria de un sólo atributo. Clave foránea. Atributo con las propiedades de A. Extensión. Conjunto de tuplas que tiene una relación en un instante dado. Comprensión. Esquema de la relación. Por ejemplo, considerando los conjuntos de entidades PRODUCTO y PROVEEDOR de la tabla 2.1: E1 = PRODUCTO E2 = PROVEEDOR (E1)= NOMBRE_PRODUCTO (E2)= NOMBRE_PROVEEDOR a1 = CANTIDAD Entonces, el conjunto de atributos de R es: R= PEDIDO = {(E1), (E2), a1} El conjunto de atributos de un conjunto R de relaciones es una superclave. Bases de Datos. Miguel Murguía. FAR. 24 La clave primaria de un conjunto de relaciones depende de la cardinalidad de la asignación. Relación normalizada. Relación en la que todo valor de cada atributo es atómico, no compuesto por un conjunto de valores. Diagramas E-R Los elementos usados en los diagramas Entidad-Relación son: Se puede indicar la cardinalidad gráficamente por: Una a muchas Muchas a una Muchas a muchas Una a una ←⎯ ⎯→ ⎯⎯ ←→ Bases de Datos. Miguel Murguía. FAR. 25 De los diagramas E-R a Tablas Cada conjunto de entidades y cada conjunto de relaciones se puede representar mediante una tabla. Conjunto fuerte de entidades. Cada atributo corresponde a una columna y cada entidad a un renglón (tupla o fila). Conjunto débil de entidades. Cada atributo se representa por una columna y se deben añadir una columna por cada atributo de la clave primaria del conjunto de entidades fuerte del que depende. Conjuntos de relaciones. Una tabla con una columna por cada atributo. EJERCICIOS 1. Defina un esquema para el control de un negocio. 2. Realiza un diagrama E-R. Utilice adecuadamente la simbología revisada en clase. 3. Indique algunos ejemplos de atributos que podrían definirse como entidades y viceversa, de acuerdo a diferentes necesidades de control. 4. Ejemplifique: relaciones recursivas, atributos multivaluados y compuestos, restricciones de participación total y parcial. Bases de Datos. Miguel Murguía. FAR. 26 Dominios y Atributos Atributo. Características de las entidades. Una entidad está representada por un conjunto de atributos. Los atributos representan el uso de un dominio. Por ejemplo, Nombre_alumno es una atributo del conjunto de entidades ALUMNO. Dominio. Conjunto de valores permitidos para cada atributo. Por ejemplo, el dominio del atributo calificación podría ser el conjunto de todos los reales entre 0 y 10. Cada atributo simple de un tipo de entidad está asociado con un conjunto de valores o dominio. El atributo A de un tipo de entidad E cuyo conjunto de valores es V, puede definirse como una función de E hacia el conjunto potencia de V: A: E → P(V) El conjunto potencia P(V) de un conjunto V es el conjunto de todos los subconjuntos de V. Atributo derivado. Atributo que puede ser calculado a partir de otro almacenado. Por ejemplo, la Edad puede derivarse del atributo Fecha_de_nacimiento. Atributo almacenado. Atributo que se graba físicamente en los archivos y que puede servir de base para calcular otros. Por ejemplo el atributo Sueldo puede servir para calcular el Impuesto. Atributo compuesto. Atributo que está formado por otros atributos. Por ejemplo, Dirección puede componerse de Calle, Número, Colonia y Cp. Atributo multivaluado. Atributo que puede adquirir más de un valor para una misma entidad. Por ejemplo, el atributo Color de un coche puede tener hasta 3 valores. Bases de Datos. Miguel Murguía. FAR. 27 Restricción en las relaciones Cardinalidad de asignación. Número de entidades con las que puede asociarse otra entidad, mediante un conjunto de relaciones. Restricción de participación. Especifica si la existencia de una entidad depende de la de otra via relación. Puede ser total o parcial. Dependencia de existencia (participación total). Especifica que toda entidad está relacionada a alguna(s) de la del otro conjunto. Por ejemplo, todo MUNICIPIO pertenece a un ESTADO. Participación parcial. Especifica que algunas entidades (pero no necesariamente todas) están relacionadas a alguna(s) de la del otro conjunto. Por ejemplo, algunos MUNICIPIOS tienen PUERTOS Restricción estructural. Cardinalidad de asignación y restricciones de participación. Restricción estructural Restricción de participación Cardinalidad total parcial 1:1 1:N N:M Bases de Datos. Miguel Murguía. FAR. 28 Relaciones (papeles y recursividad) Papel. Una entidad que participa en una relación, desempeña un papel. El nombre del tipo de la entidad no necesariamente es el mismo que el del papel (v.g. en las relaciones recursivas). Ejemplos de papeles que puede desempeñar un EMPLEADO ENTIDAD RELACION ENTIDAD EMPLEADO PARTICIPACION PROYECTO Colaborador EMPLEADO DIRECCION PROYECTO SUPERVISION EMPLEADO Director EMPLEADO Supervisor Supervisado Relación recursiva. Relación en la que participan entidades del mismo conjunto (tipo). Una entidad que participa en una relación recursiva puede tener dos papeles distintos. Bases de Datos. Miguel Murguía. FAR. 29 II El Modelo Relacional de Bases de Datos 1. Introducción al Modelo Relacional Antecedentes y orígenes del Modelo Relacional 1969 Primera publicación de Codd sobre el modelo relacional 1970 Publicación de Codd que consolida al modelo relacional 1971 Codd publica sus 1NF, 2NF y 3NF 1970-1988 Codd publica varios artículos para consolidar el modelo 1976 Ronald Fagin inventa 4NF y 5NF 1976 Chen publica su modelo “Entidad-Relación” 1979 Codd presenta la versión extendida de su modelo 1990 Codd sintetiza su “segunda versión” que es un subconjunto de su versión extendida Bases de Datos. Miguel Murguía. FAR. 30 Conceptos del Modelo Relacional Informalmente, en el modelo relacional una relación es una tabla. Cada renglón de la tabla puede interpretarse como una colección de datos que describen una entidad del mundo real. Los nombres de las tablas y de las columnas se utilizan para ayudar a interpretar el significado de cada valor. Por ejemplo, la tabla ALUMNO contiene datos de los alumnos de la escuela y cada renglón representa una entidad del mundo real. Los nombres de cada columna especifican cómo interpretar los valores de cada renglón. Todos los valores de una columna son del mismo tipo de dato. En la terminología del modelo relacional, a cada renglón se le llama tupla, al encabezado de cada columna atributo y a la tabla relación. El tipo de datos que describe los tipos de valores que pueden aparecer en cada columna se la llama dominio. Dominio. Un dominio D es un conjunto de valores atómicos. Por atómico se entiende que cada valor es indivisible. Por ejemplo, el dominio de los números de cuenta es el conjunto de las cadenas de 6 dígitos; el dominio de las calificaciones son los reales entre 0 y 10. Relación. Una relación r de un esquema de relación R(A1, A2 ..., An), también denotada por r(R), es un conjunto de n-tuplas r={t1, t2, ..., tm}. Cada n-tupla t es una lista ordenada de valores <v1,v2, ...,vn> donde cada valor vi 1 ≤ i ≤ n es un elemento del dominio dom(Ai) o es un valor especial nulo. Bases de Datos. Miguel Murguía. FAR. 31 Tuplas Orden de las tuplas en una relación El orden de las tuplas en una relación no es parte de la definición de la relación, pues en teoría, una relación es un conjunto de tuplas y matemáticamente, los elementos de un conjunto no están ordenados. Figura. Las tuplas son elementos de un conjunto (colección no ordenada). Aunque en la implementación física de una relación, los renglones si tiene un orden, en el sentido de que se puede distinguir al primero y al segundo, etc. o al sucesor y al predecesor, una relación intenta representar hechos en un nivel abstracto o lógico. En un archivo físico, una relación puede estar ordenada por diversos criterios, por ejemplo, por los valores de un atributo; sin embargo, una relación ordenada con dos criterios distintos sigue siendo la misma relación. Figura. Un conjunto de tuplas es el mismo, aunque las tuplas se ordenen de manera diferente. Bases de Datos. Miguel Murguía. FAR. 32 Cuando una relación se concibe como una tabla: • Cada renglón representa una tupla de R. • El orden de los renglones no es importante • Todos los renglones se distinguen de los demás por su contenido. Renglones repetidos Las tablas que tienen renglones repetidos no representan relaciones, particularmente son llamadas relaciones corruptas o relaciones impropias. Existen varias razones para no permitir tuplas repetidas: • Reducen la optimización de los comandos relacionales. • Generan problemas conceptuales severos al usuario así como restricciones. Además, una base de datos puede ser utilizada por cientos o miles de usuarios, por lo que debe existir un significado común para todos los datos que accecen. No existe una interpretación precisa, aceptada e independiente del contexto para los renglones repetidos. En general, cada tupla o renglón asociado al nombre de la relación a la que pertenece implica una aseveración. Por ejemplo, cada renglón de la relación ALUMNO es una aseveración de que una persona en específico es un alumno de la escuela. Este hecho hace a las bases de datos relacionales compatibles con las bases de conocimientos. Bases de Datos. Miguel Murguía. FAR. 33 Orden de los valores en una tupla De acuerdo a una de las definiciones de relación, una n-tupla es una lista ordenada de n valores, por lo que el orden de los valores en la tupla si es importante, y por lo tanto, también lo es el orden de los atributos en la definición de un esquema de relación. Adicionalmente, una tupla puede ser considerada como un conjunto de pares (<atributo>,<valor>), donde cada par da el valor de mapeo de un atributo Ai un valor vi del dom(Ai). Así las siguientes tuplas son idénticas: t= <(Numero-cuenta, 950001), (Nombre-alumno, Oscar Martínez), (Año-ingreso, 95), (Carrera,Biología)> t= < (Nombre-alumno, Oscar Martínez), (Carrera,Biología), (Numero-cuenta, 950001), (Año-ingreso, 95)> Con esa concepción de tupla, el orden de los atributos dentro de ella no es importante. De hecho, existen razones adicionales para nombrar, de manera única, a las columnas: • El nombre de las columnas dan al usuario una idea del significado de los datos que almacena. • Permite a los usuario no tener que recordar el orden de cada columna. • De una manera de distinguir el significado de la columna del de su dominio, pues una columna usa a un dominio. Bases de Datos. Miguel Murguía. FAR. 34 Instancia de la base de datos con esquema ESCUELA ALUMNO Numerocuenta 950001 950002 970001 970002 950003 950004 950005 970003 970004 970005 Nombre-alumno Oscar Martínez Mario Sánchez Emilio Vera Isabel Valderrama Ma. Elena Cañedo Carmen Díaz Jorge Soto Miguel Romero José Malo Salvador Pascual MATERIA Clave-materia 01002 01003 02001 02002 03001 03002 02003 EXAMEN Numerocuenta 950001 950005 970002 970005 Nombre-materia Algebra Cálculo Estadística Botánica Física relativista Partículas elementales Bioquímica Clavemateria 02002 03001 01002 03002 AñoCarrera ingreso 95 Biología 95 Biología 97 Biología 97 Matemáticas 95 Matemáticas 95 Biología 95 Física 97 Biología 97 Matemáticas 97 Física Nivel Créditos Carrera 2 7 Matemáticas 1 10 Matemáticas 1 5 Biología 3 8 Biología 4 10 Física 3 9 Física 2 12 Biología Orden-de-pago Fechaexamen 3567 6/2/97 3678 4/2/97 3676 5/6/97 3789 3/6/97 Bases de Datos. Miguel Murguía. FAR. 35 HISTORIA Numero-cuenta 950001 950002 950002 950004 950004 970003 970003 Clave-materia Semestre-curso Calificacion 02001 96 8.2 02001 96 9 02003 96 7 02002 96 9 02003 95 10 02002 95 8 02003 96 9 Diagrama E-R para una escuela Bases de Datos. Miguel Murguía. FAR. 36 Otra definición de relación Si se considera a la tabla ALUMNO, se puede observar que tiene los atributos Numero-cuenta, Nombre-alumno, Año-ingreso y Carrera. Para cada atributo existe un conjunto de posibles valores: su dominio. Por ejemplo, el dominio del atributo Carrera son todos los nombres de las carreras que se imparten en la escuela. Así, podemos definir los dominios D1, D2 D3 y D4, donde D1 es el conjunto de todos los números de cuenta, D2 de todos los nombres posibles de alumnos, D3 todos los años y D4 todas las carreras. Cada uno de los renglones de la tabla ALUMNO consta de cuatro valores (v1, v2, v3, v4), donde v1 es el número de cuenta, v2 el nombre del alumno, v3 el año de ingreso y v4 la carrera. Por lo anterior, la tabla ALUMNO es un subconjunto de: D1 x D2 x D3 x D4 Desde el punto de vista matemático, una relación se define como un subconjunto del producto cartesiano de una lista de dominios. En la terminología matemática, los términos de relación y tupla son análogos a los de tabla y fila en el Modelo Relacional.. La relación ALUMNO tiene 10 tuplas. Sea t la primera tupla de la relación, se usará la notación t[Nombre-del-atributo] para indicar el valor de ese atributo en la tupla, así t[Nombre-alumno]=“Oscar Martínez”, t[Año-ingreso]=95. Es necesario que todos los dominios de todos los atributos de todas las relaciones sean atómicos, es decir, que los valores sean unidades indivisibles. Bases de Datos. Miguel Murguía. FAR. 37 Esquemas de relaciones Esquema de una relación. El esquema de una relación es la estructura de atributos que contiene, por ejemplo, el esquema de la relación ALUMNO es (Numero-cuenta, Nombre-alumno, Año-ingreso, Carrera). En general, se usará la notación esquema-alumno para referirse al esquema de la relación alumno, así: esquema-alumno=(Numero-cuenta, Nombre-alumno, Año-ingreso, Carrera) También, se indicará que una relación se construye sobre un esquema mediante: nombre-de-la-relacion(nombre-del-esquema) Así, si se quiere indicar que la relación ALUMNO tiene el esquema esquemaalumno se escribe: alumno (esquema_alumno) El esquema de la relación EXAMEN es esquema-examen = (Numero-cuenta, Clave-materia, Orden-de-pago, Fechaexamen) El hecho de que pueda aparecer el mismo atributo en diferentes relaciones permite relacionar a las tuplas entre esas relaciones. Para la explicación de los conceptos sobre el modelo relacional se utilizarán como ejemplo el conjunto de relaciones ESCUELA, derivadas de la figura. Así, se tienen las relaciones ALUMNO, MATERIA, HISTORIA y EXAMEN. Sus esquemas son: Bases de Datos. Miguel Murguía. FAR. 38 esquema-alumno = (Numero-cuenta, Nombre-alumno, Año-ingreso, Carrera) esquema-materia = (Clave-materia, Nombre-materia, nivel, Créditos, Carrera) esquema-examen = (Numero-cuenta, Clave-materia, Orden-de-pago, Fecha-examen) esquema-historia = (Numero-cuenta, Clave-materia, Semestre-curso, Calificación) con claves primarias: Numero-cuenta Clave-materia Numero-cuenta, Clave-materia Numero-cuenta, Clave-materia respectivamente. Bases de Datos. Miguel Murguía. FAR. 39 Esquema de una Base de Datos Esquema de una base de datos relacional. El esquema de una base de datos relacional es el conjunto de esquemas de relaciones S={ R1, R2, ..., Rm } y un conjunto de restricciones de integridad RI. Por ejemplo, el esquema de la base de datos ESCUELA es: ALUMNO Numero-cuenta Nombre-alumno Año-ingreso MATERIA Clave-materia Nivel Nombre-materia Carrera Créditos Carrera EXAMEN Numero-cuenta Clave-materia Orden-de-pago HISTORIA Numero-cuenta Clave-materia Semestre-curso Calificacion Fecha-examen Bases de datos ricas. Bases de datos relacionales con muchas relaciones y generalmente pocas tuplas. Bases de datos extensas. Bases de datos relacionales con pocas relaciones y generalmente muchas tuplas. Por ejemplo, las bases de conocimiento son ricas, mientras que la mayoría de las comerciales son extensas. Bases de Datos. Miguel Murguía. FAR. 40 Notación Se utilizará la siguiente notación para describir al modelo relacional: • Un esquema de relación de grado n se denota por R(A1, A2 ..., An). • Una n-tupla ten una relación r(R) se denota por t= <v1,v2, ...,vn donde vi es el valor correspondiente al atributo Ai. • t[Ai] se refiere al valor vi en t para el atributo Ai. • t[Au,Aw, ..., Az] donde Au, Aw, ...,Az es una lista de atributos de R, se refiere a la subtupla de valores <vu,vw, ...,vz> de t correspondientes a los atributos especificados en la lista. • Las letras Q, R y S denotan nombres de relaciones. • Las letras q, r, s denotan instancias de relaciones. • Las letras t, u, v denotan tuplas. • En general, el nombre de una relación, como por ejemplo ALUMNO, indica el conjunto actual de tuplas en esa relación (estado actual de la relación o instancia), mientras que ALUMNO(Numero-de-cuenta, Nombre-alumno, ...) se refiere al esquema. Bases de Datos. Miguel Murguía. FAR. 41 2. Principales características del Modelo Relacional Restricciones del Modelo Relacional El Modelo Relacional contempla la imposición de restricciones que se asocian a un esquema, algunas de ellas son: • • • • Integridad de Dominio Integridad de Claves Integridad de la Entidad Integridad Referencial A continuación se explica cada tipo: Integridad de Dominio. Todo valor del atributo A debe ser un valor atómico que pertenece al dominio dom(A) de ese atributo. Integridad de Claves. No pueden existir un par de tuplas que tengan los mismos valores en cada uno de sus atributos. Integridad de la Entidad. Ningún valor de un componente de la llave primaria puede ser nulo. Dominio Primario. Dominio para el que existe una llave primaria de un sólo atributo. Integridad de Referencia. Sea D un dominio primario y R una relación con atributo A que se define sobre D. Cada valor de A en R debe ser un valor de la llave primaria de alguna relación con llave primaria sobre D. Las restricciones de integridad de referencia pueden expresarse mediante flechas sobre el esquema de la base de datos, que conectan a atributos entre los esquemas de las relaciones. Bases de Datos. Miguel Murguía. FAR. 42 Relación: el único tipo de dato compuesto En el modelo relacional todas las operaciones se realizan sobre relaciones y como resultado producen relaciones. El único tipo de dato compuesto en el modelo relacional es la relación, pues los valores de los dominios en cada relación deben ser atómicos La razón por la que el modelo relacional permite sólo un tipo de dato compuesto es que los datos compuestos agregan complejidad sin agregar poder. Por ejemplo, las cuatro operaciones básicas de un lenguaje de manipulación de datos (DML) son: retrieve insert update delete Si existieran n tipos de datos compuestos, entonces se requerirían 4n comandos para cubrir las operaciones básicas. En general, en los modelos de bases de datos relacionales hay una tendencia a crear cada vez más y más tipos de datos compuestos y con ella se complican más los lenguajes de manipulación de datos, haciéndolos más difíciles de usar o programar. Bases de Datos. Miguel Murguía. FAR. 43 Críticas al modelo Entidad-Relación El modelo Entidad Relación fué propuesto posteriormente al Modelo Relacional. Codd, en su segunda versión del Modelo Relacional, critica al modelo ER diciendo: • Sólo se describen aspectos de la estructura, no de las operaciones sobre estas estructuras ni de restricciones de integridad. Por lo tanto no es un modelo de datos. • La distinción de entidades y relaciones no ha sido definida con precisión, como consecuencia, una entidad persona es otra relación persona. • Aún si esta distinción se puede definir, añadiría complejidad sin añadir poder. Bases de Datos. Miguel Murguía. FAR. 44 Evolución del Modelo Relacional Aceptación Las nuevas versiones del Modelo Relacional son más proscriptivas, es decir, se imponen más restricciones. Estas imposiciones permitirán, dice Codd, avanzar de un estado primitivo a uno básico. Lo analoga a la discusión en programación en la que Dijkstra rechazaba el uso del comando GO TO. La versión modificada “Tasmania” del modelo de Codd incorpora nuevas características que dan potencia adicional a su primera versión, sin embargo, se ha integrado parcialmente en una segunda versión con la finalidad de dar oportunidad a los desarrolladores de asimilar estas adiciones. Nuevas características La segunda versión incorpora más aspectos sobre la semántica. Por ejemplo, se hace una distinción explícita entre los conceptos columna y dominio y hace una distinción entre los tipos de datos básicos y los extendidos. Además, se da una descripción, semántica, de las características de un lenguaje relacional. Aunque en la versión original ya se habían definido tres valores de verdad, TRUE, FALSE, MAYBE, se extienden a 4: TRUE, FALSE, MAYBE BUT APPLICABLE y MAYBE BUT INAPPLICABLE. MAYBE BUT APPLICABLE hace referencia a valores que no se han introducido a la base de datos, mientras que MAYBE BUT INAPPLICABLE hace referencia a valores que no se encuentran debido a que la propiedad es inaplicable al objeto. Bases de Datos. Miguel Murguía. FAR. 45 Diferencias entre las Matemáticas y en el Modelo Relacional del concepto de relación y terminología Matemáticas Modelo Relacional Concepto de relación Valores sin restricciones Valores atómicos Columnas sin nombres Cada columna tiene un nombre Las columnas se diferencian por Las columnas se diferencian por posición nombre y dominio Constantes Varían en el tiempo Terminología Relación de grado n Tabla-R con n columnas Atributo Columna de tabla-R Dominio Tipo de dato Tupla Renglón de tabla-R Cardinalidad de relación Número de renglones en una tabla-R Bases de Datos. Miguel Murguía. FAR. 46 Objetivos del Modelo Relacional • Simplificar la interacción de los usuarios con los datos: para bases de datos extensas, que no están familiarizados con la programación, que conciben las interacciones independientemente de los demás usuarios. • Incrementar la productividad de los usuarios que son programadores profesionales • Soportar herramientas más poderosas para el administrador de la base de datos, para controlar el acceso de los usuarios a la información: quién accesa qué información y para qué propósito, así como para controlar la integridad de la base de datos. Interrelación de información entre relaciones distintas Comparación de valores vs. apuntadores En el modelo relacional las relaciones no se asocian mediante ligas explícitas o apuntadores, como se hace en modelos anteriores. El principio fundamental del modelo relacional es que la interrelación se realiza mediante comparación de valores. Dos valores se pueden compara sólo si pertenecen al mismo dominio. Aparentemente, la restricción de que los valores a comparar sean del mismo dominio se ve innecesaria, pero en realidad es una manera de proteger al usuario de cometer errores cuando los operadores de relaciones incorporan esta restricción. Bases de Datos. Miguel Murguía. FAR. 47 Transacción Una transacción es un conjunto de actividades que involucran cambios en la base de datos. Cada una se debe ejecutar si se desea realizar cambios permanentes a la base de datos, y no se debe ejecutar ninguna si alguna de ellas falla. La colección de actividades está representada por una secuencia de comandos relacionales, en donde se marca el inicio de la transacción y el fin de ella, el final es un comando que realiza físicamente los cambios (COMIT). Por ejemplo, la transacción para transferir $1000.00 de una cuenta de cheques a una de ahorro debe de: • • • • verificar que exista dinero disponible en la cuenta de cheques, restar $1000.00 a la cuenta de cheques, verificar que exista la cuenta de ahorro y aumentar en $1000.00 a la cuenta de ahorro. Cada una de las actividades anteriores, se debe poder realizar con éxito para poder ejecutar la transacción, basta con que alguna de ellas falle, para que no se realice la transacción. Existen dos estrategias para el manejo de transacciones: 1) Almacenar cada resultado de la transacción en una copia temporal, y utilizarla después de que se verificó cada una de las acciones para actualizar la base de datos. 2) Almacenar la descripción de cada acción de la transacción en un archivo log para tener una manera de “revertir” las acciones en el momento de que una falle. Bases de Datos. Miguel Murguía. FAR. 48 SQL (Structured Query Language) • SQL es un lenguaje relacional de datos creado por IBM en 1972. • Está basado en los principios del Modelo Relacional. • No incluye todas las características del modelo. • Algunas de las características están implementadas de manera incorrecta. Uno de los errores de implementación del SQL es que permite la existencia de renglones duplicados, esto tiene repercusiones serias en la base de datos. De hecho, SQL no soporta más de la mitad del modelo relacional. Aunque se han desarrollado otros lenguajes relacionales, se ha prestado más atención al SQL debido a que se ha adoptado como un estándar ANSI, además de que muchos DBMS lo soportan. Bases de Datos. Miguel Murguía. FAR. 49 DBMS relacionales Se suele hablar mucho sobre la condición “relacional” de un producto DBMS. Por ejemplo, los vendedores alegan que su producto” es relacional”. El que un DBMS sea relacional no solo implica que pueda manipular datos relacionándolos mediante claves primarias y claves foráneas, implica de hecho que cumpla con “todas” las características del modelo relacional. Al respecto hay una regla cero que dice: “Todo sistema del que se diga que es ´relacional’ debe tener la capacidad de manejar bases de datos totalmente de manera relacional, no importando si brinda capacidades adicionales.” Es decir, si un producto provee de capacidades adicionales o novedosas, es relacional sólo si manipula los datos de acuerdo al modelo relacional. Para evaluar un producto DBMS se debe de observar la fidelidad al modelo relacional, por lo que debe de soportar las operaciones de insert, update y delete en un plano relacional. Como otra consecuencia, un DBMS “relacional”, debe de poder manipular relaciones con cualquier número de tuplas, incluyendo una o cero tuplas, es decir, se deben de poder aplicar las operaciones insert, update y delete a relaciones con cero o una tuplas, sin tratamiento especial, ya que el modelo relacional no marca casos especiales para ello. Bases de Datos. Miguel Murguía. FAR. 50 La relación universal En 1988 surgió la propuesta de utilizar una sola relación para las bases de datos: la “relación universal”. La relación universal es un join (equi-join) de todas las tablas-R, basada en las claves. La idea de la relación universal se generó quizá, por la necesidad de no realizar operaciones join. El DBMS no debe tratar a la base de datos como una sola relación universal aunque sí debe poder generarla como una de las posibles vistas. Algunas de las desventajas del enfoque de la relación universal son: Pérdida de espacio La relación universal desperdicia mucho espacio de almacenamiento debido, principalmente, a los valores “inaplicable”. Dependencia de datos Se ve involucrado de manera mayor aspectos de almacenamiento físico, por lo que al modificar el esquema físico afectará al lógico. Dependencia lógica Al modificar el esquema, es muy probable que se requieran modificar los programas de aplicación. Sólo un tipo de join Una de las ventajas del modelo relacional respecto a la relación universal es que permite join de varios tipos, y no sólo equi-join basada en claves. Dificultad para modificar el esquema Cuando se desea agregar información a la base de datos, por ejemplo, agregar una columna, es muy complicado hacerlo con el esquema de la relación universal. Mientras que con el enfoque relacional, se puede agregar fácilmente o incluso, crear nuevas tablas-R. Bases de Datos. Miguel Murguía. FAR. 51 Razones para soportar dominios Una de las deficiencias más serias de los DBMS es que no tienen un soporte adecuado de dominios. Si un DBMS no soporta dominios, tampoco podrá soportar otras características importantes del modelo. 1) Los dominios son el elemento fundamental que hace que una base de datos tenga unidad Si dos relaciones no comparten ningún dominio, no pueden relacionarse. Una base de datos, concebida como un conjunto de relaciones CR y otro de dominios CD, puede dividirse en dos bases de datos sin pérdida de información, si no comparten ningún dominio, formalmente: Si CR es un conjunto de relaciones; CD un conjunto de dominios; cr ⊂ CR; cd ⊂ CD y 1) las relaciones en cr utilizan sólo los dominios en cd 2) las relaciones en CR-cr utilizan sólo los dominios en CD-cd Entonces: la base de datos se puede dividir en dos (CR-cr, CD-cd) y (cr, cd) sin pérdida de información. Además, los dominios permiten detectar las comparaciones que tienen sentido y las que no lo tienen. 2) Son necesarios para declarar el tipo de dato permitido en cada columna En el diccionario de datos se debe almacenar una descripción extensa del tipo de dato almacenado. Sin el soporte del dominio, esta descripción debe repetirse para cuanta columna tenga el mismo tipo de dato. 3) Son necesarios para soportar integridad de dominio Bases de Datos. Miguel Murguía. FAR. 52 La integridad de dominio se refiere a la restricción de que todos los valores de una columna pertenezcan al dominio que se asoció a esa columna. Algunos tipos de restricciones de dominio son: a) tipo de datos regulares; b) intervalo de valores permitido; c) aplicabilidad de la función sucesor o predecesor (operadores > y <). 4) Permiten restringir la aplicabilidad de operadores Para cada comparación entre valores, el DBMS debe verificar que esos valores sean semánticamente comparables. Si un usuario necesita comparar “peras con manzanas”, entonces el DBA deberá dar autorización, pero sólo por un periodo corto de tiempo, para que deshabilite, por ejemplo, el DOMAIN CHECK. 5) Permiten especificar de forma implícita las columnas en las que se buscará un valor Los dominios permiten especificar un grupo de columnas de manera implícita, lo que facilita las consultas. Por ejemplo, si se desea buscar todos los registros en los que esté involucrada una cierta persona, no importando el papel que desempeñe en la relación, se puede indicar que busque sobre un dominio y no sobre columnas específicas. Actualmente, SQL no soporta esta característica. 6) Facilitan algunas restricciones de integridad definidas por el usuario Por ejemplo, si se requiere que los valores de una columna C1 sean un subconjunto de los valores contenidos en la columna C2, entonces C1 y C2 deben tomar valores de un mismo dominio. 7) El concepto de dominio participa en muchas definiciones del modelo relacional Incluyendo las definiciones de dominio primario, llave foránea, integridad de dominio, integridad referencial, entre otras. 8) Son necesarios para realizar las operaciones de UNION o similares Bases de Datos. Miguel Murguía. FAR. 53 Cuando se realiza una UNION de S con R, es necesario que ambas tablas tengan el mismo número de columnas, pero además, que exista un “mapeo” uno a uno entre las columnas de R y S, debiendo tener cada par el mismo dominio. Si todas las columnas de R tiene un dominio diferente, entonces el DBMS deberá saber hacer el mapeo de las columnas entre R y S, dejando menos trabajo al usuario. 9) Permiten la generación de los “índices basados en dominios” Los índices basados en dominios”, aunque no son parte del modelo relacional, son una herramienta que aumenta el desempeño del DBMS. Indican, para cada columna, de qué dominio extraen sus valores, permiten encontrar todas las ocurrencias de un valor. Recuerde que … • Toda relación es un conjunto. • No todo conjunto es una relación. • Toda relación puede concebirse como una tabla. • No toda tabla es una representación correcta de una relación. Bases de Datos. Miguel Murguía. FAR. 54 III Álgebra Relacional 1. Operadores básicos del Álgebra Relacional Introducción Lenguaje formal El álgebra relacional es un leguaje “puro” de procedimiento, es decir, es un lenguaje definido formalmente del que se pueden hacer diversos tipos de implementaciones. Las operaciones son cerradas Las operaciones del álgebra relacional involucran como operandos a una o dos relaciones y siempre devuelven como resultado otra relación, es decir son “cerradas”. Manejar bases de datos con lenguajes que no respeten la “cerradura” es casi imposible. La propiedad de “cerradura” del álgebra relacional facilita el uso del lenguaje, pues en una misma expresión se pueden contatenar los resultados de las operaciones haciéndolos participar como operandos de otras operaciones. Lenguaje flexible y potente Los operadores relacionales permiten a los usuarios consultar información de una base de datos de una manera flexible y potente, pero sin necesidad de que tenga conocimientos de programación. Diseñado para trabajar con tablas-R Cada operador relacional del modelo relacional está diseñado para trabajar sobre relaciones que no tienen renglones duplicados y para generar relaciones sin renglones duplicados. Bases de Datos. Miguel Murguía. FAR. 55 Los operadores Clasificación de los operadores Para su estudio los operadores se dividen en tres grupos: • Operadores básicos • Operadores de manipulación • Operadores avanzados Cuatro operadores provienen directamente de la teoría de conjuntos, aplicables a las relaciones porque las relaciones se definen como un conjunto de tuplas, ellos son: • • • • unión, intersección, diferencia y producto cartesiano Los demás operadores se desarrollan específicamente para el álgebra relacional. Operadores básicos • proyección • theta-selección • theta-selección extendido • producto cartesiano* • unión • diferencia • intersección • producto natural* • theta-join • theta-join extendido • natural-join • división *Estos operadores ya no se consideran indispensables en la segunda versión. Bases de Datos. Miguel Murguía. FAR. 56 Operadores de manipulación • asignación relacional • insert • update • delete Operadores avanzados • framing • extend • semi-join • outer-join • outer-union • outer-difference • outer-intersección • T-joins • user-defined-selects • user-defined-joins • recursive-join Bases de Datos. Miguel Murguía. FAR. 57 Proyección Π R[a1, a2, ...] SELECT a1, a2,... FROM R; Es un operador unario que omite algunas columnas, eliminando los renglones repetidos que se pudieran generar. En la notación de cálculo de predicados, la proyección de las columnas Nombre_alumno y Carrera de la tabla ALUMNO se escribe: Πnombre-alumno, carrera (alumno) En notación algebraica: Z ← ALUMNO [Nombre_alumno, Carrera] En SQL: SELECT nombre_alumno, carrera FROM Alumno; El resultado: Nombre-alumno Oscar Martínez Mario Sánchez Emilio Vera Isabel Valderrama Ma.Elena Cañedo Carmen Díaz Jorge Soto Miguel Romero José Malo Salvador Pascual Carrera Biología Biología Biología Matemática s Matemática s Biología Física Biología Matemática s Física Bases de Datos. Miguel Murguía. FAR. 58 Se puede explicar al operador de proyección en dos etapas, en la primera se genera una tabla (que no es una tabla-R) con las columnas que formarán parte del resultado, y en la segunda etapa se eliminan los renglones repetidos. Por ejemplo, si se desea obtener una lista de las carreras: Π carrera (alumno) o en notación algebraica: Z ← ALUMNO [Carrera] Primero se genera una tabla con la columna Carrera, pero con renglones repetidos: Carrera Biología Biología Biología Matemática s Matemática s Biología Física Biología Matemática s Física Después se genera la tabla-R resultado, eliminando los renglones repetidos: Carrera Biología Matemática s Física SQL no elimina renglones repetidos, a menos de que explícitamente se incluya el comando DISTINCT. En SQL: SELECT DISTINCT carrera FROM Alumno; Bases de Datos. Miguel Murguía. FAR. 59 Theta-Selección σ R[a=cte] SELECT a1, a2,... FROM R WHERE a1=cte; La selección es un operador unario. Selecciona tuplas que satisfacen un predicado. Por ejemplo, si se desea obtener los registros dela tabla ALUMNO que cursan la carrera de Matemáticas, se debe cumplir la condición Carrera=“Matemáticas”. En notación de predicados: σcarrera=“Matemáticas” (alumno) En notación algebraica: Z ← ALUMNO [Carrera=“Matemáticas”] El resultado: Numerocuenta 970002 950003 970004 Nombrealumno Isabel Valderrama Ma.Elena Cañedo José Malo Añoingreso Carrera 97 Matemática s 95 Matemática s 97 Matemática s En SQL: SELECT * FROM Alumno WHERE carrera=“Matemáticas” Otro ejemplo, “los alumnos de la generación 97”: σaño-ingreso=97 (alumno) En notación algebraica: Bases de Datos. Miguel Murguía. FAR. 60 Z ← ALUMNO [Año_ingreso=97] El resultado: Numerocuenta 970001 970002 970003 970004 970005 NombreAñoalumno ingreso Emilio Vera Isabel Valderrama Miguel Romero José Malo Salvador Pascual Carrera 97 Biología 97 Matemátic as 97 Biología 97 Matemátic as 97 Física En SQL: SELECT * FROM Alumno WHERE año_ingreso=97 Bases de Datos. Miguel Murguía. FAR. 61 Combinando selección y proyección Ahora podemos combinar los operadores selección y proyección. Por ejemplo, se pueden obtener los nombres de los alumnos que cursan la carrera de Matemáticas: Πnombre-alumno (σ carrera=“Matemáticas” (alumno)) ó Z ← (ALUMNO [Carrera=“Matemáticas”]) [Nombre_alumno] El resultado: Nombre-alumno Isabel Valderrama Ma.Elena Cañedo José Malo En SQL: SELECT DISTINCT nombre_alumno FROM Alumno WHERE carrera=“Matemáticas” La selección produce un resultado con el mismo esquema de relación que su operando, mientras que la proyección si modifica el esquema, regresando como resultado una relación con menor número de columnas. Ambos operadores pueden regresar una relación resultado con cardinalidad menor a la del operando, pues en la selección es uno de sus objetivos y en la proyección debido a la eliminación de renglones repetidos. Bases de Datos. Miguel Murguía. FAR. 62 Select y Theta-Select Normalmente, si se omite el prefijo “theta” al operador theta-select se sobrentiende que la selección se realiza mediante una igualdad (“=“), por ejemplo: Z ← ALUMNO [Carrera=“Matemáticas”] pero theta-select puede realizarse utilizando otros operadores, donde theta puede ser alguno de los siguientes comparadores: 1. EQUALITY 2. INEQUALITY 3. LESS THAN 4. LESS THAN OR EQUAL TO 5. GREATHER THAN 6. GREATHER THAN OR EQUAL TO 7. GREATEST LESS THAN 8. GREATEST LESS THAN OR EQUAL TO 9. LEAST GREATER THAN 10. LEAST GREATER THAN OR EQUAL TO Por ejemplo, se pueden buscar las materias que tengan asignados 10 ó más créditos. Así, se utiliza una theta-selección en donde la theta es GREATHER THAN OR EQUAL TO (>=). En notación de predicados: σ créditos>=10 (materia) ó Z ← MATERIA [Créditos >=10] El resultado: Clavemateria 01003 03001 02003 Nombre-materia Nivel Cálculo Física relativista Bioquímica Bases de Datos. Miguel Murguía. FAR. Créditos 1 4 2 10 10 12 63 En SQL: SELECT * FROM Materia WHERE créditos>=10 En la selección también pueden realizarse comparaciones entre columnas, lo cual significa que se deben comparar los valores de esos atributos en cada registro. Es decir, se pueden construir expresiones del estilo: σ atributo1=atributo2 (alumno) Por ejemplo, suponiendo la existencia de una relación RESUMEN que contiene los totales de alumnos acreditados y no acreditados en cada materia: Z ← RESUMEN [Aprobados >= Reprobados] En SQL: SELECT * FROM Materia WHERE aprobados >= reprobados En este caso, el DBMS debe verificar que los dominios de ambas columnas sean los mismos. En el caso de que en la comparación intervengan valores calculados se deberá verificar que ambos sean del mismo tipo de dato básico. Bases de Datos. Miguel Murguía. FAR. 64 Theta-selección extendido Si @ denota cualquiera de los 10 “comparadores” revisados anteriormente, A y B son columnas de la relación R y x una variable del lenguaje o una constante entonces R[A @ x] y R[A @ B] pueden ser operaciones theta-selección válidas y también pueden considerarse como “términos de comparación” si ambos se conectan mediante un OR, NOT, AND ó IMPLIES. Por ejemplo, la pregunta “los alumnos de Matemáticas de la generación 97” puede expresarse utilizando theta-selección extendida: σcarrera=“Matemáticas” ^ año-ingreso=97 (alumno) o bien: Z ← ALUMNO [Carrera=“Matemáticas” ^ Año_ingreso=97] El resultado: Numerocuenta 970002 970004 Nombrealumno Isabel Valderrama José Malo Añoingreso Carrera 97 Matemáticas 97 Matemáticas En SQL: SELECT * FROM Alumno WHERE carrera = “Matemáticas” AND año_ingreso=97 Esa pregunta también puede expresarse en términos de theta-selección (no extendida): σcarrera=“Matemáticas” (σ año-ingreso=97 (alumno)) ó Bases de Datos. Miguel Murguía. FAR. 65 Z ← (ALUMNO [Carrera=“Matemáticas” ]) [Año_ingreso=97] Producto cartesiano x Los operadores de selección y proyección actúan sobre una relación, es decir, son unarios. Un operador que permite combinar información de dos relaciones -binario- es el producto cartesiano. Por ejemplo, si se quiere encontrar a los registros de los alumnos que han cursado la materia “Bioquímica” así como su número de cuenta, se debe extraer información de las tablas alumno y materia. La relación resultado de un producto cartesiano tiene por esquema a la unión de los atributos de las relaciones que se están operando. Así, la relación r=alumno x materia tiene el esquema: esquema-r(número-cuenta, nombre-alumno, año-ingreso, carrera, clavemateria, nombre-materia, nivel, créditos) Si existen atributos con el mismo nombre en ambas tablas, se antepone como prefijo el nombre de la relación para distinguir a cada uno, por ejemplo, para distinguir el atributo número-cuenta de la tabla alumno y de la tabla examen, se escribe: alumno.número-cuenta examen.número-cuenta Lo anterior funciona sólo si los nombres de las relaciones son distintos. En el caso de los nombres de las relaciones involucradas sean iguales, entonces, se agregará un número subfijo, por ejemplo: alumno1.número-cuenta alumno2.número-cuenta El operador producto cartesiano puede ser útil para responder la pregunta “encontrar las tuplas de los alumnos que hayan presentado un examen”: Bases de Datos. Miguel Murguía. FAR. 66 σ alumno.numero-cuenta=examen.numero.cuenta(alumno x examen) ó Z ← (ALUMNO x EXAMEN) [ALUMNO.Número_cuenta=EXAMEN.Número_cuenta] Bases de Datos. Miguel Murguía. FAR. 67 Alumno. Numero-cuenta 950001 950002 970001 970002 950003 950004 950005 970003 970004 970005 950001 950002 970001 970002 950003 950004 950005 970003 970004 970005 950001 950002 970001 970002 950003 950004 Nombre-alumno Año-ingreso Oscar Martínez Mario Sánchez Emilio Vera Isabel Ma.Elena Camen Díaz Jorge Soto Miguel Romero José Malo Salvador Pascual Oscar Martínez Mario Sánchez Emilio Vera Isabel Ma.Elena Camen Díaz Jorge Soto Miguel Romero José Malo Salvador Pascual Oscar Martínez Mario Sánchez Emilio Vera Isabel Ma.Elena Camen Díaz Carrera 95 95 97 97 95 95 95 97 97 97 95 95 97 97 95 95 95 97 97 97 95 95 97 97 95 95 Biología Biología Biología Matemáticas Matemáticas Biología Física Biología Matemáticas Física Biología Biología Biología Matemáticas Matemáticas Biología Física Biología Matemáticas Física Biología Biología Biología Matemáticas Matemáticas Biología Examen. Numero-cuenta 950001 950001 950001 950001 950001 950001 950001 950001 950001 950001 950005 950005 950005 950005 950005 950005 950005 950005 950005 950005 970002 970002 970002 970002 970002 970002 Clavemateria 02002 02002 02002 02002 02002 02002 02002 02002 02002 02002 03001 03001 03001 03001 03001 03001 03001 03001 03001 03001 01002 01002 01002 01002 01002 01002 Orden-de-pago Fecha-examen 3567 3567 3567 3567 3567 3567 3567 3567 3567 3567 3678 3678 3678 3678 3678 3678 3678 3678 3678 3678 3676 3676 3676 3676 3676 3676 Resultado de alumno x examen continúa... Bases de Datos. Miguel Murguía. FAR. 68 02-Jun-97 02-Jun-97 02-Jun-97 02-Jun-97 02-Jun-97 02-Jun-97 02-Jun-97 02-Jun-97 02-Jun-97 02-Jun-97 02-Apr-97 02-Apr-97 02-Apr-97 02-Apr-97 02-Apr-97 02-Apr-97 02-Apr-97 02-Apr-97 02-Apr-97 02-Apr-97 06-May-97 06-May-97 06-May-97 06-May-97 06-May-97 06-May-97 ...continuación Alumno. Numero-cuenta 950005 970003 970004 970005 950001 950002 970001 970002 950003 950004 950005 970003 970004 970005 Nombre-alumno Año-ingreso Jorge Soto Miguel Romero José Malo Salvador Pascual Oscar Martínez Mario Sánchez Emilio Vera Isabel Ma.Elena Camen Díaz Jorge Soto Miguel Romero José Malo Salvador Pascual Carrera 95 97 97 97 95 95 97 97 95 95 95 97 97 97 Física Biología Matemáticas Física Biología Biología Biología Matemáticas Matemáticas Biología Física Biología Matemáticas Física Examen. Numero-cuenta 970002 970002 970002 970002 970005 970005 970005 970005 970005 970005 970005 970005 970005 970005 Clavemateria 01002 01002 01002 01002 03002 03002 03002 03002 03002 03002 03002 03002 03002 03002 Orden-de-pago Fecha-examen Examen. Numero-cuenta 950001 950005 970002 970005 Clavemateria 02002 03001 01002 03002 Orden-de-pago Fecha-examen 3676 3676 3676 3676 3789 3789 3789 3789 3789 3789 3789 3789 3789 3789 06-May-97 06-May-97 06-May-97 06-May-97 06-Mar-97 06-Mar-97 06-Mar-97 06-Mar-97 06-Mar-97 06-Mar-97 06-Mar-97 06-Mar-97 06-Mar-97 06-Mar-97 Resultado de alumno x examen Alumno. Numero-cuenta 950001 950005 970002 970005 Nombre-alumno Año-ingreso Oscar Martínez Jorge Soto Isabel Salvador Carrera 95 95 97 97 Biología Física Matemáticas Física 3567 3678 3676 3789 02-Jun-97 02-Apr-97 06-May-97 06-Mar-97 Resultado de: σ alumno.numero-cuenta=examen.numero.cuenta(alumno x examen) Z ← (ALUMNO x EXAMEN) [ALUMNO.Número_cuenta=EXAMEN.Número_cuenta] Bases de Datos. Miguel Murguía. FAR. 69 También se puede aplicar la proyección a Πalumno.nombre-alumno, fecha-examen (σ alumno.numero-cuenta=examen.numero.cuenta(alumno x examen)) ó Z ← ((ALUMNO x EXAMEN) [ALUMNO.Número_cuenta=EXAMEN.Número_cuenta]) [ALUMNO.Nombre_alumno, ALUMNO.Fecha_examen] El resultado: Nombre-alumno Fechaexamen Oscar Martínez 02-Jun-97 Jorge Soto 02-Apr-97 Isabel Valderrama 06-May-97 Salvador Pascual 06-Mar-97 El producto cartesiano es conmutativo, así, si S y R son relaciones, se puede establecer la siguiente equivalencia: SxT=TxS El producto cartesiano no es muy utilizado en la práctica, sino más bien puede implementarse como un caso especial del operador theta-join, que se explicará más adelante. El producto cartesiano es útil como una herramienta conceptual, pero no es necesario que se implemente en los DBMS. Sin embargo, se deberá poder substituir como el resultado de un caso extremo de otro operador (v.g. thetajoin). Bases de Datos. Miguel Murguía. FAR. 70 Renombrar ρ SELECT * FROM R AS S La operación renombrar permite evitar ambigüedades cuando se hace referencia a un mismo atributo pero con diferente uso, por ejemplo, al intentar contestar “Nombres de los alumnos que tengan la misma carrera que Emilio Vera”. Con la siguiente expresión se encuentra la carrera de “Emilio Vera”: Π carrera (σ nombre-alumno=“Emilio Vera”(alumno)) Pero para encontrar los nombres de los alumnos con esa carrera, se debe hacer referencia otra vez al atributo nombre-alumno: σ p(alumno x Π carrera (σ nombre-alumno=“Emilio Vera”(alumno))) donde p es un predicado que indica que el valor de carrera en alumno es el mismo que el que se obtiene en Π carrera. Por esa razón es necesario cambiar de nombre a una relación para poder hacer esa distinción. La operación: ρx(r) renombra a la relación r con x. Π carrera (σ alumno2.carrera=alumno.carrera (alumno x Π carrera (σ nombre-alumno=“Emilio Vera”( ρalumno2(alumno))))) Bases de Datos. Miguel Murguía. FAR. 71 Unión ∪ R union S SELECT * FROM R UNION S El operador unión es binario: permite agregar las tuplas de dos relaciones. Por ejemplo, la pregunta “los números de cuenta de los alumnos que han cursado la materia 02002 o que han hecho un examen” puede responderse auxiliándose del operador unión, pues es necesario encontrar tuplas de la tabla examen así como de la tabla historia: Πnumero-cuenta(σclave-materia=02002 (examen)) ∪ Πnumero-cuenta(σclave-materia=02002 (historia)) En álgebra relacional: Z ← (EXAMEN[Clave_materia=02002])[Número_cuenta] unión (HISTORIA[Clave_materia=02002])[Número_cuenta] En SQL SELECT numero_cuenta FROM Examen WHERE clave_materia=“02002” UNION SELECT numero_cuenta FROM Historia WHERE clave_materia=“02002”; El resultado: Numerocuenta 950001 950004 970003 Bases de Datos. Miguel Murguía. FAR. 72 Compatibilidad de unión Se refiere a que los renglones de las relaciones a unir sean del mismo tipo para asegurar que el resultado de sea una relación, es decir una tabla-R. Es decir, existe la restricción de que las relaciones que intervienen en una operación de unión deben de tener el mismo esquema. Así, para aplicar la operación unión s ∪ r, las relaciones s y r deben de tener el mismo esquema. Si S y T son dos relaciones, son compatibles para la unión si: • tiene el mismo grado y • es posible establecer un mapeo uno a uno, entre las columnas en S y T, tal que las columnas de cada par tengan el mismo dominio. El DBMS debe ser capaz de definir ese mapeo cuando todas las columnas de la relación tengan un dominio distinto. En el caso de que exista cuando menos una columna en una relación que tenga un dominio que no tenga ninguna columna de la otra relación, el DBMS deberá enviar un mensaje de error. En el caso de que sí se pueda establecer el mapeo y de que existan más de una posibilidad de conformarlo, el DBMS deberá preguntarlo al usuario. Finalmente, el DBMS podrá aceptar un mapeo explícito del usuario, caso en el que el DBMS deberá verificar que sea válido. El operador unión relacional no es tan general como en matemáticas, pues el relacional permite unir, por ejemplo, números de cuenta con números de cuenta, nombres de alumnos con nombres de alumnos, etc., mientras que en matemáticas, la unión sí permite unir, por ejemplo, números de cuenta con nombres de alumnos. La unión también elimina renglones duplicados en la relación resultado. Bases de Datos. Miguel Murguía. FAR. 73 Diferencia ⎯ SELECT * FROM R MINUS S El operador diferencia encuentra tuplas que están en una relación pero no en otra. Así, R ─ S devuelve una relación con las tuplas que se encuentran en R y que no están en S. Por ejemplo, “encontrar los números de cuenta de los alumnos que no han hecho exámenes”: Πnumero-cuenta (alumno) ─ Πnumero-cuenta (examen) Z ← ALUMNO[Número_cuenta] ─ EXAMEN[Número_cuenta] SELECT numero_cuenta FROM Alumno WHERE numero_cuenta MINUS SELECT numero_cuenta FROM Examen; ó bien: SELECT numero_cuenta FROM Alumno WHERE numero_cuenta NOT IN (SELECT numero_cuenta FROM Examen); El resultado: Numero-cuenta 950002 970001 950003 950004 970003 970004 Por la manera en que opera, la diferencia da como resultado una tabla sin renglones repetidos. Las dos relaciones operandos que intervienen en una diferencia deben de cumplir los requisitos de compatibilidad de unión. Bases de Datos. Miguel Murguía. FAR. 74 Definición formal del álgebra relacional El álgebra relacional forma sus expresiones a partir de operadores y de relaciones. Una expresión general del álgebra relacional se construye a partir de subexpresiones. Si E1 y E2 son expresiones del álgebra relacional, entonces las siguientes también lo son: E1 ∪ E2 E1 ─ E2 E1 x E2 σp(E1) donde P es un predicado con atributos de E1. Π s(E1) donde s es una lista que consta de algunos de los atributos de E1. ρ x(E1) donde x es el nuevo nombre de la relación E1. Bases de Datos. Miguel Murguía. FAR. 75 Operaciones no básicas Las operaciones definidas en las secciones anteriores son las básicas, es decir que con ellas se tiene toda la potencia del álgebra relacional, sin embargo, para fines prácticos, se definen otras operaciones muy utilizadas que se construyen a partir de éstas básicas. Intersección ∩ SELECT * FROM R INTERSECT S La intersección sirve para encontrar las tuplas que se encuentran en dos relaciones a la vez. Por ejemplo, “encontrar las claves de las materias que ya han sido cursadas por algún alumno y para las que se ha presentado al menos un examen”: Πclave-materia (historia) ∩ Π clave-materia (examen) Z ← HISTORIA[Clave_materia] intersección EXAMEN[Clave_materia ] SELECT clave_materia FROM Historia INTERSECT SELECT clave_materia FROM Examen; El resultado: Clave-materia 02002 Para mostrar que no es una operación básica del álgebra relacional, obsérvese que la intersección puede calcularse a partir de la diferencia: r ∩ s = r ─ (r ─ s) Las dos relaciones operandos que intervienen en una intersección deben de cumplir los requisitos de compatibilidad de unión. Bases de Datos. Miguel Murguía. FAR. 76 Producto natural |x| Aunque el producto natural no es parte explícita del modelo relacional, es conveniente su explicación para formalizar otras operaciones así como para entenderlas mejor. Reconsidérese la pregunta “encontrar las tuplas de los alumnos que hayan presentado un examen”: σ alumno.numero-cuenta=examen.numero.cuenta(alumno x examen) Como puede observarse, típicamente a una operación de producto cartesiano se le aplica una selección. El producto natural realiza automáticamente una selección sobre los atributos en común, poniendo la restricción de que los valores sean iguales en los atributos de ambas tablas. Así al realizar el producto natural alumno |x| examen se seleccionan automáticamente sólo aquellas tuplas que coincidan en el atributo numero-cuenta, pues ese atributo es común a ambas relaciones. Si hay más de un atributo en común, entonces las tuplas deberán coincidir en ambos valores de cada par de atributos. Adicionalmente, el producto natural realiza una proyección sobre la unión de los atributos, evitando repetir columnas. Así, para el ejemplo anterior, el esquema de la relación resultante del producto natural es: (numero-cuenta, nombre-alumno, año-ingreso, carrera, clave-materia, ordende-pago, fecha-examen) Como puede observarse, el atributo numero-cuenta no se repite en el esquema. Bases de Datos. Miguel Murguía. FAR. 77 El producto natural es una operación muy importante en el modelo relacional, pues es una de las principales maneras de “relacionar” tablas en la práctica. Formalmente el producto natural se define como: r|x|s = ΠR∪S(σ r·A1=s·A1^ r·A2=s·A2^ ... ^r·An=s·An r x s) donde R y S son los conjuntos de atributos de las relaciones r y s respectivamente y A1, A2, ... An ∈ R ∩ S Es decir, el producto natural es una proyección de una selección de un producto cartesiano. La operación producto natural es asociativa, es decir: (r |x| s) |x| t = r |x| (s |x| t) por lo que se puede escribir como: r |x| s |x| t Por ejemplo, “encontrar los nombres de los alumnos y los nombres de las materias que hayan aprobado con más de 8.0: Πnombre-alumno, nombre-materia (σ calificacion>8 (alumno |x| materia |x| historia)) Nombre-alumno nombremateria Oscar Martínez Estadística Mario Sánchez Estadística Carmen Díaz Botánica Carmen Díaz Bioquímica Miguel Romero Bioquímica Bases de Datos. Miguel Murguía. FAR. 78 Theta Join Z ← R [ R.atributo=S.atributo ] S SELECT * FROM R JOIN S ON R.A=S.A En la práctica, los operadores de producto cartesiano y de producto natural son incluidos en el de join. El operador join realiza la misma acción que el producto natural, pero se deben indicar explícitamente las columnas de ambas relaciones a comparar, pues en el producto natural las columnas a comparar son aquellas que tienen el mismo nombre. Por ejemplo, si se desea obtener una tabla de los nombres de los alumnos junto con las claves de las materias que han cursado se debe extraer información de las tablas ALUMNO e HISTORIA y comparar el número de cuenta: Z ← ALUMNO[Número_cuenta=Número_cuenta ]HISTORIA La expresión anterior regresa una relación de grado n+m, siendo n y m los grados de ALUMNO e HISTORIA. Si se desea obtener únicamente las columnas de nombre_alumno y clave_materia, es necesario realizar una proyección: Z ← (ALUMNO[Número_cuenta=Número_cuenta ]HISTORIA) [Nombre_alumno, Clave_materia] SELECT nombre_alumno, clave_materia FROM Historia JOIN Examen ON Historia.número_cuenta=Examen.número_cuenta; Bases de Datos. Miguel Murguía. FAR. 79 El resultado: Nombrealumno Oscar Martínez Mario Sánchez Mario Sánchez Carmen Díaz Carmen Díaz Miguel Romero Miguel Romero Clavemateria 02001 02001 02003 02002 02003 02002 02003 Análogamente al operador theta selección, el operador theta join hace uso de los 10 comparativos listados en la explicación del primero. Cuando de habla del operador join se sobrentiende que se está comparando mediante EQUALITY. Al operador theta join que compara mediante EQUALITY se le llama equi join. El equi join es conmutativo, es decir: R[A=B]S = S[B=A]R Bases de Datos. Miguel Murguía. FAR. 80 Theta Join extendido La extensión del theta join es análoga a la de la selección, es decir, añade la posibilidad de utilizar los conectivos lógicos NOT, OR, AND e IMPLIES. Mediante un theta join extendido se pueden averiguar los casos en que un alumno que haya cursado y hecho examen de la misma materia Z ← HISTORIA [HISTORIA.Calificación<EXAMEN.Calificación ^ HISTORIA.Número_cuenta=EXAMEN.Número_cuenta ^ HISTORIA.Clave_materia=EXAMEN.Clave_materia] EXAMEN Join natural En el equi join, las columnas que se comparan aparecen en el resultado añadiendo redundancia, ya que ambas columnas contienen exactamente los mismos valores, esta redundancia no se dá con los otros 9 tipos de theta join. Con la finalidad de eliminar esa redundancia en el equi join se define el join natural, en el que se elimina una de las columnas que se usan en la comparación. El join natural genera una relación resultado de grado menor que el equi join, utilizando los mismos operandos. Bases de Datos. Miguel Murguía. FAR. 81 División ÷ El operador división sirve para encontrar las tuplas que satisfacen una relación “para todo”. Por ejemplo, “encontrar los números de cuenta de los alumnos que han cursado todas la materias de la carrera de Biología”. La expresión, utilizando división, que contesta esa pregunta es: Π numero-cuenta, clave-materia (historia) ÷ Π clave-materia (σ carrera=“Biología” (materia)) Así, una expresión del tipo: r÷s tiene como esquema a R-S. Si r tiene como esquema a R=(A1, A2) y s a S=(A2), entonces r ÷ s da como resultado una relación con los valores A1 tales que el par (A1,A2) aparecen en r para todos los valores de A2 que aparecen en s. Por ejemplo: r A1 a a a a b b b c c c r÷s s A2 x y z w v x z x z w ÷ Bases de Datos. Miguel Murguía. FAR. A2 x z w = A1 a c 82 Formalmente: r ÷ s = Π R-S (r) - Π R-S ((Π R-S(r) x s) - r donde r(R) y s(S) son relaciones y S ⊆ R Obsérvese que: (Π R-S(r) x s) tiene esquema R, pues rxs tiene esquema R∪S y si a ese producto se aplica una proyección R-S se obtiene el esquema R. Además es condición necesaria que coincidan los esquemas para poder operar una diferencia. La expresión Π R-S ((Π R-S(r) x s) - r) da como resultado una relación de esquema R-S y obtiene todas las tuplas que deben eliminarse de r para cumplir con la definición de la división, pues obtiene todas las tuplas en r que no tienen una igual en s. Así, si observamos la expresión: Π numero-cuenta, clave-materia (historia) ÷ Π clave-materia (σ carrera=“Biología” (materia)) dará como resultado los números de cuenta (i.e. {numero-cuenta, clave-materia} {clave-materia}) que estén asociados a cada una de las claves de materia que se encuentren en: Π clave-materia (σ carrera=“Biología” (materia)) Así, la respuesta a “los números de cuenta de los alumnos que han cursado todas la materias de la carrera de Biología”, puede mostrarse esquemáticamente: Bases de Datos. Miguel Murguía. FAR. 83 R S número-cuenta 950001 950002 950002 950004 950004 970003 970003 relación R S T clave-materia 02001 02001 02003 02002 02003 02002 02003 ÷ clave-materia 02002 02003 esquema Esquema-R Esquema-S Esquema-R - Esquema-S Bases de Datos. Miguel Murguía. FAR. T = número-cuenta 950004 970003 (número_cuenta, clave_materia) (clave_materia) (número_cuenta) 84 División (Reforzamiento) A continuación se ejemplifica la equivalencia de la división: r ÷ s = Π R-S (r) - Π R-S ((Π R-S(r) x s) - r) Esquemas: R = {A1, A2} S = {A2} R-S = {A1} Nótese que Π R-S(r) x s tiene esquema R, pues S ⊆ R. Π R-S(r) x s Π R-S(r) Π R-S(r) x s s A1 a b c x A2 x z w A1 a a a b b b c c c = A2 x z w x z w x z w (Π R-S(r) x s) - r Π R-S(r) x s A1 a a a b b b c c A2 x z w x z w x z (Π R-S(r) x s) - r r - A1 a a a a b b b c Bases de Datos. Miguel Murguía. FAR. A2 x y z w v x z x = A1 b A2 w 85 c w c c z w Recuerde que: Π R-S (r) - Π R-S ((Π R-S(r) x s) - r) ΠR-S(r) A1 a b c Π R-S((Π R-S(r) x s) - r) - A1 b = Π R-S (r) - Π R-S ((Π R-S(r) x s) - r) A1 a c Asignación Z←R SELECT * FROM R INTO S SELECT * FROM R AS S El operador asignación es útil para expresar consultas complejas, pues permite dividir la pregunta en módulos. Por ejemplo, para expresar de una manera más entendible a la equivalencia de la división en términos de operaciones básicas se pueden realizar las siguientes asignaciones: A <- Π R-S (r) B <- A - Π R-S ((Π R-S(r) x s) - r La asignación se puede observar en dos ámbitos: Uno en donde la variable a la que se asigna sólo se requiere de manera temporal, por ejemplo, como medio para realizar un “query” complejo. Bases de Datos. Miguel Murguía. FAR. 86 Otro, donde se desea que el valore de la variable (la relación asignada) se almacene en la base de datos, ésta operación requiere una modificación al diccionario de datos, es decir al esquema de la base de datos, además de que se deberá especificar la(s) columna(s) que conforma a la llave primaria. Bases de Datos. Miguel Murguía. FAR. 87 Ejercicios I 1. Considere la siguiente pregunta: “Clave de las materias que han sido cursadas por todos los alumnos” ¿Qué operador relacional ayuda a contestar esta pregunta directamente? ¿Cuál es una equivalencia en SQL de ese query? 2. ¿En que sentido los operadores de diferencia, unión e intersección no son equivalentes a su contraparte en la teoría de conjuntos? 3. ¿Qué es compatibilidad de unión? ¿A qué operadores aplica? ¿Porqué el modelo relacional lo pone como una restricción en esos casos? 4. ¿Qué significa que los operadores del modelo relacional sean cerrados? ¿Cómo esa propiedad ayuda en la práctica? 5. ¿Es más complicado actualizar llaves primarias que otros atributos? ¿Por qué? Bases de Datos. Miguel Murguía. FAR. 88 Ejercicios II 1. Construya una tabla de los operadores relacionales indicando si son unarios o binarios y si son o no conmutativos. Asimismo, indique si es requisito que los operandos cumplan la restricción de compatibilidad de unión. 2. Para el esquema de una base de datos de un negocio que desarrolló, muestre una consulta en donde se utilice el producto natural de tres tablas. 3. Construya la consulta equivalente del ejercicio anterior pero utilizando producto cartesiano. 4. Explique la equivalencia de la operación división utilizando sólo operaciones básicas. 5. Construya una expresión del álgebra relacional para obtener los nombres de las materias que ha cursado Carmen Díaz. 6. Construya una expresión del álgebra relacional para obtener los nombres de los alumnos que han cursado Bioquímica pero no Estadística. Bases de Datos. Miguel Murguía. FAR. 89 2. Modificación de la Base de Datos Asignación Z←R SELECT * FROM R INTO S SELECT * FROM R AS S El operador asignación es útil para expresar consultas complejas, pues permite dividir la pregunta en módulos. Por ejemplo, para expresar de una manera más entendible a la equivalencia de la división en términos de operaciones básicas se pueden realizar las siguientes asignaciones: A ← Π R-S (r) B ← A - Π R-S ((Π R-S(r) x s) - r La asignación se puede observar en dos ámbitos: Uno en donde la variable a la que se asigna sólo se requiere de manera temporal, por ejemplo, como medio para realizar un “query” complejo. Otro, donde se desea que el valore de la variable (la relación asignada) se almacene en la base de datos, ésta operación requiere una modificación al diccionario de datos, es decir, al esquema de la base de datos, además de que se deberá especificar la(s) columna(s) que conforma a la llave primaria. Bases de Datos. Miguel Murguía. FAR. 90 Inserción insert Z←Z∪R INSERT INTO R VALUES (v1, v2, ..., vn) El operador insert permite agregar un renglón o una colección de renglones a una relación. Aunque físicamente se insertan en algún orden, para el modelo relacional no es importante si se insertan al inicio o al final o en algún otro orden. Si la colección de renglones a insertar contiene renglones que están duplicados, entonces, el DBMS debe insertar sólo uno de ellos. Si la colección de renglones a insertar incluye alguno de los de la relación en que se insertan, entonces, el DBMS no debe insertarlo. Como una relación no debe tener renglones que repitan la llave primaria, entonces no deberán de insertarse los renglones que ocasionen este problema. Si la relación en al que se insertan tiene índices, éstos deben de actualizarse automáticamente, para que los nuevos renglones sean incluidos. Si los renglones a insertar se obtienen de una expresión del álgebra relacional, entonces se puede utilizar la unión y la asignación para subsitutir a la inserción: Z ← Z UNION E donde E es una expresión del álgebra relacional. SQL: INSERT INTO HISTORIA VALUES (970003, 02001, 97, 9); Bases de Datos. Miguel Murguía. FAR. 91 Actualización update UPDATE R SET A=a WHERE B=b; El operador update substituye a la eliminación e inserción de renglones cuando se desean cambiar los valores de una porción pequeña de las columnas. La información necesaria para realizar una actualización es: • el nombre de la relación a actualizar, • la especificación de los renglones a actualizar, y • los nombres de las columnas que se desean actualizar en los renglones y los nuevos valores de esos componentes. Para identificar a los renglones que se desean actualizar, el usuario puede brindar una lista de las claves primarias, o una condición válida para el operador selección. Los índices existentes deben de actualizarse. La integridad referencial puede dañarse si se actualizan las llaves primarias o las llaves foráneas. Actualización de llaves primarias El modelo relación define un operador para este caso especial: primary-key update. Este operador busca en todas las columnas de la base de datos que tengan el mismo dominio de la columna que el usuario desea actualizar y cambia, en cascada, todos los valores que coincidan (llaves foráneas). SQL: UPDATE MATERIA SET NOMBRE_MATERIA=“Cálculo Integral” WHERE NOMBRE_MATERIA=“Cálculo”; Bases de Datos. Miguel Murguía. FAR. 92 Borrar delete DELETE R WHERE P El operador delete permite eliminar renglones de una relación. El caso particular de borrar cero renglones no debe tratarse especialmente. El usuario puede especificar los renglones mediante una lista de llaves primarias o mediante una expresión de selección válida. Los índices existentes deben de actualizarse automáticamente. La integridad referencial puede dañarse si existen llaves foráneas con valores que coincidan con las llaves primarias de los renglones eliminados. DELETE EXAMEN WHERE ORDEN_DE_PAGO=NULL; delete with cascade deletion En el modelo relacional se define el operador delete with cascade deletion que produce una propagación de la eliminación de renglones ligados mediante llaves foráneas que coinciden con las llaves primarias de los renglones eliminados. 3. Vistas Definición de vistas Las vistas permiten personalizar la interface con cada tipo de usuario. También permiten confinar la interacción con la Base de Datos a una o más vistas como la única manera de acceder a los datos. Las vistas “relaciones virtuales” representadas por su nombre y su definición. La definición de una vista puede estar basada en: Bases de Datos. Miguel Murguía. FAR. 93 a) tablas-R b) vistas c) tablas-R y vistas Por ejemplo, se puede definir una vista que considere a los alumnos de la carrera de Biología. Esa vista puede estar representada en el catálogo bajo la fórmula: ALUMNO [Carrera=“Biología”] VISTA_1 Numerocuenta 950001 950002 970001 950004 970003 NombreAñoCarrera alumno ingreso Oscar Martínez 95 Biología Mario Sánchez 95 Biología Emilio Vera 97 Biología Carmen Díaz 95 Biología Miguel Romero 97 Biología Otro ejemplo de vista es el equi-join entre ALUMNO e HISTORIA sobre el atributo Número_de_cuenta. ALUMNO [Número_de_cuenta=Número_de_cuenta] HISTORIA VISTA_2 Numerocuenta 950001 .... 970003 Nombre... alumno Oscar Martínez ... Número_cuen ... ta 950001 ... Calificació n 8.2 Miguel Romero ... 970003 8 Bases de Datos. Miguel Murguía. FAR. ... 94 Modificabilidad de las Vistas Las vistas no deben definirse en términos de procedimientos (v.g. involucrando loops), esto hace que los usuarios puedan definir vistas aunque no sean programadores. Las vistas se definen utilizando lenguaje relacional. La definición de las vistas deben de poder almacenarse en el catálogo, pues en general, son de interés para una comunidad de usuarios y no solo para un usuario en particular. El DBMS y el lenguaje relacional no deben hacer distinción en el tratamiento de relaciones y de vistas, excepto porque: • algunas vistas no aceptan inserción de renglones, eliminación y/o actualización. • algunas vistas no tienen llaves primarias, por lo que no aceptan aquellos operadores que requieren de una llave primaria en sus operandos. Modificabilidad El término “modificable” se refiere a que una vista pueda aceptar operaciones de delete, update e insert. No todas las vistas son modificables, pues en algunos casos, el dar esas libertades puede producir daños en la integridad. Por ejemplo, si una vista se define como una proyección de atributos no primos, entonces no está definido cómo operar un delete. Bases de Datos. Miguel Murguía. FAR. 95 Algoritmo VU Considérese la siguiente definición de una vista: VISTA_3: HISTORIA [Clave_materia, Calificación] Clave-materia Calificacio n 02001 8.2 02001 9 02003 7 02002 9 02003 10 02002 8 02003 9 La vista anterior no puede aceptar delete, pues cada renglón de la vista pueden corresponder a más de uno en la relación base (HISTORIA), así, la eliminación de un renglón en la vista podría considerar la eliminación de varios en la relación base. En términos generales, una vista es modificable en términos de tres operadores: delete, update e insert. Para cada uno de esos operadores se puede definir si la vista es modificable. Así, se puede definir para cada vista si se le pueden borrar tuplas, insertar tuplas o actualizar componentes. El modelo relacional define el algoritmo VU (View Updatability) para definir si una vista es modificable o no en cada uno de los tres aspectos: delete, update e insert. El algoritmo VU debe estar implementado en los DBMS y puede ejecutarse al momento de definir una vista. Es decir, el algoritmo VU opera en tiempo de la definición de la vista, no en el de la ejecución. El algoritmo VU recibe como parámetros la definición de la vista en un lenguaje relacional y el conjunto de restricciones de integridad. Con esos dos elementos se puede decidir la modificabilidad de la vista. El DBMS debe de almacenar en el catálogo los estados reportados por el VU para la modificabilidad de cada vista. Bases de Datos. Miguel Murguía. FAR. 96 IV Diseño de bases de Datos Relacionales 1. Normalización Dependencia funcional Dada una relación R, su atributo B es funcionalmente dependiente del atributo A (denotado por AÆ B) si y sólo sí, siempre que dos tuplas de R coinciden en su valor A, también lo hacen en su valor B. También se dice que A determina funcionalmente a B. Por ejemplo: A 1 1 2 3 3 3 4 4 B 22 22 50 10 10 10 22 22 Las dependencias funcionales definen una de las maneras en que se relacionan entre sí los atributos. Pueden ser vistas como un conjunto de restricciones al modelo de datos, ya que son condiciones que se deben de cumplir en el modelo de datos. ALUMNO Numerocuenta Nombrealumno Añoingreso Bases de Datos. Miguel Murguía. FAR. Carrera 97 En esa relación el atributo NOMBRE_ALUMNO es funcionalmente dependiente del NUMERO_CUENTA, pues para cada valor de NUMERO_CUENTA hay sólo uno de NOMBRE_ALUMNO. Obsérvese que la dependencia funcional es direccional, por ejemplo, se permite que para cada valor de NOMBRE_ALUMNO si haya más de uno en NUMERO_CUENTA. Supóngase que se tiene una relación con el siguiente esquema: HISTORIA(ALUMNO#, GRUPO#, MATERIA, PROFESOR, SALON, CALIFICACION) con llave primaria (ALUMNO#, GRUPO#); en la que se cumplen las siguientes relaciones funcionales: 1.- (ALUMNO#, GRUPO#) Æ CALIFICACION Lo que implica que para cada par de valores ALUMNO#, GRUPO# existe un sólo valor de CALIFICACION. 2.- GRUPO# Æ MATERIA 3- GRUPO# Æ PROFESOR 4.- GRUPO# Æ SALON Lo que implica que para cada valor GRUPO# hay un sólo valor de MATERIA, PROFESOR y SALON. 5.- PROFESOR Æ SALON y para cada valor de PROFESOR hay sólo uno de SALON. Las dependencias funcionales son un elemento importante en el diseño de bases de datos relacionales, pues ponen restricciones al modelo por construir. Además, en varios de los conceptos de normalización la dependencia funcional está involucrada como idea fundamental. Bases de Datos. Miguel Murguía. FAR. 98 1a. forma normal Una relación está en primera forma normal (1FN) si todos los valores de los atributos son atómicos. Generalmente esta propiedad es inherente a la definición de relación. 2a. forma normal Una relación está en segunda forma normal (2FN) si está en 1FN y cada atributo no-primo depende completamente de la llave primaria. Dependencia completa se refiere a que si en la llave primaria participa más de un atributo, entonces el atributo debe depender de la combinación de todos los atributos de la llave y no sólo de alguno de ellos. Por ejemplo, CALIFICACION depende completamente de la llave primaria: 1.- (ALUMNO#, GRUPO#) Æ CALIFICACION mientras que SALON no: 4.- GRUPO# Æ SALON Así, para transformar la relación HISTORIA a 2FN es necesario separar los atributos que dependan parcialmente de la llave: CALIF (ALUMNO#, GRUPO#, CALIFICACION) CURSO (GRUPO#, MATERIA, PROFESOR, SALON) La descomposición garantiza que se haga sin “pérdida de información”, es decir, que no contenga menos información que: HISTORIA(ALUMNO#, GRUPO#, MATERIA, PROFESOR, SALON, CALIFICACION) Bases de Datos. Miguel Murguía. FAR. 99 Nótese que para que una relación que esté en 1FN no esté en 2NF debe tener una llave compuesta. La relación HISTORIA, que está 1NF pero no en 2NF, tiene la dificultad de que: • No se puede registrar un curso sin que se conozca cuando menos un alumno que esté inscrito. Pues no se puede tener un valor nulo en el atributo ALUMNO#. • Si se desea actualizar el nombre del PROFESOR se deberá hacerlo en varias tuplas de la relación. • Si todos los alumnos de un curso se dan de baja entonces se perderá la información de ese curso. Bases de Datos. Miguel Murguía. FAR. 100 3a. forma normal Una relación está en tercera forma normal (3FN) si está en 2FN y cada atributo no-primo depende no-transitivamente la llave primaria. Por ejemplo, el atributo SALON es dependiente transitivamente del atributo GRUPO#, pues: 3- GRUPO# Æ PROFESOR, y 5.- PROFESOR Æ SALON Así, la relación CURSO no está en 3NF: CURSO (GRUPO#, MATERIA, PROFESOR, SALON) y presenta los siguientes problemas: • En el caso de que los salones sean cubículos personalizados, no se puede asignar un cubículo (SALON) a un PROFESOR hasta se habrá un curso. • Si el PROFESOR cambia de cubículo, habrá que actualizarlo en cada grupo asignado a ese profesor. • Si un profesor deja de dar clases, entonces no se tiene información de él y en qué cubículo encontrarlo. Para transformarla a 3NF, se debe dividir la relación CURSO para evitar que SALON dependa transitivamente de la llave primaria: CALIF (ALUMNO#, GRUPO#, CALIFICACION) CURSO (GRUPO#, MATERIA, PROFESOR) CATEDRA (PROFESOR, SALON) En este proceso de partir la relación original en otras, se conoce como descomposición sin pérdida de información. En general, una relación R(A,B,C) en la que existe una dependencia funcional Bases de Datos. Miguel Murguía. FAR. 101 AÆ B, puede descomponerse sin pérdida de información en las proyecciones: R1(A,B) y R2(A,C) que se conoce como el “teorema de Heath”, descrito en 1971. No se pierde información en la descomposición, pues la relación original se puede reconstruir reuniendo (join) las proyecciones. Bases de Datos. Miguel Murguía. FAR. 102 Forma normal de Boyce-Codd Una relación está en la forma normal de Boyce-Codd (BCFN) si y sólo sí cada determinante es una llave candidata. Un determinante es un atributo o grupo de ellos, de los que algunos otros atributos son funcionalmente dependientes, es decir, si: AÆ B, entonces A es un determinante. Como ejemplo, considérese una escuela en la que: • cada materia puede ser impartida por varios profesores, • cada profesor enseña sólo una materia, • cada estudiante toma varias materias y tiene sólo un profesor para una materia dada. Lo anterior puede representarse mediante el esquema: INSCRIPCION(ALUMNO#, PROFESOR, MATERIA) con clave primaria (ALUMNO#, PROFESOR) y las dependencias: PROFESOR Æ MATERIA ALUMNO# Æ PROFESOR Esa relación no está en 2NF, pues existe la dependencia parcial: PROFESOR Æ MATERIA lo cual se puede resolver mediante: INSCRIPCION(ALUMNO#, MATERIA, PROFESOR) Bases de Datos. Miguel Murguía. FAR. 103 La relación: INSCRIPCION(ALUMNO#, MATERIA, PROFESOR) sí está en 2NF y aún en 3NF, pero no en BCFN, pues se tiene la dependencia: PROFESOR Æ MATERIA y PROFESOR no es una llave candidata (y es un determinante, por lo que viola la definición de BCFN). Como puede observarse, existe redundancia en el hecho de que cada profesor sólo imparte una materia, y en esa relación aparecerá el PROFESOR junto con la MATERIA que imparte cada que un alumno toma una clase con él. Lo anterior puede resolverse mediante la descomposición: CLASE(ALUMNO#, PROFESOR) PROFESOR(PROFESOR, MATERIA) Bases de Datos. Miguel Murguía. FAR. 104 4a. forma normal Una relación está en cuarta forma normal (4FN) si y sólo sí, siempre que exista una dependencia multivaluada en R, AÆÆ B, todos los atributos de R son funcionalmente dependientes de A. Como ejemplo considérese la relación: PROVEEDOR(COMPAÑIA, PRODUCTO, PAIS) con llave primaria (COMPAÑIA, PRODUCTO, PAIS) sin dependencias funcionales; y que significa que una COMPAÑIA vende un PRODUCTO en cierto PAIS. Esa relación está en BCFN. Sin embargo, es evidente la redundancia de información cuando cada empresa vende todos sus productos a cada país al que exporta. Por ejemplo, si IBM vende computadoras a Francia, entonces vende todo sus productos en Francia. Así, si quisiéramos agregar el hecho de que IBM exporta a España, tendríamos que agregar una tupla <IBM, p. España> para cada producto p que produce IBM. Ahora considérese la siguiente descomposición sin pérdida de información: PRODUCE(COMPAÑIA, PRODUCTO) EXPORTA(COMPAÑIA, PAIS) con claves primarias COMPAÑIA, PRODUCTO) y (COMPAÑIA, PAIS) respectivamente. La redundancia no era debida a la existencia de dependencias transitivas ni parciales, sino a las dependencias multivaluadas: COMPAÑIA ÆÆ PRODUCTO COMPAÑIA ÆÆ PAIS Bases de Datos. Miguel Murguía. FAR. 105 Ejemplos de tuplas de la relación PROVEEDOR COMPAÑIA IBM IBM IBM IBM IBM IBM DEC DEC DEC DEC ICL ICL PRODUCTO PC PC PC MAINFRAME MAINFRAME MAINFRAME PC PC MINI MINI MAINFRAME MAINFRAME PAIS FRANCIA ITALIA UK FRANCIA ITALIA UK FRANCIA IRLANDA FRANCIA IRLANDA ITALIA FRANCIA Alternativa, después de aplicar 4 forma normal: PRODUCE COMPAÑIA IBM IBM DEC DEC ICL PRODUCTO PC MAINFRAME PC MINI MAINFRAME EXPORTA COMPANY IBM IBM IBM DEC DEC ICL ICL PAIS FRANCIA ITALIA UK FRANCIA IRLANDA ITALIA FRANCIA Bases de Datos. Miguel Murguía. FAR. 106 Dependencia multivaluada Dada una relación R(A, B. C), la dependencia multivaluada A ÆÆ B se cumple en R sí y sólo sí, el conjunto de los valores de B que corresponden a un par dado (valor de A, valor de C) en R depende sólo del valor de A y es independiente de C. La relación PROVEEDOR se puede considerar como una combinatoria entre los atributos COMPAÑIA-PRODUCTO-PAIS COMPAÑIA IBM PRODUCTO PC MAINFRAME DEC PC MINI MAINFRAME ICL PAIS FRANCIA ITALIA UK FRANCIA IRLANDA ITALIA FRANCIA Es decir, se exige la existencia de tuplas dada la existencia de otras, por ejemplo, dado que existen las tuplas <IBM, PC, FRANCIA> y <IBM, MAINFRAME, ITALIA> entonces también deben existir las tuplas: <IBM, PC, ITALIA> y <IBM, MAINFRAME, FRANCIA> En general, si en una relación se cumple A ÆÆ B, entonces se cumple que dado que existen la tuplas: <a, b1, c1 > y <a, b2, c2 > Bases de Datos. Miguel Murguía. FAR. 107 también deben existir las tuplas: <a, b1, c2 > y <a, b2, c1 > Una dependencia multivaluada se da en relaciones de 3 o más atributos, pues la definición hace referencia a relaciones entre A, B y C. Se puede demostrar que siempre que se da: A ÆÆ B también se da: A ÆÆ C por lo que suele usarse la notación: A ÆÆ B | C Nótese que si una relación R no satisface una dependencia multivaluada, se puede construir una R’ que sí la satisfaga añadiendo tuplas a R. Por lo que se dice que mientras que las dependencias funcionales son restrictivas (por ejemplo dado A Æ B y la tupla < a, b1> no puede existir la tupla < a, b2>), las dependencias multivaluadas son generadoras de tuplas. Bases de Datos. Miguel Murguía. FAR. 108 Limitaciones de la normalización • El proceso de normalización ayuda a representar los hechos en la Base de datos de una manera más cercana al mundo real. • Sin embargo, en ocasiones no es necesario normalizar “al extremo” las relaciones de la base de datos, inclusive, será conveniente mantener algunas sin normalizar. Por ejemplo, la relación: CLIENTE (NOMBRE, CALLE, CIUDAD, PC) con llave primaria (NOMBRE), no está en 3NF, pues se dan las dependencias transitivas: NOMBRE Æ CP CP Æ CALLE CP Æ CIUDAD • Aunque una relación normalizada soluciona aspectos de actualización de la información, en ocasiones incrementa los problemas de recuperación o consulta, ya que en una base de datos normalizada la información se tendrá que recuperar de varias relaciones, por lo que una no-normalizada podrá tener mejor desempeño. Bases de Datos. Miguel Murguía. FAR. 109 Dependencia de reunión (join) El concepto de dependencia de reunión es necesario para entender la 5a forma normal. La dependencia de reunión es un concepto más general que el de dependencia funcional y aún que el de multivaluada. Así como una dependencia funcional puede ser vista como un caso especial de la dependencia multivaluada, la dependencia multivaluada es un caso especial de la de reunión. Se dice que una relación R satisface una dependencia de reunión (A, B) si A join B reproducen exactamente a R. Considérese a la relación PROVEEDOR: (S#, Noms, Estado, Ciudad) con claves candidatas S# y Noms. La relación PROVEEDOR satisface la dependncia re reunión: ((S#, Noms, Estado), (S#, Ciudad)) pues (S#, Noms, Estado) join (S#, Ciudad) reproduce a PROVEEDOR. También satisface la dependencia de reunión: ((S#, Noms,), (S#, Estado), (Noms, Ciudad)) pues (S#, Noms) join (S#, Estado) join (S#, Ciudad) también reproduce a PROVEEDOR. Bases de Datos. Miguel Murguía. FAR. 110 5NF o PR/NF (forma normal de proyección-reunión) Quinta forma normal: Una relación R está en quinta forma normal (5NF) (también llamada de proyección-reunión) si y sólo si toda dependencia de reunión en R está implicada por las llaves candidatas de R. Considere la relación SPJ(S, P, J) con llave primaria (S,P,J): SPJ S S1 S1 S2 S1 P P1 P2 P1 P1 J J2 J1 J1 J1 La relación SPJ no contiene dependencias funcionales ni dependencias multivaluadas, por lo que se encuentra en 4NF, sin embargo, se observa redundancia en la información, pudiéndose producir anomalías al actualizarla. Considérese las proyecciones SP y PJ: SP S S1 S1 S2 S1 PJ P P1 P2 P1 P1 P P1 P2 P1 P1 J J2 J1 J1 J1 y el join de SP y PJ: SP join PJ S S1 S1 S1 S2 P P1 P1 P2 P1 J J2 J1 J1 J2 Bases de Datos. Miguel Murguía. FAR. 111 S2 P1 J1 como puede observarse SP join PJ no reproduce a SPJ, pues contiene una tupla de más. Ahora considere a la proyección SJ: SJ S S2 S1 S1 J J1 J1 J2 El join SP join PJ join SJ reproduce a SPJ, por lo que existe la dependencia de reunión (SP, PJ, SJ), y por lo tanto SPJ no está en 5NF. En general: Si <s1, p1> aparce en SP <p1, j1> aparce en PJ <s1, j1> aparce en SJ entonces <s1, p1, j1> aparece en SPJ. o bien: Si <s1, p1, j2>, <s1, p2, j1>, <s2, p1, j1> aparecen en R entonces <s1, p1, j1> también debe aparecer en R. Es decir, la dependencia de reunión es un tipo de restricción adicional a la dependencia funcional y a la multivaluada. Bases de Datos. Miguel Murguía. FAR. 112 Cuando existe una dependencia de reunión en una relación, sí debe descomponerse para así transformar a 5NF. Bases de Datos. Miguel Murguía. FAR. 113 DK/NF (Dependencia de dominio-clave) Forma normal de dominio-clave: Una relación está en forma normal de dominio-clave si cada restricción en la afinidad es consecuencia lógica de la definición de las claves y dominios. Cuando se diseña una base de datos y se intenta “normalizarla” se hace respecto a un conjunto de restricciones. Por ejemplo, para normalizar a 2NF, 3NF y BCNF se deben de considerar las dependencias funcionales en el modelo de datos; para normalizar a 4NF se deben de considerar las dependencias multivaluadas; para normalizar a 5NF se deben de considerar las dependencias de reunión. Sin embargo, existen otros tipos de restricciones que se imponen al modelo, entendiendo por restricción cualquier regla que gobierna los valores estáticos de atributos. De manera informal, una relación está en forma normal de dominio-clave si al aplicar las restricciones de clave y de dominio se provoca que se cumplan todas las restricciones. Bases de Datos. Miguel Murguía. FAR. 114 Resumen de Formas Normales 1NF Valores atómicos 2NF Los atributos no primos dependen completamente de la llave primaria 3NF No hay dependencias transitivas BCNF Cada determinante es una clave candidata 4NF No hay dependencias multivaluadas 5NF Dependencias de reunión implicadas por las llaves candidatas Bases de Datos. Miguel Murguía. FAR. 115 Dependencias Funcionales Además de que es útil conocer el conjunto de dependencias funcionales que se utilizarán como restricción para diseñar la estructura de la base de datos, también es útil conocer todas las posibles dependencias funcionales que se puedan derivar lógicamente. Es decir, dado un conjunto F de dependencias funcionales, se pueden deducir otras, siguiendo un conjunto de reglas deductivas, y se dice que F implica lógicamente a dicho conjunto. Cierre de un conjunto de dependencias funcionales El cierre de F es el conjunto de dependencias funcionales F+ que F implica lógicamente. Para calcular el cierre F+ dado un conjunto F, se utilizan los axiomas de Armstrong, que son un conjunto de reglas de transformación, para las que se ha demostrado su validez. Los axiomas de Armstrong son seguros porque no generan dependencias funcionales incorrectas y son completos porque para un conjunto F de dependencias funcionales permiten generar F+ completo. Bases de Datos. Miguel Murguía. FAR. 116 Axiomas de Armstrong Reflexividad: Si α es un conjunto de atributos y β ⊆ α, entonces se cumple αÆβ Aumento: Si se cumple αÆβ y γ es un conjunto de atributos, entonces se cumple γαÆγβ Transitividad: Si se cumple αÆβ y se cumple βÆγ, entonces se cumple αÆγ Otras reglas que se deducen a partir de los axiomas de Armstrong son: Unión: Si se cumple αÆβ y se cumple αÆγ, entonces se cumple αÆβγ Descomposición: Si se cumple αÆβγ, entonces se cumplen αÆβ y αÆγ Pseudotransitividad: Si se cumple αÆβ y se cumple βγÆδ, entonces se cumple αγÆδ Ejemplo: Considérese a la relación R: R(A, B, C, G, H, I) y al conjunto de F dependencias funcionales: AÆB AÆC Bases de Datos. Miguel Murguía. FAR. 117 CG Æ H CG Æ I BÆH Podemos generar algunos miembros de F+: A Æ H, transitividad A Æ B y B Æ H; CG Æ HI, unión CG Æ H y CG Æ I; AG Æ I, AG Æ CG aumento A Æ C y G. AG Æ I transitividad AG Æ CG y CG Æ I Bases de Datos. Miguel Murguía. FAR. 118 Análisis La metodología para diseño de bases de datos relacionales se puede clasificar en dos tipos de estrategias: Análisis y Síntesis. Los ejemplos revisados en clase sobre las diferentes etapas de normalización, utilizan una estrategia analítica porque dada una relación se iba dividiendo, generando relaciones con menor número de atributos, con la finalidad de avanzar en el proceso. Análisis significa distinguir y separar las partes de un todo hasta llegar a conocer sus principios o elementos. En el caso extremo de la metodología de análisis, se parte de una relación universal y se va dividiendo para ir cumpliendo con diferentes grados de normalización. Casos intermedios y más comunes son partir de un conjunto de relaciones en las que cada una se estudia para establecer si cumple con una determinada forma normal. En el análisis se generan conceptos más específicos a partir de conceptos generales. Por ejemplo, a partir de Curso se pueden “descubrir” las relaciones Alumno, Profesor y Salón. Bases de Datos. Miguel Murguía. FAR. 119 Síntesis Síntesis significa formar un todo mediante la reunión de sus partes. En la síntesis se generan conceptos más generales a partir de conceptos específicos. Por ejemplo, se puede generar el concepto (relación) Curso a partir de las relaciones Alumno, Profesor y Salón. Caso teórico extremo es partir de un conjunto de atributos y de dependencias funcionales, e ir agregando a los atributos guiado por las restricciones de dependencias funcionales. Bases de Datos. Miguel Murguía. FAR. 120 Ejercicios 1.- Defina 30 términos o conceptos del modelo relacional revisados en clase. 2.- Mencione algunas características del modelo relacional en las que esté involucrado el concepto de dominio. 3.- Considere a la relación R(A, B, C, D, E) y dependencias funcionales: A Æ BD CD Æ E BÆD EÆA a) Demuestre que (A, B, C) (A, D, E) es una descomposición sin pérdida de información. b) Demuestre que (A, B, C) (C, D, E) no es una descomposición sin pérdida de información. c) Normalice R hasta BCNF justificando cada paso. 4.- Para el ejemplo de la escuela revisado en clase, proponga un conjunto de restricciones mediante dependencias funcionales, justificando cada una. Bases de Datos. Miguel Murguía. FAR. 121 5.- Considere la relación PROYECTO: esquema: PROYECTO(IDProyecto, NombreEmpleado, SalarioEmpleado) extensión: PROYECTO IDProyecto NombreEmpleado SalarioEmpleado 100A 100A 100B 200A 200B 200C 200C 200D Juan Samuel Samuel Juan Juan Pedro Samuel Pedro 6400 5100 5100 6400 6400 2800 5100 2800 Suponga que todas las dependencias funcionales son evidentes en la extensión. ¿Cuál de las siguientes dependencias funcionales se cumplen? a) IDProyecto Æ NombreEmpleado IDProyecto Æ SalarioEmpleado (IDProyecto, NombreEmpleado) Æ SalarioEmpleado NombreEmpleado Æ SalarioEmpleado SalarioEmpleado Æ IDProyecto SalarioEmpleado Æ IDProyecto, NombreEmpleado b) ¿En qué forma normal está? Explique. c) ¿El atributo SalarioEmpleado es un determinante? d) ¿El atributo NombreEmpleado es un determinante? e) ¿El atributo IDProyecto es un determinante? f) ¿Existen dependencias transitivas? g) Considerando el conjunto de dependencias funcionales que se cumplen, rediseñe normalizando. Bases de Datos. Miguel Murguía. FAR. 122 2. Árboles, redes y relaciones recursivas Árboles Un árbol se puede representar mediante relaciones con cardinalidad de asignación 1:N. Se representan almacenando la clave de padre en el hijo. Los nodos raíz tienen valor nulo en ese atributo. Cada nodo tiene cuando mucho un padre. Por ejemplo, la estructura de división política puede representarse mediante un árbol, implementándola como: País 1:N Estado 1:N Municipio lo que significa que un país contiene varios estados y un estado contiene varios municipios. Si los diferentes niveles del árbol son del mismo tipo, entonces se puede representar mediante relaciones recursivas. Por ejemplo, si se tiene una relación Cliente y se desea registrar qué persona recomendó a qué otra, entonces: Cliente 1:N Cliente que podría implementarse a través de los campos ClvCliente y RecomendadoPor: Cliente ClvCliente 1 2 3 4 5 6 Nombre ... Bases de Datos. Miguel Murguía. FAR. RecomendadoPor NULL 1 1 3 3 4 123 Relaciones recursivas Relación recursiva: Relación que existe entre entidades de la misma clase. 1:1 Persona A B C D E Se relaciona hacia B D E A nulo Persona B D E A Se relaciona desde A E C D 1:N Cliente A B C D E No normalizado: Cliente A A B B C D E Recomendado por nulo A B B A Recomienda a B E C D nulo nulo nulo N:M Dos tablas: Bases de Datos. Miguel Murguía. FAR. 124 Empresa A B C D E Atributos... ... ... ... ... ... y Tabla de intersección: Empresa A B C D E Vende a C D B A A Bases de Datos. Miguel Murguía. FAR. 125 Redes Análogamente, una red se puede representar mediante cardinalidades de asignación N:M. Si los nodos son del mismo tipo, entonces se debe representar mediante una relación recursiva, pero como la cardinalidad es N:M, entonces se debe de añadir una relación que contenga a las claves primaria y foránea. Por ejemplo, si se quiere representar la red de partidos que han jugado una serie de equipos, entonces se deben de relacionar por Equipo ClvEquipo Nombre Técnico ... Partidos ClvEquipoCasa ClvEquipoVisita ... Una red también puede servir para representar listas de materiales, por ejemplo, para indicar de qué partes están formadas otras partes. Listas Una lista de elementos del mismo tipo puede representarse con una relación recursiva 1:1. Por ejemplo, una lista de los clientes que se han ido incorporando a la cartera se puede representar agregando un campo ClvSigCliente. Obviamente, en muchos casos se puede añadir un campo que establezca un criterio de orden, por ejemplo la fecha de la primera venta. Bases de Datos. Miguel Murguía. FAR. 126 3. Integridad El mantenimiento de la integridad de una base de datos, está relacionado con el mantenimiento de la consistencia de los datos y con su validez. Este es un aspecto muy importante, sobre todo en bases de datos en ambientes multiusuarios. Algunos manejadores comerciales contienen un subsistema de integridad que monitorea las operaciones de actualización con el fin de detectar violaciones a la integridad. Cuando se detecta una violación a la integridad, el sistema realiza algunas acciones apropiadas, como rechazar la operación causante de la violación, reportar la violación y, de ser necesario, regresar a la base de datos a un estado consistente. Sin embargo, los subsistemas de integridad en general son primitivos, por lo que esta tarea queda principalmente en manos del implementador. Podemos agrupar a las diferentes estrategias del mantenimiento de la integridad en: Reglas de integridad de dominio. Su objetivo es mantener valores correctos de los atributos. Por ejemplo, la regla de integridad de entidad verifica que los valores de los atributos que pertenecen a la llave primaria no deben ser nulos. Reglas de integridad de Intra-relación. Verifican la validez entre los valores de los atributos de una misma relación y el mantenimiento de llaves únicas. Reglas de integridad de referencia. Mantienen la validez y consistencia entre relaciones. Integridad de dominio Una relación se define como un subconjunto de un producto cartesiano de n dominios D1, D2, ...Dn, no necesariamente distintos. Así, los valores que aparecen en la columna i de la relación deben pertenecer a Di, es decir, cada atributo de cada relación R tiene un dominio subyacente Di, por lo que cada valor candidato para R.A debe pertenecer a Di. Bases de Datos. Miguel Murguía. FAR. 127 Una regla de integridad de dominio es simplemente una definición del tipo del dominio. La integridad de dominio está relacionada con el concepto de verificación de tipo de los lenguajes de programación. La definición del tipo de un dominio debe ser lo más precisa posible con el fin de evitar violaciones a la integridad de dominio. Por ejemplo, el dominio del atributo EDAD puede definirse como: DOMINIO DOM_EDAD = ENTERO pero es más conveniente aún definirlo como: DOMINIO DOM_EDAD = ENTERO-POSITIVO y aún mejor como: DOMINIO DOM_EDAD = ENTERO-POSITIVO:[0-150] Desafortunadamente, la mayoría de los manejadores comerciales sólo proveen tipos simples para los dominios. Por ejemplo, ORACLE tiene los tipos NUMBER (números enteros y reales), CHAR (cadenas), DATE, TIME y MONEY. Varios atributos pueden tener el mismo dominio, por ejemplo, NOMBREALUMNO y PROFESOR tienen el dominio de los nombres de las personas. Sin embargo, para efectos de implementación, en la práctica se definen los dominios como cadenas de caracteres. Surge un problema cuando se definen a los dominios de NOMBRE-ALUMNO y MATERIA como cadenas de caracteres, por ejemplo, el sistema no puede detectar que la pregunta: “Todos los alumnos que tienen el nombre de alguna de las materias que han cursado” es improcedente, pues contiene una comparación entre dos atributos con dominios diferentes: Bases de Datos. Miguel Murguía. FAR. 128 ALUMNO.Nombre=MATERIA.Nombre Así, las restricciones de dominio sirven, no sólo para validar la información contenida en cada atributo, sino también para verificar que tienen sentido las comparaciones incluidas en preguntas a la base de datos. Integridad intra-relacional Las reglas de integridad intra-relación verifican la validez entre los atributos de una relación, por ejemplo llaves únicas o el hecho de que toda relación no debe contener dos tuplas con los mismos valores en todos sus atributos. Cuando se agrega una tupla se debe checar que no exista otra tupla con los mismos valores en todos sus atributos primos. Asimismo, también se debe verificar esa condición, no sólo cuando se agregan tuplas, sino también cuando se actualizan. De hecho, actualizar los valores de los atributos primos es una operación que debe tomarse con cuidado, pues una operación inválida tiene serias consecuencias en la base de datos. Integridad referencial La integridad de referencia mantiene la validez de las relaciones entre las tablas. Por ejemplo, verificar que las llaves foráneas sean nulas o iguales a alguna llave primaria de la tabla que se relaciona. Las llaves foráneas desempeñan un papel muy importante, pues mantienen ciertas relaciones definidas en el modelo. La cardinalidad de asignación también es una restricción de integridad. Las cardinalidades 1:1, N:1 o N:M que se definen en un modelo, deben de mantenerse en la implementación, por ejemplo, una relación con cardinalidad 1:1 no puede contener dos tuplas con los mismos valores en los atributos de la llave foránea. De manera general, la integridad referencial permite asegurar que un valor que aparece en una relación, también aparezca en otra. Bases de Datos. Miguel Murguía. FAR. 129 Integridad semántica intra-relacional Verificar la consistencia entre los valores de dos atributos de cada tupla. Por ejemplo, los atributos EDAD y ANTIGÜEDAD de una tabla con datos de profesores, deben de cumplir la restricción EDAD > ANTIGÜEDAD o más específicamente: EDAD > ANTIGÜEDAD + C donde C es un valor constante que es la edad mínima a la que un profesor comienza a laborar. La integridad semántica debe de fundamentarse en el análisis sobre el significado de los atributos dentro del dominio de aplicación, es decir, en el significado de las interrelaciones entre atributos. Análisis de consistencia en bases de datos geográficas Dentro del registro ClvEstado Lat Lon ... El punto (Lat,Lon) debe de estar dentro de los límites estatales de ClvEstado, de acuerdo a una cartografía de referencia. ClvEstado Lat Lon Altitud ... El punto (Lat,Lon) debe estar a una altitud igual a Altitud. Bases de Datos. Miguel Murguía. FAR. 130 (La altitud registrada en Altitud debe ser igual a la altitud del punto (Lat,Lon) en el mapa.) El estado ClvEstado debe contener a Altitud en sus intervales de altitudes Entre registros Dos registros con el mismo (Lat,Lon) deben coincidir en sus valores ClvEstado y Altitud. Afirmaciones Una afirmación puede verse como un procedimiento mediante el cual se verifica que cierto atributo, o conjunto de ellos, cumpla con ciertas restricciones. Por ejemplo, verificar que un alumno no puede realizar más de dos extraordinarios para una misma materia. Así, cuando se incorpora un registro sobre un examen extraordinario habría que contar las ocurrencias para ese mismo alumno en esa misma materia y sólo se aceptaría la operación en el caso de que el número de ocurrencias no supere a uno. De hecho, las restricciones de integridad de dominio, referencial e intrarelacional pueden verse como casos específicos de afirmaciones. En general, las afirmaciones realizan un consumo de recursos considerable. La definición original de SQL incluía la instrucción assert para definir afirmaciones, pero fué eliminada de las implementaciones, y aún del SQL estándar actual, debido a la gran cantidad de tiempo que consume la verificación de una afirmación. Como alternativa a las afirmaciones, se puede establecer un programa de validación en el que el administrador defina un calendario para aplicar rutinas de validación, que detecten violaciones a la integridad. Esta estrategia tiene la ventaja de que el tiempo de acceso en linea no disminuye, pero tiene la desventaja de que es más dificil reestablecer la integridad de la base de datos días después de hacer las actualizaciones que en el momento de la captura. Bases de Datos. Miguel Murguía. FAR. 131 Disparadores Los disparadores son estrategias de integridad en los que se pueden especificar instrucciones a ejecutar cuando se cumple un conjunto de instrucciones predeterminadas. Por ejemplo, añadir un registro en una tabla cuando se incluya un valor que no existía. Los disparadores son análogos a los demonios del sistema operativo UNIX. 4. Autorizaciones Los diferentes tipos de instituciones establecen diferentes procedimientos para salvaguardar su información. El enfoque de seguridad y autorización que se incorpora en el modelo relacional es lo suficientemente flexible para que las instituciones puedan mantener los procedimientos que utilizan, sin ningún cambio, o bien, con pequeños cambios. En los DBMS actuales, existe una relación estrecha entre autorización y vistas. Un beneficio de este enfoque es que disminuye la complejidad de la implementación. Algunos usuarios pueden estar autorizados para manipular ciertas columnas o renglones de una relación, así, el alcance de la autorización puede expresarse en términos de una vista que contenga sólo esos renglones y columnas. Así, pueden existir vistas sólo por motivos de autorización, sin embargo, la mayoría de los DBMS son pobres en la implementación de actualización de vistas. Filosofía afirmativa En el modelo relacional, el enfoque en cuanto a autorización es “afirmativo”, es decir, se expresa explícitamente los permisos, mientras que en muchos enfoques no relacionales se expresa explícitamente los accesos denegados. Bloque de actualización que eliminan renglones de una vista Bases de Datos. Miguel Murguía. FAR. 132 Supóngase que un usuario tiene acceso s una vista V y a actualizar los valores de una de sus columnas A. de una vista. El DBA debe poder bloquear las actualizaciones que hacen que algunos renglones “salgan” de la vista. Acciones que necesitan autorización de más de un usuario Algunas actividades o actualización de la base de datos son de crucial importancia para la empresa, por ejemplo, eliminar los datos de toda una tabla, para ese tipo de actividades se debe tener la autorización de DBA y del gerente, por ejemplo. Algunas de las actividades que pueden requerir la autorización de más de un usuario son: • alguna ejecución del comando DROP (desechar) • alguna ejecución del comando DELETE • algún cambio a los “periodos de gracia” Eliminaciones retardadas (“Periodos de gracia”) Las eliminación de relaciones mediante la ejecución del comando DROP RELATION tiene como consecuencia almacenarla por un periodo mínimo de 7 días. También las eliminación de un porcentaje elevado de renglones también pueden estar sujetas a esta estrategia. El “default” es un periodo de 7 días, pero se puede especificar un valor mayor. Actividades autorizables: control de la base de datos Algunas de las actividades que se deben de poder autorizar de manera separada o combinada son: • crear y eliminar (drop) un dominio • una tabla R base • una columna de una tabla R existente • una vista • una restricción de integridad • una función definida por el usuario • un índice Bases de Datos. Miguel Murguía. FAR. 133 • crear una llave foránea en una tabla R • activar o desactivar una autorización • establecer el modo UP o DOWN para el redondeo de pseudofechas (v.g. Febrero 30, Marzo 32, Enero 0) Actividades autorizables: Querys y manipulación • • • • • consultar una tabla R específica insertar renglones en una tabla R específica actualizar componentes específicos de una tabla R específica actualizar llaves primarias de tablas específicas borrar renglones de tablas R específicas Bases de Datos. Miguel Murguía. FAR. 134 5. Catálogo El catálogo almacena la descripción de la estructura de la base de datos. Forma parte del diccionario de datos. El diccionario de datos además almacena información sobre los programas de aplicación. El catálogo debe soportar las siguientes características: • • • • • • • • On-line Concurrencia Descripción de dominios, relaciones base y vistas Restricciones de integridad definidas por el usuario Restricciones de integridad referencial Funciones definidas por el usuario Datos de autorización Estadísticas On-line El DBMS debe soportar un catálogo on-line basado en el modelo relacional. La descripción de la base de datos de debe representar exactamente como datos ordinarios, permitiendo a los usuarios autorizados aplicar el mismo lenguaje relacional para consultar la descripción de la base de datos como se puede hacer con los datos regulares. Esta característica por lo general la tienen todos los DBMS. El que se permita usar el mismo lengaje y sobre un mismo tipo de estructura, hace que el DBA y los usuarios autorizados a accesar el catálogo, tengan que aprender un sólo modelo de datos (estructura y lenguaje) y no dos ( uno para datos ordinarios y otro para el catálogo), como sucedía con manejadores prerelacionales. Concurrencia Bases de Datos. Miguel Murguía. FAR. 135 El catálogo debe soportar varias consultas al mismo tiempo (consultas propiamente y actualizaciones). Al catálogo lo pueden acceder usuarios o programas de aplicación y se debe de cuidar de no elevar el número de usuarios autorizados para actualizarlo, ya que el DBMS lo accesa cuando se realizan consultas a datos regulares. Bases de Datos. Miguel Murguía. FAR. 136 Descripción de dominios, relaciones base y vistas Los dominios, las relaciones, las vistas las restricciones de integridad y las funciones definidas por el usuario se describen cada una por separado, pues su existencia es independiente: • Muchas relaciones puden utilizar un mismo dominio. • Las vistas pueden hacer referencias a más de una relación base. • Las restricciones de integridad pueden involucrar a más de una relación. Dominios Para cada dominio, el catálogo debe almacenar: • • • • el nombre del dominio su tipo de datos base el intervalo de valores permitido y una indicación de si el comparador MENOR QUE (<) es aplicable Relaciones base Para cada tabla R, se debe almacenar: • • • • • • • • • el nombre de la tabla R sinónimos si los tiene el nombre de cada columna para cada columna, el nombre de un dominio previamente definido si se permiten valores ausentes si se requiere que los valores sean distintos restricciones adicionales a las aplicables al dominio si forma parte de la llave primaria para cada llave foránea, las columnas y su secuenia de las que se compone. Vistas Bases de Datos. Miguel Murguía. FAR. 137 Para cada vista, el catálogo debe registrar: • • • • • • • el nombre de la vista sinónimos, si los hay el nombre de cada columna la expresión en lenguaje relacional que define a la vista si se permite la inserción de renglones si se permite borrar renglones para cada columna, si se permite la actualización de valores No es requisito registrar el dominio de las columnas de valores calculados, ya que es difícil deducirlo, pero si es necesario indicar el tipo de datos base. Restricciones de integridad Restricciones de integridad definidas por el usuario Las restricciones de integridad definidas por el usuario normalmente las incorpora el DBA. Pueden representar reglas y políticas de la compañía o regulaciones impuestas por el gobierno, o bien, pueden representar factores de diseño que son necesarios debido al significado de los datos. Para cada restricción de integridad definida por el usuario, el catálogo debe almacenar: • • • • su nombre el evento que la dispara la condición lógica a probar las acciones ante un intento de violación Restricciones de integridad referencial Para cada restricción de integridad referencial, el catálogo debe almacenar: • su nombre • el evento que la dispara Bases de Datos. Miguel Murguía. FAR. 138 • las llaves involucradas • las acciones ante un intento de violación Funciones definidas por el usuario Para cada función definida por el usuario, el catálogo debe almacenar: • • • • su nombre el código fuente el código compilado los nombres de las relaciones de las que la función requiere acceso de lectura • si la función tiene una inversa, su nombre • el código fuente y compilado de la función inversa Datos de autorización El catálogo debe almacenar qué usuarios, terminales y progrmas de aplicación están autorizados para tener acceso a qué parte de la base de datos, para qué tipos de operaciones y bajo qué condiciones. El modelo relaciones establece los accesos mediante acciones permitidas y no mediante acciones denegadas, lo que significa que el usuaio no tiene ninún permiso a menos que se indique en el catálogo explícitamente. Estadísticas El catálogo también debe almacenar información estadística que se utiliza para optimizar las consultas del lenguaje relacional: • el número de renglones en cada tabla R • el número de valores distintos en cada columna de cada tabla R Bases de Datos. Miguel Murguía. FAR. 139 Metodología general 1) Análisis de requerimientos • Datos requeridos para el dominio de aplicación. • Descripción informal de la información a almacenar, tanto de los objetos como de sus relaciones. • Generalización de las vistas sinónimas. • Identificación de sinónimos y homónimos (tanto de vistas como de objetos y relaciones). • Identificación de los procesos y operaciones que la BD deberá realizar. 2) Modelación EER de los requerimientos • Definición de: Entidades, Atributos y Relaciones. • Identificación de Claves. • Diagramas ER. • Cardinalidades del las relaciones. 3) Transformación del modelo EER al esquema relacional • Mapear el modelo EER a un conjunto de relaciones. • Poner atención en la cardinalidad y el tipo de relación (1:1; 1:N; N:M). 4) Normalización del esquema relacional • Descripción de las dependencias funcionales para cada relación. • Reducir cada relación al más conveniente estado de normalización. Bases de Datos. Miguel Murguía. FAR. 140 V Lógica y Cálculo Relacional de Tuplas 1. Lógica La lógica es un conjunto de conocimientos fundamental para el manejo de bases de datos. Las condiciones que se especifican al hacer una consulta a una base de datos pueden contener operadores lógicos. Por ejemplo, seleccionar aquellos registros que cumplan con la condición A y la condición B, pero que no cumplan la C: “Todos los municipios del estado de OAXACA que tengan una población mayor a 10,000 ha. pero que la superficie sea menor a 50,000 km2”. Las sustituciones de condiciones de esta consulta son: A = Municipio del estado de OAXACA B = Población > 10,000 C = Superficie < 50,000 Operadores lógicos Los operadores lógicos permiten crear enunciados compuestos a partir de enunciados simples. Por ejemplo el operador “y” o “conjunción” puede utilizarse para unir las proposiciones: P = Los habitantes de Michoacán tienen un ingreso promedio de 4 salarios mínimos. Q = Loa habitantes de Michoacán tiene una edad promedio de 20 años. P y Q = Los habitantes de Michoacán tienen un ingreso promedio de 4 salarios mínimos y una edad promedio de 20 años. El significado es que se dan ambos elementos de la fórmula, que los dos elementos simples son verdaderos. En la tabla n se muestran las notaciones más frecuentes para los operadores lógicos. En español, las palabras “además”, “aún”, aunque”, “pero”, “sin embargo” y “también” tienen un significado de conjunción, sin embargo, dan un matiz a la oración, que desafortunadamente se pierde en lógica al sustituirlos por el operador “y”. En la tabla n se ejemplifica en tres diferentes lenguajes el uso de la conjunción. El operador ”o” o “disyunción” también conecta a dos elementos, pero su significado es que se cumple alguno de los dos elementos (o ambos). En español, la palabra “o” tiene dos significados, uno “exclusivo” y otro “inclusivo”. El inclusivo se utiliza cuando se desea connotar que cuando menos uno de los dos elementos es verdadero, es decir, ya sea que los dos sean verdaderos, o sólo uno, por ejemplo, “La mayoría de los clientes tiene coche o casa”. El exclusivo se utiliza cuando se desea expresar que sólo uno de los dos es Bases de Datos. Miguel Murguía. FAR. 141 verdadero, es decir que la verdad de un enunciado excluye la posibilidad de que el otro también lo sea. Por ejemplo, en el enunciado: P=Las personas que votaron por el PRI o por el PAN para el presidente de la república. se entiende que cada persona emite un sólo voto para presidente de la república, y que por lo tanto ninguna persona puede votar por el PRI y por el PAN. En el operador “si ... entonces ...” o “implicación”, es importante el orden de los operandos. A diferencia de la conjunción y de la disyunción, la implicación no es conmutativa, es decir, no es lo mismo P -> Q que Q -> P mientras que sí es lo mismo P y Q que Q y P En la implicación al elemento que está antes del operador se le llama antecedente y al que está después consecuente. Así, en la fórmula P -> Q, P es el antecedente y Q es el consecuente. El significado más general es que cuando el antecedente es verdadero el consecuente es verdadero, sin embargo, como puede observarse en su tabla de verdad, también tiene el significado de que cuando el consecuente es falso también es falso el antecedente. Por ejemplo, el enunciado: P = Si trabaja entonces gana más de cero salarios mínimos es verdadero cuando el antecedente es verdadero y también el consecuente. De hecho, es falso solamente si el consecuente es falso y el antecedente verdadero, como así se puede apreciar en la tabla de verdad del operador “->“. La negación es un operador lógico unario, es decir, que afecta a sólo un argumento, a diferencia de la conjunción, la disyunción y la implicación que son binarios. Una fórmula negada es verdadera si la fórmula no negada es falsa y viceversa. Por ejemplo, si P = Tiene coche compacto la negación de P es: ¬ P = No tiene coche compacto Bases de Datos. Miguel Murguía. FAR. 142 Símbolo Nombres ^ Y AND CONJUNCI ON Tabla n. Operadores lógicos v ¬ O OR DISYUNCIO N NO NOT NEGACION ˜ -> IMPLICACION SI ... ENTONCES ... LENGUA SENTENCIA JE ESPAÑO L Número de personas que tienen coche compacto y que viven en el estado de Aguascalientes Dbase COUNT FOR COCHE=“COMPACTO” .AND. EDO=“AGS” SQL SELECT * FROM PERSONA WHERE COCHE=“COMPACTO” AND EDO=”AGS” GROUP COUNT Tabla n. Ejemplificación del operador lógico “Y” en tres lenguajes. Tablas de verdad Una tabla de verdad es una manera de conocer los posibles valores de verdad que puede adquirir una fórmula “compuesta”, dependiendo de los valores de verdad que adquiere cada uno de sus elementos “simples”. Para cada variable se crea una columna y cada renglón representa un caso de sustitución. Por ejemplo, en la tabla de verdad del operador “y”, en el encabezado se colocan las fórmulas, y en los siguientes renglones se especifican las posibles combinaciones de valores de verdad de cada fórmula simple, para así calcular el valor de verdad de la fórmula compuesta; en particular, en el segundo renglón se especifica el valor de verdad “Verdadero” para las fórmulas simples P y Q, el valor de verdad resultante para la fórmula compuesta P^Q también es “Verdadero”. Bases de Datos. Miguel Murguía. FAR. 143 “Y” (AND) P V V F F Q V F V F P^Q V F F F “O” (OR) P V V F F Q V F V F PvQ V V V F “IMPLICACIÓN” P Q V V V F F V F F P -> Q V F V V “NEGACION” P ¬P V F F V “Tablas de verdad” para los operadores lógicos Y, O, IMPLICACION y NO. Bases de Datos. Miguel Murguía. FAR. 144 Tautologías Las tautologías son expresiones lógicas que siempre son verdaderas. Lo son por su estructura, independientemente del significado. Cuando se hace una consulta a una base de datos y esa consulta es una tautología, entonces el resultado serán todos los registros de la base de datos, pues todos los registros cumplirán la condición. Por ejemplo, la siguiente consulta es una tautología: COUNT FOR COCHE=“COMPACTO” .OR. (.NOT. COCHE=“COMPACTO”) por lo que el resultado será el número de registros de la base de datos, pues todos cumplirán la condición de “coche compacto O coche no compacto” Reglas de inferencia Las tablas de verdad son una manera de verificar el valor de verdad de una fórmula compuesta, dado los valores de verdad de las fórmulas simples, o bien, una manera de probar que un conjunto de premisas son válidas respecto a una conclusión. Pero cuando el número de premisas es grande se vuelve impráctico ese método, en su lugar se utiliza el “método de deducción”. El método de deducción permite establecer la validez de conclusiones a partir de las premisas y “reglas de inferencia”. Las reglas de inferencia son argumentos para los que ya se ha establecido su validez. Las reglas de inferencia son un medio para deducir conclusiones válidas a partir de premisas válidas. Las reglas de inferencia son: 1) Modus Ponens 2) Modus Tolens 3) Silogismo hipotético 4) Silogismo disyuntivo 5) Dilema constructivo 6) Dilema destructivo 7) Simplificación 8) Conjunción 9) Adición A continuación se enuncia cada una de las reglas de inferencia, ejemplificándolas mediante proposiciones del español. Las proposiciones de los ejemplos muestran la utilidad de las reglas de inferencia al construir consultas a bases de datos. Bases de Datos. Miguel Murguía. FAR. 145 1) Modus Ponens P->Q P -----Q P=“gana más de tres salarios mínimos” Q=“ es sujeto de crédito” 1) Si gana más de tres salarios mínimos entonces es sujeto de crédito 2) Gana más de tres salario mínimos Por lo tanto: 3) Es sujeto de crédito 2) Modus Tolens P -> Q ¬Q -----¬P 1) Si gana más de tres salarios mínimos entonces es sujeto de crédito 2) No es sujeto de crédito Por lo tanto: 3) No gana más de tres salarios mínimos 3) Silogismo hipotético P -> Q Q -> R -----P -> R 1) Si gana más de tres salarios mínimos entonces es sujeto de crédito 2) Si es sujeto de crédito entonces enviar correspondencia Por lo tanto: 3) Si gana más de tres salarios mínimos entonces enviar correspondencia Bases de Datos. Miguel Murguía. FAR. 146 4) Silogismo disyuntivo P v ¬Q ¬P -----Q 1) Gana más de tres salarios mínimos o no es sujeto de crédito 2) No gana más de tres salario mínimos Por lo tanto: 3) Es sujeto de crédito 5) Dilema constructivo (P -> Q) ^ (R -> S) PvR -----QvS 1) Si gana más de tres salarios mínimos entonces es sujeto de crédito y Si tiene coche lujoso entonces enviar correspondencia 2) Gana más de tres salarios mínimos o tiene coche lujoso Por lo tanto: 3) Es sujeto de crédito o enviar correspondencia 6) Dilema destructivo (P -> Q) ^ (R -> S) ¬Q v ¬S -----¬P v ¬R 1) Si gana más de tres salarios mínimos entonces es sujeto de crédito y Si tiene coche lujoso entonces enviar correspondencia 2) No es sujeto de crédito o no enviar correspondencia Por lo tanto: 3) No gana más de tres salarios mínimos o no tiene coche lujoso 7) Simplificación P^Q Bases de Datos. Miguel Murguía. FAR. 147 -----P 1) Gana más de tres salarios mínimos y tiene coche Por lo tanto: 2) Gana más de tres salario mínimos 8) Conjunción P Q -----P^Q 1) Gana más de tres salarios mínimos 2) Tiene coche Por lo tanto: 3) Gana más de tres salario mínimos y tiene coche 9) Adición P -----Pv Q 1) Gana más de tres salarios mínimos Por lo tanto: 3) Gana más de tres salario mínimos o tiene coche Bases de Datos. Miguel Murguía. FAR. 148 Equivalencias lógicas Una fórmula es equivalente a otra cuando sus tablas de verdad son iguales, es decir, que cuando una fórmula es verdadera, dado ciertos valores de verdad a sus fórmulas simples, también la otra es verdadera, y cuando una fórmula es falsa la otra también lo es. En la Tabla n se muestran las equivalencias lógicas básicas. 10 <-> <-> <-> <-> <-> <-> <-> <-> <-> ¬P v ¬Q ¬P ^ ¬Q QvP Q^R (P v Q) v R (P ^ Q) ^ R (P^Q) v (P^R) (PvQ) ^ (PvR) ¬¬P Teoremas de De Morgan 14 ¬(P ^ Q) ¬(P v Q) PvQ P^R P v (Q v R) P ^ (Q ^ R) P ^ (Q v R) P v (Q ^ R) P 15 P -> Q <-> ¬Q -> ¬P Transposición 16 P -> Q <-> ¬P v Q Implicación material 17 <-> <-> (P -> Q) ^ (Q -> P) (P ^ Q) v (¬P ^ ¬Q) PvP Equivalencia material 18 P <-> Q P <-> Q P 19 P <-> P^P Tautología 11 12 13 Conmutación Asociación Distribución Doble negación Exportación Tabla n. Equivalencias lógicas básicas. Bases de Datos. Miguel Murguía. FAR. 149 2. Lógica de predicados Lenguaje de 1er orden o de predicados Símbolos: Propios del lenguaje Predicados P1, P2, P3, ... Funciones f, g, h, ... Constantes c1, c2, c3, ... Otros símbolos: Variables X, Y, Z Cuantificadores ∀ Universal ∃ Existencial Conectivos ¬, ^, v, →, ↔ Igualdad = Auxiliares ( ) . Hay representaciones del lenguaje de Lógica de 1er orden donde no hay funciones y son vistas como relaciones. La interpretación de los “otros símbolos” es siempre la misma, la de los símbolos propios del lenguaje es la que permite hacer referencia a lo que se quiere representar. Una fórmula es ... Se dice que una variable es libre cuando no está dentro del alcance de un cuantificador, de otra manera, se dice que está cuantificada. Un enunciado es una fórmula que no tiene variables libres, por ejemplo: ∀x(P(x)) P(x) si es un enunciado no es enunciado Al interpretar un enunciado, éste es verdadero o es falso, lo que no sucede con las fórmulas que no son enunciados. Reglas de la negación: ¬∀xA ≡ ∃x¬A ¬∃xA ≡ ∀x¬A Donde A es una FBF Bases de Datos. Miguel Murguía. FAR. 150 Reglas de cuantificación Instanciación Universal (IU) ∀x Φx ∴Φv donde v es cualquier símbolo individual Ejemplo: ∀x (Hombre(x) → Mortal(x) ) ∴ Hombre(sócrates) → Mortal(sócrates) Generalización Universal (GU) Φy ∴∀x Φx donde y denota cualquier individuo arbitrariamente elegido Generalización Existencial (GE) Φv ∴∃x Φx donde v es cualquier símbolo individual Instanciación Existencial (IE) ∃x Φx ∴Φv donde v es una constante individual diferente de y, que no aparece anteriormenteen el contexto. Bases de Datos. Miguel Murguía. FAR. 151 Ejemplo: demostración formal: Todos los perros son carnívoros; algunos animales son perros, por lo tanto algunos, animales son carnívoros” 1. ∀x(Px → Cx) 2. ∃x(Ax ^ Px) 3. Aw ^ Pw 4. Pw → Cw 5. Pw ^ Aw 6. Pw 7. Cw 8. Aw 9. Aw ^ Cw 10.∃x(Ax ^ Cx) 2. IE 1. IU 3. Conm 5. Simp 4, 6 MP 3 Simp 8, 7 Conj 9 GE Bases de Datos. Miguel Murguía. FAR. 152 3. Cálculo relacional de tuplas { t| P(t) } El conjunto de las tuplas t tales que el predicado P(t) es verdadero. Por ejemplo: { t| t ∈ alumno } obtiene a toda las tuplas de la relación alumno. Si únicamente requiere un atributo de todas las tuplas, por ejemplo nombre-alumno, es decir una operación análoga a la proyección del álgebra relacional, se debe hacer uso del cuantificador existencial, escribiendo expresiones del tipo: ∃t ∈ r(P(t)) lo que se lle como “existe una tupla t en la relación r tal que el predicado P(t) es verdadero”. Para el problema en particular de encontrar los nombres de alumnos se puede escribir de la siguiente manera: { t | ∃s ∈ alumno(s[nombre-alumno]=t[nombre-alumno] ) } pues se están obteniendo las tuplas t, que como puede observarse en la expresión sólo se hace referencia al atributo nombre-alumno. Es decir, se están obteniendo todas las tuplas t[nombre-alumno] que cumplan con: ∃s ∈ alumno(s[nombre-alumno]=t[nombre-alumno] Para realizar una operación análoga a la selección, por ejemplo obtener las tuplas en que el año de ingreso sea 97, se puede escribir de la siguiente manera: { t | ∃s ∈ alumno(s[nombre-alumno]=t[nombre-alumno] ^ s[año-ingreso]=”97”)} es decir, el conjunto de tuplas t[nombre-alumno] tal que año-ingreso en la relación alumno es 97 en aquellas tuplas en donde t[nombre-alumno]= nombre-alumno. El esquema de la relación anterior es (nombre-alumno), pues se está haciendo referencia únicamente al atributo de t t [nombre-alumno]. También podremos escribir una expresión que involucre a dos predicados, cada uno haciendo referencia a relaciones diferentes, por ejemplo, “encontrar los alumnos de la carrera de Biología Bases de Datos. Miguel Murguía. FAR. 153 Encontrar los números de cuenta de los alumnos que hayan cursado o hecho examen de la materia con clave 02002. { t | ∃s ∈ historia(s[numero-cuenta]=t[numero-cuenta] ^ s[clave-materia]=”02002”) v ∃u ∈ examen(u[numero-cuenta]=t[numero-cuenta] ^ u[clave-materia]=”02002”)} Encontrar los números de cuenta de los alumnos que hayan cursado y hecho examen de la materia con clave 02002. { t | ∃s ∈ historia(s[numero-cuenta]=t[numero-cuenta] ^ s[clave-materia]=”02002”) ^ ∃u ∈ examen(u[numero-cuenta]=t[numero-cuenta] ^ u[clave-materia]=”02002”)} Es decir, el número de cuenta aparece en alguna tupla de la relación historia asociado a la clave de la materia 02002 y el número de cuenta aparece en alguna tupla de la relación examen asociado a la clave de la materia 02002 Encontrar los números de cuenta de los alumnos que hayan cursado pero no hecho examen de la materia con clave 02002. { t | ∃s ∈ historia(s[numero-cuenta]=t[numero-cuenta] ^ s[clave-materia]=”02002”) ^ ¬ ∃u ∈ examen(u[numero-cuenta]=t[numero-cuenta] ^ u[clave-materia]=”02002”)} Está mal: Encontrar el número de la orden de pago de exámenes que han hecho los alumnos de Biología. { t | ∀s ∈ alumno(s[carrera]=”Biología” → ∃u ∈ examen(u[numero-cuenta]=s[numero-cuenta] ^ u[clave-materia]= t[clave-materia])) } Números de cuenta de los alumnos que han cursado todas las materias de Biología: {t | ∀x ∈ materia(x[carrera=“Biología”] →∃y ∈ historia(x[clave-materia]=y[clave-materia] ^ y[número-cuenta]=t[número-cuenta]))} Bases de Datos. Miguel Murguía. FAR. 154 Nombres de los alumnos que han cursado todas las materias de Biología: {t | ∀x ∈ materia(x[carrera=“Biología”] → ∃y ∈ historia(x[clave-materia]=y[clave-materia] ^ ∃z ∈ alumno(y[número-cuenta]=z[número-cuenta]))} ^ z[nombre]=t[nombre])))} Bases de Datos. Miguel Murguía. FAR. 155 Bibliografía DATE, C. J. 1986. Introducción a los Sistemas de Bases de Datos. Addison-Wesley. México. HUGHES, J.G. 1991. Object-Oriented Databases. Prentice Hall. UK. KORTH, H., SILVERSCHATZ, A, & SUDARSHAN. 2003. Fundamentos de bases de datos. Cuarta Edición. McGraw-Hill. KROENKE, D. M. 1996. Procesamiento de Bases de Datos. Prentice Hall. México. PIATETSKY-SHAPIRO, G & W.J. FRAWLEY. 1991. Knowledge Discovery in Databases. AAAI Press. 525 p. RAMAKRISHNAN, R. & J. GEHRKE. 2003 Database Management Systems. Tercera Ed. McGrawHill. TECHGUIDE.COM. 2000. A practical guide to achieving enterprise data quality. The Technology Guide Series, techquide.com. ULLMAN, J.D. 1979. Principles of Databases Systems. Computer Science Press. Washington. Bases de Datos. Miguel Murguía. FAR. 156 Páginas WWW Temarios FCA Licenciado en Informática http://server.contad.unam.mx/planes/info/basesdt.html Modelo Relacional Acordeón de Normalización: http://www.cba.neu.edu/~mwarkentin/normaliz.htm UCB DBMS Research Group ftp://s2k-ftp.cs.berkeley.edu/pub/postgres/otherdbms.html SQL Standard Home Page http://www.jcc.com/sql_stnd.html Bases de Datos. Miguel Murguía. FAR. 157 ANEXO 1. Prolog como Base de Datos A) Código del Programa esquema(alumno,'numero-cuenta','nombre-alumno','a¤o-ingreso','carrera'). esquema(materia,'clave-materia','nombre-materia','nivel','creditos'). esquema(examen,'numero-cuenta','clave-materia','orden-de-pago','fechaexamen'). esquema(historia,'numero-cuenta','clave-materia','semestrecurso','calificacion'). alumno(950001,'Oscar Mart¡nez',95,biologia). alumno(950002,'Mario S nchez',95,biologia). alumno(950003,'Ma.Elenea Ca¤edo',95,matematicas). alumno(950004,'Camen D¡az',95,biologia). alumno(950005,'Jorge Soto',95,fisica). alumno(970001,'Emilio Vera',97,biologia). alumno(970002,'Isabel Valderrama',97,matematicas). alumno(970003,'Miguel Romero',97,biologia). alumno(970004,'Jos‚ Malo',97,matematicas). alumno(970005,'Salvador Pascual',97,fisica). materia(01002,algebra,2,7). materia(01003,calculo,1,10). materia(02001,estadistica,1,5). materia(02002,botancia,3,8). materia(02003,bioquimica,2,12). materia(03001,fisica_relativista,4,10). materia(03002,particulas_elementales,3,9). examen(950001,02002,3567,02-jun-97). examen(970002,01002,3676,06-may-97). examen(950005,03001,3678,02-abr-97). examen(970005,03002,3789,06-mar-97). historia(950001,02001,96,8.2). historia(950002,02001,96,9). historia(950002,02003,96,7). historia(950004,02002,96,9). historia(950004,02003,95,10). historia(970003,02002,95,8). historia(970003,02003,96,9). % Seleccion: Carrera=biologia q0:alumno(Cuenta,Nombre,Ingreso,biologia), print(Cuenta), print(-), print(Nombre), print(-), print(Ingreso),print(-),nl, fail. % Seleccion: Materias con m s de 8 creditos q1:materia(Clv,Nombre,Nivel,Creditos), Creditos > 8, print(Clv),print(-), print(Nombre),print(-), print(Nivel),print(-), print(Creditos),print(-),nl, fail. Bases de Datos. Miguel Murguía. FAR. 158 % Proyeccion: Numero de cuenta y Nombres q2:alumno(Cuenta,Nombre,_,_), print(Cuenta),print(-), print(Nombre),nl, fail. %Producto cartesiano alumno x materia q3:alumno(Cuenta,Nombre,Ingreso,Carrera), materia(Clv,Materia,Nivel,Creditos), print(Cuenta),print(-), print(Nombre),print(-), print(Ingreso),print(-), print(Carrera),print(-), print(Clv),print(-), print(Materia),print(-), print(Nivel),print(-), print(Creditos),print(-),nl, fail. % Interseccion: Numero de cuenta de alumnos que han hecho examen y cursado % la misma materia q4:examen(Cuenta,_,_,_), historia(Cuenta,_,_,_), print(Cuenta),nl, fail. % Producto natural: Alumnos que han hecho examen q5:examen(Cuenta,_,_,_), alumno(Cuenta,Nombre,_,_), print(Nombre),nl, fail. % Diferencia: Alumnos que han hecho examen sin haber cursado la materia q6:examen(Cuenta,_,_,_), not(historia(Cuenta,_,_,_)), print(Cuenta),nl, fail. % Ejemplo: Nombres de alumnos y materias que han acrediatdo con mas de 8 q7:materia(Clv,Materia,_,_), alumno(Cuenta,Alumno,_,_), historia(Cuenta,Clv,_,Calif), Calif>8, print(Alumno),print(-), print(Materia),nl, fail. % Ejemplo OR: Nombre de los alumnos que han cursado o hecho examen de la %materia con clave 02002 q8:(historia(Cuenta,02002,_,_); examen(Cuenta,02002,_,_)), alumno(Cuenta,Nombre); print(Nombre),nl, fail. Bases de Datos. Miguel Murguía. FAR. 159 B) Resultado de Querys ?- consult('escuela.pro'). ?- q1. 'Q0: Seleccion: Carrera=biologia' 950001-'Oscar Martínez'-95950002-'Mario Sánchez'-95950004-'Camen Díaz'-95970001-'Emilio Vera'-97970003-'Miguel Romero'-97?- q1. 'Q1: Seleccion: Materias con más de 8 creditos' 1003-calculo-1-102003-bioquimica-2-123001-fisica_relativista-4-103002-particulas_elementales-3-9?- q2. 'Q2: Proyeccion: Numero de cuenta y Nombres' 950001-'Oscar Martínez' 950002-'Mario Sánchez' 950003-'Ma.Elenea Cañedo' 950004-'Camen Díaz' 950005-'Jorge Soto' 970001-'Emilio Vera' 970002-'Isabel Valderrama' 970003-'Miguel Romero' 970004-'José Malo' 970005-'Salvador Pascual' ?- q3. 'Q3: Producto cartesiano alumno x materia' 950001-'Oscar Martínez'-95-biologia-1002-algebra-2-7950001-'Oscar Martínez'-95-biologia-1003-calculo-1-10950001-'Oscar Martínez'-95-biologia-2001-estadistica-1-5950001-'Oscar Martínez'-95-biologia-2002-botanica-3-8950001-'Oscar Martínez'-95-biologia-2003-bioquimica-2-12950001-'Oscar Martínez'-95-biologia-3001-fisica_relativista-4-10950001-'Oscar Martínez'-95-biologia-3002-particulas_elementales-3-9950002-'Mario Sánchez'-95-biologia-1002-algebra-2-7950002-'Mario Sánchez'-95-biologia-1003-calculo-1-10950002-'Mario Sánchez'-95-biologia-2001-estadistica-1-5950002-'Mario Sánchez'-95-biologia-2002-botanica-3-8950002-'Mario Sánchez'-95-biologia-2003-bioquimica-2-12950002-'Mario Sánchez'-95-biologia-3001-fisica_relativista-4-10950002-'Mario Sánchez'-95-biologia-3002-particulas_elementales-3-9950003-'Ma.Elenea Cañedo'-95-matematicas-1002-algebra-2-7950003-'Ma.Elenea Cañedo'-95-matematicas-1003-calculo-1-10950003-'Ma.Elenea Cañedo'-95-matematicas-2001-estadistica-1-5950003-'Ma.Elenea Cañedo'-95-matematicas-2002-botanica-3-8950003-'Ma.Elenea Cañedo'-95-matematicas-2003-bioquimica-2-12950003-'Ma.Elenea Cañedo'-95-matematicas-3001-fisica_relativista-4-10950003-'Ma.Elenea Cañedo'-95-matematicas-3002-particulas_elementales-3-9950004-'Camen Díaz'-95-biologia-1002-algebra-2-7- Bases de Datos. Miguel Murguía. FAR. 160 950004-'Camen Díaz'-95-biologia-1003-calculo-1-10950004-'Camen Díaz'-95-biologia-2001-estadistica-1-5950004-'Camen Díaz'-95-biologia-2002-botanica-3-8950004-'Camen Díaz'-95-biologia-2003-bioquimica-2-12950004-'Camen Díaz'-95-biologia-3001-fisica_relativista-4-10950004-'Camen Díaz'-95-biologia-3002-particulas_elementales-3-9950005-'Jorge Soto'-95-fisica-1002-algebra-2-7950005-'Jorge Soto'-95-fisica-1003-calculo-1-10950005-'Jorge Soto'-95-fisica-2001-estadistica-1-5950005-'Jorge Soto'-95-fisica-2002-botanica-3-8950005-'Jorge Soto'-95-fisica-2003-bioquimica-2-12950005-'Jorge Soto'-95-fisica-3001-fisica_relativista-4-10950005-'Jorge Soto'-95-fisica-3002-particulas_elementales-3-9970001-'Emilio Vera'-97-biologia-1002-algebra-2-7970001-'Emilio Vera'-97-biologia-1003-calculo-1-10970001-'Emilio Vera'-97-biologia-2001-estadistica-1-5970001-'Emilio Vera'-97-biologia-2002-botanica-3-8970001-'Emilio Vera'-97-biologia-2003-bioquimica-2-12970001-'Emilio Vera'-97-biologia-3001-fisica_relativista-4-10970001-'Emilio Vera'-97-biologia-3002-particulas_elementales-3-9970002-'Isabel Valderrama'-97-matematicas-1002-algebra-2-7970002-'Isabel Valderrama'-97-matematicas-1003-calculo-1-10970002-'Isabel Valderrama'-97-matematicas-2001-estadistica-1-5970002-'Isabel Valderrama'-97-matematicas-2002-botanica-3-8970002-'Isabel Valderrama'-97-matematicas-2003-bioquimica-2-12970002-'Isabel Valderrama'-97-matematicas-3001-fisica_relativista-4-10970002-'Isabel Valderrama'-97-matematicas-3002-particulas_elementales-39970003-'Miguel Romero'-97-biologia-1002-algebra-2-7970003-'Miguel Romero'-97-biologia-1003-calculo-1-10970003-'Miguel Romero'-97-biologia-2001-estadistica-1-5970003-'Miguel Romero'-97-biologia-2002-botanica-3-8970003-'Miguel Romero'-97-biologia-2003-bioquimica-2-12970003-'Miguel Romero'-97-biologia-3001-fisica_relativista-4-10970003-'Miguel Romero'-97-biologia-3002-particulas_elementales-3-9970004-'José Malo'-97-matematicas-1002-algebra-2-7970004-'José Malo'-97-matematicas-1003-calculo-1-10970004-'José Malo'-97-matematicas-2001-estadistica-1-5970004-'José Malo'-97-matematicas-2002-botanica-3-8970004-'José Malo'-97-matematicas-2003-bioquimica-2-12970004-'José Malo'-97-matematicas-3001-fisica_relativista-4-10970004-'José Malo'-97-matematicas-3002-particulas_elementales-3-9970005-'Salvador Pascual'-97-fisica-1002-algebra-2-7970005-'Salvador Pascual'-97-fisica-1003-calculo-1-10970005-'Salvador Pascual'-97-fisica-2001-estadistica-1-5970005-'Salvador Pascual'-97-fisica-2002-botanica-3-8970005-'Salvador Pascual'-97-fisica-2003-bioquimica-2-12970005-'Salvador Pascual'-97-fisica-3001-fisica_relativista-4-10970005-'Salvador Pascual'-97-fisica-3002-particulas_elementales-3-9- Bases de Datos. Miguel Murguía. FAR. 161 ?- q4. 'Q4: Interseccion: Numero de cuenta de alumnos que han hecho examen ' ' y cursado % la misma materia' 950001 ?- q5. 'Q5: Producto natural: Alumnos que han hecho examen' 'Oscar Martínez' 'Isabel Valderrama' 'Jorge Soto' 'Salvador Pascual' ?- q6. 'Q6: Diferencia: Alumnos que han hecho examen sin haber cursado ' ' la materia' 970002 950005 970005 ?- q7. 'Q7: Ejemplo: Nombres de alumnos y materias ' ' que han acrediatdo con mas de 8' 'Oscar Martínez'-estadistica 'Mario Sánchez'-estadistica 'Camen Díaz'-botanica 'Camen Díaz'-bioquimica 'Miguel Romero'-bioquimica ?- q8. 'Q8: Ejemplo OR: Nombre de los alumnos que han cursado ' ' o hecho examen de la materia con clave 02002' 'Camen Díaz' 'Miguel Romero' 'Oscar Martínez' ?- Bases de Datos. Miguel Murguía. FAR. 162