“Recupero de Información a través de operaciones con conjuntos” Posgrado: Metodología de la Investigación Profesora: Viviana Yaccuzzi Polisena Alumna: María Wanda Sabadini Universidad Nacional del Nordeste Facultad de Ingeniería Recupero de Información a través de operaciones con conjuntos Indice Introducción Desarrollo Información Bases de datos relacionales Operaciones del Algebra Relacional Conclusión Bibliografía Introducción Cotidianamente interactuamos con bases de datos. No sólo al analizar, diseñar o programar sistemas sino también al extraer dinero del banco, realizar una compra en un negocio o en el supermercado o, por ejemplo, al realizar búsquedas en Internet. Las bases de datos pueden llegar a ser grandes repositorios (ver 1 del Glosario) de datos, pero el problema está en como transformar esos datos con los que contamos, para que resulten de utilidad al momento de tomar decisiones. Es decir, que esos datos puedan transformarse en información que será un elemento de gran utilidad para quien las reciba. Para la construcción y operatoria de las bases de datos, tanto en los libros especializados como en las Facultades se utilizan sentencias de un lenguaje de consultas. Pero de ¿donde provienen esas sentencias? ¿Podemos abstraernos y relacionar los conceptos de bases de datos con los conjuntos que hemos dado en Matemáticas? ¿Podemos previo al uso de las sentencias de los lenguajes de consultas resolverlas mediante conjuntos? Recuperar información, y no sólo datos, es un tema candente al momento de operar con un Sistema de Información. Es por ello, que el presente trabajo estará enfocado en explicar el recupero de información existente en una base de datos relacional combinando este concepto con las operaciones de conjuntos y en responder las preguntas antes citadas. Desarrollo Una base de datos relacional consiste en una colección de relaciones, donde cada relación tiene un único nombre y estructura. El lenguaje de consultas permitirá recuperar sus datos a través de sentencias. La estructura básica de una expresión del lenguaje consiste en tres cláusulas: select, from y where. María Wanda Sabadini Página: 2 Recupero de Información a través de operaciones con conjuntos La cláusula select corresponde a la operación proyección del algebra relacional. Es usada para listar los atributos deseados en el resultado de una consulta. La clásula from corresponde a la operación del producto cartesiano del álgebra relacional. Lista las relaciones que se pueden evaluar a través de la expresión. La cláusula where corresponde a un predicado que cumplirá la función de condición. Una consulta típica tiene la siguiente forma: select A1, A2, . . .,An from r1, r2, . . . , rm where P Pero para quien no está muy familiarizado con este lenguaje o incluso para explicar a quienes se inician en el mismo, como por ejemplo, alumnos de Escuelas Secundarias Técnicas con orientación informática, sería útil explicárselos desde una visión que no sea sólo de informática, es por ello que me he planteado los siguientes interrogantes que serán las HIPOTESIS del presente trabajo. ¿De donde provienen las sentencias de los lenguajes de consulta de bases de datos? ¿Se podría abstraer las sentencias a las operaciones básicas de conjuntos? ¿Cómo se relacionan con el álgebra relacional? Estos interrogantes serán respondidos a través de una investigación bibliográfica. Los temas a tratar serán: Teoría de conjuntos Información Bases de datos relacionales Operaciones para consultas a una base de datos. María Wanda Sabadini Página: 3 Recupero de Información a través de operaciones con conjuntos Teoría de Conjuntos Un conjunto puede ser finito o infinito. Conjuntos finitos son aquellos que constan de elementos, que al contarlos el proceso puede acabar, por el contrario constituyen conjuntos infinitos. Daremos algunas definiciones: Igualdad de conjuntos Un conjunto A es igual al conjunto B, si ambos tienen los mismos elementos, es decir, si cada elemento que pertenece a A, también pertenece al conjunto B. Y cada elemento que pertenece al conjunto B, también pertenece al conjunto A. Ejemplos de igualdad de conjuntos: A={1,2,3,4} B={3,2,1,4}. Son iguales aunque los elementos tengan distinto orden C={5,6,5,7} D= {5,7,6,7}. Son iguales aunque tengan distintos elementos repetidos, pero cada elemento de A pertenece a B y cada elemento de B, pertenece a A. Conjunto vacío Es un conjunto que carece de elementos. Subconjuntos Esto se da cuando todos los elementos de un conjunto A pertenecen al conjunto B. es decir, cuando el conjunto A está incluido en B. Conjuntos disyuntos Se da cuando dos conjuntos A y B no tienen elementos comunes, es decir, ningún elemento de A está en B y si ningún elemento de B está en A. Operaciones fundamentales con conjuntos Las operaciones fundamentales con conjuntos son: unión, intersección y diferencia de conjuntos. Unión La unión de dos conjuntos A y B, es el conjunto de todos los elementos que pertenecen a A o a B o a ambos. En el diagrama de Venn de la figura 1 podemos ver el resultado de la operación A B. María Wanda Sabadini Página: 4 Recupero de Información a través de operaciones con conjuntos Figura 1 De la unión surgen las siguientes observaciones A) es el mismo conjunto que B) A y B son subconjuntos de . Es decir . Es decir y Intersección de conjuntos La intersección de conjuntos es otro conjunto que contiene los elementos que son comunes a ambos conjuntos. En el diagrama de Venn en la figura 2 Podemos observarlo Figura 2 De la intersección de conjuntos surgen las siguientes observaciones: A) B) Cada uno de los conjuntos A y B contienen al subconjunto C) Si , es decir no tienen elementos comunes entonces Diferencia La diferencia de los conjuntos A y B (A – B), es el conjunto de elementos que pertenecen a A, pero no a B. En el diagrama de Venn de la figura 3 Figura 3 María Wanda Sabadini Página: 5 Recupero de Información a través de operaciones con conjuntos de la diferencia de conjuntos surgen las siguientes observaciones: A) A – B es subconjunto de A, es decir B) Los conjuntos (A – B) y (B – A) son disjuntos. Es decir, su intersección es vacía. María Wanda Sabadini Página: 6 Recupero de Información a través de operaciones con conjuntos Información Lo primero que tenemos que diferenciar son los siguientes conceptos: dato e información. Dato es un hecho que puede registrarse, e información son datos procesados para aportar un conocimiento útil. Y un Sistema de Información? La palabra sistema se utiliza en muchos ámbitos distintos: hablamos de sistemas eléctricos, sistemas de seguridad, sistemas monetarios e inclusive del sistema solar. La Real Academia Española nos da la siguiente definición: ―un conjunto de cosas que ordenadamente relacionadas entre sí contribuyen a un determinado objetivo‖. Y a partir de esta definición podemos distinguir sus elementos principales: los componentes del sistema las relaciones entre estos componentes, que van a determinar la estructura del sistema el objetivo del sistema Cuanto más grande y complejo es un sistema, más importante es la comunicación de información entre sus componentes, para que puedan coordinarse a fin de cumplir con sus objetivos. Disponer de la información adecuada permite tomar las decisiones apropiadas para cada situación. Y aquí viene el gran dilema, que es información? Es lo mismo que los datos? No. Como lo expresado anteriormente, debemos diferenciarlos. Los datos son los registros de hechos, acontecimientos, transacciones, mientras que información son los datos procesados de tal forma que son útiles o significativos para quien va a recibir esa información. Es decir, esa información va a promover una acción, va a permitir tomar una decisión mejor, siendo la decisión el paso previo a una acción. Y esta información, que va a permitir que quien la recibe tome la mejor decisión tiene ciertas propiedades que la caracterizan, y que son las siguientes: es relevante para el propósito de la decisión o el problema considerado. Si queremos decidir si vendemos o no acciones de una empresa, es irrelevante la información de la clasificación de la liga italiana de fútbol, por muy exacta y completa que sea. es lo suficientemente precisa, es decir, exacta o con niveles de precisión mayor con respecto a la realidad, para que podamos confiar en ella. es lo suficientemente completa para el problema. En la realidad, es raro poder contar con toda la información relevante para la decisión, pero lo importante es que la información sobre los elementos clave sea completa. se comunica a la persona adecuada para la decisión. se comunica a tiempo para que pueda ser útil llega al nivel de detalle más adecuado es comprensible para el receptor. La información que llega escrita en una terminología desconocida es poco útil. María Wanda Sabadini Página: 7 Recupero de Información a través de operaciones con conjuntos Una vez que tenemos los datos almacenados en una base de datos, es necesario poder procesarlos y recuperarlos para poder obtener información y que esta información contenga las características antes mencionadas. ¿Pero como recuperamos información de una base de datos? Ya sea a través de un lenguaje de programación de alto nivel o bien del administrador de la base de datos, realizaremos consultas para poder recuperarla. Pero antes de entrar más en detalle pasaremos al siguiente tema. María Wanda Sabadini Página: 8 Recupero de Información a través de operaciones con conjuntos Bases de datos Las aplicaciones informáticas de los años sesenta acostumbraban a darse totalmente por lotes (batch) y estaban pensadas para una tarea muy específica relacionada con muy pocas entidades tipo. Cada aplicación (una o varias cadenas de programas) utilizaba ficheros de movimientos para actualizar (creando una copia nueva) y/o para consultar uno o dos ficheros maestros o, excepcionalmente, más de dos. Cada programa trataba como máximo un fichero maestro, que solía estar sobre cinta magnética y, en consecuencia, se trabajaba con acceso secuencial. Cada vez que se le quería añadir una aplicación que requería el uso de algunos de los datos que ya existían y de otros nuevos, se diseñaba un fichero nuevo con todos los datos necesarios (algo que provocaba redundancia) para evitar que los programas tuviesen que leer muchos ficheros. A medida que se fueron introduciendo las líneas de comunicación, los terminales y los discos, se fueron escribiendo programas que permitían a varios usuarios consultar los mismos ficheros on-line y de forma simultánea. Más adelante fue surgiendo la necesidad de hacer las actualizaciones también on-line. A medida que se integraban las aplicaciones, se tuvieron que interrelacionar sus ficheros y fue necesario eliminar la redundancia. El nuevo conjunto de ficheros se debía diseñar de modo que estuviesen interrelacionados; al mismo tiempo, las informaciones redundantes (como por ejemplo, el nombre y la dirección de los clientes o el nombre y el precio de los productos), que figuraban en los ficheros de más de una de las aplicaciones, debían estar ahora en un solo lugar. El acceso on-line y la utilización eficiente de las interrelaciones exigían estructuras físicas que diesen un acceso rápido, como por ejemplo los índices, las multilistas, las técnicas de hashing, etc. Estos conjuntos de ficheros interrelacionados, con estructuras complejas y compartidos por varios procesos de forma simultánea (unos on-line y otros por lotes), recibieron al principio el nombre de Data Banks, y después, a inicios de los años setenta, el de Data Bases. Aquí los denominamos bases de datos (BD). El software de gestión de ficheros era demasiado elemental para dar satisfacción a todas estas necesidades. Por ejemplo, el tratamiento de las interrelaciones no estaba previsto, no era posible que varios usuarios actualizaran datos simultáneamente, etc. La utilización de estos conjuntos de ficheros por parte de los programas de aplicación era excesivamente compleja, de modo que, especialmente durante la segunda mitad de los años setenta, fue saliendo al mercado software más sofisticado: los Data Base Management Systems, que aquí denominamos Sistemas de Gestión de Bases de Datos (SGBD). En otras palabras, una base de datos es un conjunto estructurado de datos que representa entidades y sus interrelaciones. La representación será única e integrada, a pesar de que debe permitir utilizaciones varias y simultáneas. Los ficheros tradicionales y las BD María Wanda Sabadini Página: 9 Recupero de Información a través de operaciones con conjuntos Aunque de forma muy simplificada, podríamos enumerar las principales diferencias entre los ficheros tradicionales y las BD tal y como se indica a continuación: 1) Entidades tipos: • Ficheros: tienen registros de una sola entidad tipo. • Bases de Datos: tienen datos de varias entidades tipo. 2) Interrelaciones: • Ficheros: el sistema no interrelaciona ficheros. • Bases de Datos: el sistema tiene previstas herramientas para interrelacionar entidades. 3) Redundancia: • Ficheros: se crean ficheros a la medida de cada aplicación, con todos los datos necesarios aunque algunos sean redundantes respecto de otros ficheros. • Bases de Datos : todas las aplicaciones trabajan con la misma BD y la integración de los datos es básica, de modo que se evita la redundancia. 4) Usuarios • Ficheros: sirven para un solo usuario o una sola aplicación. Dan una sola visión del mundo real. • Bases de Datos : es compartida por muchos usuarios de distintos tipos. Ofrece varias visiones del mundo real. Con todo lo que hemos dicho hasta ahora, podríamos definir el término Bases de Datos; una base de datos de un Sistema de Información es la representación integrada de los conjuntos de entidades instancia correspondientes a las diferentes entidades tipo del Sistema de Información y de sus interrelaciones. Las bases de datos se han convertido en una parte esencial en nuestros tiempos. Muchas de las actividades que realizamos tienen algún tipo de interacción con ellas, por ejemplo, si extraemos dinero de los cajeros, si vamos a comprar algún artículo en un supermercado, o si accedemos a un buscador de Internet. Resumiendo, ¿que es una base de datos? Es un conjunto de datos relacionados. Y ¿los datos? Son hechos que pueden registrarse, por ejemplo, la fecha de nacimiento de una persona, el saldo disponible de una cuenta de banco, los datos personales del cliente de una farmacia, o por ejemplo, el estado de cuenta del contribuyente de la Municipalidad de Resistencia. Una base de datos tiene las siguientes propiedades implícitas: Representa algún aspecto del mundo real Es una colección coherente de datos que tienen algún significado Se diseña y construye para un propósito en especial. Un Sistema Administrador de Bases de Datos (o su sigla en inglés DBMS, de Data Bases Management System) es una colección de programas que permite a quienes lo usan crear y María Wanda Sabadini Página: 10 Recupero de Información a través de operaciones con conjuntos mantener una base de datos. Es un software que permite la definición, construcción y manipulación de los datos para ser usados por las aplicaciones informáticas. En este trabajo trataremos las bases de datos relacionales. Este modelo usa los conceptos de relaciones matemáticas. Representa la base de datos como un conjunto de relaciones, donde cada relación es una tabla con un conjunto de valores y donde cada fila de la tabla representa una colección de valores de datos relacionados. Por ejemplo, la tabla a la que llamaremos EMPLEADOS (figura 3), en donde registraremos los datos de los empleados de una empresa, cada fila de la tabla representará una colección de datos relacionados referentes a un empleado en particular. Figura 3 El nombre de la tabla y los nombres de las columnas se utilizan para ayudar a interpretar el significado de los valores en cada fila. En la figura 3 mostramos los datos de los empleados de la empresa, es por eso conveniente llamar a la tabla EMPLEADOS y en cada columna colocamos los nombres de los datos que queremos guardar. Por convención, utilizaremos las mayúsculas para indicar el nombre de las tablas. Todos los valores de una columna son del mismo tipo de datos. El tipo de datos describe el tipo de valores que pueden aparecer en la columna (llamdo también el dominio), por ejemplo, en la columna DNI aparecerán números, en la columna Nombre aparecerán cadenas de caracteres y así en cada una de ellas. El dominio es un conjunto de valores atómicos. Por atómico queremos expresar que cada valor es indivisible. El dominio para la columna DNI podría ser el conjunto de numéros de documentos, de hasta 8 dígitos. El tipo de datos o formato se especifica también para cada dominio. En el modelo relacional, cada tabla puede expresarse por un esquema de relación. Este esquema que llamaremos R, se denota como R (A1, A2, . . ., An), donde R es el nombre de la relación y entre paréntesis se coloca la lista de atributos que componen la relación. El grado de la relación es el número de atributos que la componen. Siguiendo el ejemplo, la relación EMPLEADO, se expresaría EMPLEADO (DNI, Nombre, Apellido, Dirección, Fecha de nacimiento) y sería de grado 5. Una relación se define como un conjunto de tuplas, donde cada tupla corresponde a una fila, y para la relación EMPLEADO serían los datos de un empleado en particular. Matemáticamente, los elementos de un conjunto no tienen un orden entre ellos, y las tuplas en una relación tampoco. Sin embargo, en un archivo, los registros físicamente se almacenan en disco, por lo María Wanda Sabadini Página: 11 Recupero de Información a través de operaciones con conjuntos que existirá un orden entre los mismos. Este orden indica el primero, el segundo, el enésimo, hasta el último de los registros en el archivo. De forma similar, cuando mostramos una relación como una tabla, las filas se mostrarán en un cierto orden. Veamos la siguiente notación: Un esquema de relación R de grado n se expresa de la forma R (A1, A2, . . ., An). Una tupla en una relación r (R) se expresa de la forma t = <v1, v2, . . ., vn>, donde vi es el valor correspondiente al atributo Ai. Modelo Relacional El modelo relacional es un modelo de datos y, como tal, tiene en cuenta los tres aspectos siguientes de los datos: 1) La estructura, que debe permitir representar la información que nos interesa del mundo real. 2) La manipulación, a la que da apoyo mediante las operaciones de actualización y consulta de los datos. 3) La integridad, que es facilitada mediante el establecimiento de reglas de integridad; es decir, condiciones que los datos deben cumplir. El principal objetivo del modelo de datos relacional es facilitar que la base de datos sea percibida o vista por el usuario como una estructura lógica que consiste en un conjunto de relaciones y no como una estructura física de implementación. Esto ayuda a conseguir un alto grado de independencia de los datos. El modelo relacional proporciona una estructura de los datos que consiste en un conjunto de relaciones con objeto de representar la información que nos interesa del mundo real. La estructura de los datos del modelo relacional se basa, pues, en el concepto de relación. Un dominio D es un conjunto de valores atómicos. Por lo que respecta al modelo relacional, atómico significa indivisible; es decir, que por muy complejo o largo que sea un valor atómico, no tiene una estructuración interna para un SGBD relacional. Los dominios pueden ser de dos tipos: 1) Dominios predefinidos, que corresponde a los tipos de datos que normalmente proporcionan los lenguajes de bases de datos, como por ejemplo los enteros, las cadenas de caracteres, los reales, etc. 2) Dominios definidos por el usuario, que pueden ser más específicos. Toda definición de un dominio debe constar, como mínimo, del nombre del dominio y de la descripción de los valores que forman parte de éste. La obtención de los datos que responden a una consulta puede requerir el análisis y la extracción de datos de una o más de las relaciones que mantiene la base de datos. Según la forma como se especifican las consultas, podemos clasificar los lenguajes relacionales en dos tipos: María Wanda Sabadini Página: 12 Recupero de Información a través de operaciones con conjuntos 1) Lenguajes basados en el álgebra relacional. El álgebra relacional se inspira en la teoría de conjuntos. Si queremos especificar una consulta, es necesario seguir uno o más pasos que sirven para ir construyendo, mediante operaciones del álgebra relacional, una nueva relación que contenga los datos que responden a la consulta a partir de las relaciones almacenadas. Los lenguajes basados en el álgebra relacional son lenguajes procedimentales, ya que los pasos que forman la consulta describen un procedimiento. 2) Lenguajes basados en el cálculo relacional. El cálculo relacional tiene su fundamento teórico en el cálculo de predicados de la lógica matemática. Proporciona una notación que permite formular la definición de la relación donde están los datos que responden la consulta en términos de las relaciones almacenadas. Esta definición no describe un procedimiento; por lo tanto, se dice que los lenguajes basados en el cálculo relacional son lenguajes declarativos (no procedimentales). El lenguaje SQL, en las sentencias de consulta, combina construcciones del álgebra relacional y del cálculo relacional con un predominio de las construcciones del cálculo. Este predominio determina que SQL sea un lenguaje declarativo. El estudio del álgebra relacional presenta un interés especial, pues ayuda a entender qué servicios de consulta debe proporcionar un lenguaje relacional, facilita la comprensión de algunas de las construcciones del lenguaje SQL y también sirve de base para el tratamiento de las consultas que efectúan los SGBD (Sistemas Administradores de Bases de datos) internamente. Este último tema queda fuera del ámbito del presente curso, pero es necesario para estudios más avanzados sobre bases de datos Una vez visto los conceptos principales para las bases de datos, vamos a hablar de las operaciones básicas del álgebra relacional. María Wanda Sabadini Página: 13 Recupero de Información a través de operaciones con conjuntos Operaciones del Algebra Relacional El álgebra relacional se inspira en la teoría de conjuntos para especificar consultas en una base de datos relacional. Para especificar una consulta en álgebra relacional, es preciso definir uno o más pasos que sirven para ir construyendo, mediante operaciones de álgebra relacional, una nueva relación que contenga los datos que responden a la consulta a partir de las relaciones almacenadas. Los lenguajes basados en el álgebra relacional son procedimentales, dado que los pasos que forman la consulta describen un procedimiento. La visión que presentaremos es la de un lenguaje teórico y, por lo tanto, incluiremos sólo sus operaciones fundamentales, y no las construcciones que se podrían añadir a un lenguaje comercial para facilitar cuestiones como por ejemplo el orden de presentación del resultado, el cálculo de datos agregados, etc. Una característica destacable de todas las operaciones del álgebra relacional es que tanto los operandos como el resultado son relaciones. Esta propiedad se denomina cierre relacional. Las operaciones del álgebra relacional han sido clasificadas según distintos criterios; de todos ellos indicamos los tres siguientes: 1) Según se pueden expresar o no en términos de otras operaciones. a) Operaciones primitivas: son aquellas operaciones a partir de las cuales podemos definir el resto. Estas operaciones son la unión, la diferencia, el producto cartesiano, la selección y la proyección. b) Operaciones no primitivas: el resto de las operaciones del álgebra relacional que no son estrictamente necesarias, porque se pueden expresar en términos de las primitivas; sin embargo, las operaciones no primitivas permiten formular algunas consultas de forma más cómoda. Existen distintas versiones del álgebra relacional, según las operaciones no primitivas que se incluyen. 2) Según el número de relaciones que tienen como operandos: a) Operaciones binarias: son las que tienen dos relaciones como operandos. Son binarias todas las operaciones, excepto la selección y la proyección. b) Operaciones unarias: son las que tienen una sola relación como operando. La selección y la proyección son unarias. 3) Según se parecen o no a las operaciones de la teoría de conjuntos: a) Operaciones conjuntistas: son las que se parecen a las de la teoría de conjuntos. Se trata de la unión, la intersección, la diferencia y el producto cartesiano. b) Operaciones específicamente relacionales: son el resto de las operaciones; es decir, la selección, la proyección y la combinación. ** EJEMPLO: Supongamos que tenemos una base de datos relacional con las cuatro relaciones siguientes: 1) La relación EDIFICIOS_EMP, que contiene datos de distintos edificios de los que una empresa dispone para desarrollar sus actividades. María Wanda Sabadini Página: 14 Recupero de Información a través de operaciones con conjuntos 2) La relación DESPACHOS, que contiene datos de cada uno de los despachos que hay en los edificios anteriores. 3) La relación EMPLEADOS_ADM, que contiene los datos de los empleados de la empresa que llevan a cabo tareas administrativas. 4) La relación EMPLEADOS_PROD, que almacena los datos de los empleados de la empresa que se ocupan de tareas de producción. A continuación describimos los esquemas de las relaciones anteriores y sus extensiones en un momento determinado: Esquema y extensión de EDIFICIOS_EMP (figura 4): Figura 4 Esquema y extensión de DESPACHOS (figura 5) Figura 5 Esquema y extensión de EMPLEADOS_ADM (figura 6): Figura 6 Esquema y extensión de EMPLEADOS_PROD (figura 7): María Wanda Sabadini Página: 15 Recupero de Información a través de operaciones con conjuntos Figura 7 Se considera que los valores nulos de los atributos edificiodesp y númerodesp de las relaciones EMPLEADOS_PROD y EMPLEADOS_ADM indican que el empleado correspondiente no tiene despacho. Estas operaciones permiten a quien las usa obtener respuesta. Esta respuesta consiste en otra relación, que puede estar formada por una o más relaciones. Las operaciones del algebra relacional se dividen en dos grupos. Un grupo que incluye las operaciones basadas en la teoría de conjuntos (y esto es aplicable, porque cada relación se define como un conjunto de tuplas). Estas operciones son Unión, Intersección, Diferencia y Producto cartesiano. El otro grupo consiste en operaciones desarrolladas específicamente para las bases de datos relacionales y son: Select, Project y Join, que veremos a continuación. La operación SELECT Se utiliza para seleccionar un subconjunto de tuplas de una relación que satisfagan una condición. Podemos considerarla como el filtro que muestra sólo aquellas tuplas que cumplen la condición. Por ejemplo, para seleccionar las tuplas de EMPLEADOS que trabajan en el departamento 4, o, aquellos que tienen un salario mayor a $2.000, podríamos utilizar la operación SELECT de la siguiente forma dpto=4 (EMPLEADOS) salario>2000 (EMPLEADOS) Se denota generalmente por <condición de selección>(R) donde el símbolo (sigma) es usado como operador SELECT, y la condición es una operación booleana sobre los atributos de la relación R. María Wanda Sabadini Página: 16 Recupero de Información a través de operaciones con conjuntos Y el resultado de esta operación tiene los mismos atributos de R. Podemos colocar como condición de esta operación, cláusulas que estén conectadas por operadores booleanos, como ser AND, OR y NOT. Por ejemplo, para seleccionar los empleados que trabajen en el departamento 4 y cuyo salario sea mayor a $2.000, la operación SELECT sería como sigue (dpto=4) AND (salario>2000) (EMPLEADOS) Al evaluarse la condición, las tuplas que la cumplan serán devueltas. Las condiciones booleanas serán evaluadas de la siguiente forma: • (cond1 AND cond2) es verdadero si ambas (cond1) y (cond2) son verdaderas, caso contrario es falso. • (cond1 OR cond2) es verdadera si (cond1) o (cond2) o ambas son verdaderas, caso contrario es falsa. • (NOT cond) es verdadera cuando cond es falso. Caso contrario es falso. El operador SELECT es unario, es decir que puede aplicarse a una sola relación y el resultado de la operación devolverá una relación que tendrá el mismo grado que la relación R. El número de tuplas devuelta será igual o menor que el número de tuplas de R. También es conmutativa: <cond1>( <cond2>(R)) = <cond2>( <cond1>(R)) La operación PROJECT Si pensamos en una relación como en una tabla, la operación SELECT, selecciona algunas filas y descarta otras. La operación PROJECT, selecciona columnas de la tabla y descarta otras. Por ejemplo, para listar los nombres y apellidos de los empleados, utilizaríamos la operación PROJECT de la siguiente forma: nombre, apellido (EMPLEADO) La forma de esta operación es <lista de atributos>(R) María Wanda Sabadini Página: 17 Recupero de Información a través de operaciones con conjuntos Donde es el símbolo que se usa para representar la operación PROJECT. La operación JOIN Esta operación se utiliza para combinar tuplas de dos relaciones en una. Esta operación es muy importante para cualquier base de datos relacional porque permite procesar relaciones entre tablas. Por ejemplo, si en una relación tengo los datos de los empleados y en otra relación tengo los registros de inasistencia al trabajo, podría obtener a través de la combinación de ambas relaciones, cuales son los empleados que más faltaron, o cuales faltaron en una determinada época del año. La notación sería la siguiente R (A1, A2, . . ., An) y S(B1, B2, . . ., Bm): R<condición del join>S El resultado de JOIN es una relación con n + m atributos Q (A1, A2, . . ., An, B1, B2, . . ., Bm) en ese orden. Q va a tener una tupla para cada combinación de tuplas—una de R y la otra de S— siempre que se satisfaga la condición del join. Esta operación es diferente del producto cartesiano, y la principal diferencia consiste en que la operación JOIN sólo combina las tuplas que satisfacen la condición del JOIN, mientras que con el PRODUCTO CARTESIANO, todas las combinaciones de tuplas son incluídas en el resultado. Operaciones basadas en conjuntos Unión Se denota por R U S, siendo el resultado de esta operación una relación que incluye todas las tuplas que están en R o en S o en ambas. Las duplicadas se eliminan. Intersección Se denota por R ∩ S, siendo el resultado de esta operación todas las tuplas que están en R y en S. Diferencia Se denota por R – S: todas las tuplas que están en R pero que no están en S. Veamos un ejemplo. Tenemos las relaciones R1 que tiene los datos de estudiantes de Medicina, y la relación R2 que son instructores de natación. Gráficamente, en la figura 8 tenemos una tabla por cada relación con sus atributos. María Wanda Sabadini Página: 18 Recupero de Información a través de operaciones con conjuntos R1 (ESTUDIANTES) R2 (INSTRUCTORES Nombre Apellido Nombre Apellidos Susana Gomez Juan Spinelli Ramón Hernandez Ricardo Downie Juan Estevanez Susana Gomez Bárbara Gimenez Francisco Espinola Anita Foresta Ramón Hernandez Ernesto Gutierrez Yolanda Martinez Figura 8 Si utilizaramos la operación Unión entre R1 y R2 (figura 9 ), tendríamos : R1 U R2 Nombre Apellido Susana Gomez Ramón Hernandez Juan Estevanez Bárbara Gimenez Figura 9 Con la operación Intersección entre R1 y R2 (figura 10), tendríamos: R1 ∩ R2 Nombre Apellido Susana Gomez Ramón Fernandez Figura 10 Con la operación Diferencia (figura 11) : María Wanda Sabadini Página: 19 Recupero de Información a través de operaciones con conjuntos R2 – R1 R1 - R2 Nombre Apellido Nombre Apellidos Juan Estevanez Juan Spinelli Bárbara Gimenez Ricardo Downie Anita Foresta Francisco Espinola Ernesto Gutierrez Yolanda Martinez Figura 11 Las operaciones UNION, INTERSECCION, DIFERENCIA Y DIVISIÓN son operaciones binarias, es decir, se pueden aplicar a dos conjuntos. Cuando estas operaciones son adaptadas a las bases de datos relacionales, las dos relaciones sobre las que se quieren aplicar estas operaciones deben ser unión compatibles, es decir, tienen que tener el mismo grado (deben tener la misma cantidad de atributos y el i-ésimo atributo de la primer relación y el i-ésimo atributo de la segunda relación deben tener el mismo dominio, no necesariamente el mismo nombre). Utilizando los esquemas mencionados en ** EJEMPLO (página 13), mostraremos como podemos utilizar las operaciones de conjuntos y el álgebra relacional para resolver consultas: La unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD proporciona una nueva relación que contiene tanto a los empleados de administración como los empleados de producción; se indicaría así: EMPLEADOS_ADM U EMPLEADOS_PROD. Sólo tiene sentido aplicar la unión a relaciones que tengan tuplas similares. Por ejemplo, se puede hacer la unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD porque sus tuplas se parecen. En cambio, no se podrá hacer la unión de las relaciones EMPLEADOS_ADM y DESPACHOS porque en las tablas, las tuplas respectivas son de tipo diferente. Más concretamente, para poder aplicar la unión a dos relaciones, es preciso que las dos relaciones sean compatibles. Decimos que dos relaciones T y S son relaciones compatibles si: Tienen el mismo grado. • Se puede establecer una biyección entre los atributos de T y los atributos de S que hace corresponder a cada atributo Ai de T un atributo Aj de S, de modo que se cumple que dominio(Ai) = dominio(Aj). María Wanda Sabadini Página: 20 Recupero de Información a través de operaciones con conjuntos Ejemplo de relaciones compatibles Las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD tienen grado 5. Podemos establecer la siguiente biyección entre sus atributos: • A DNI de EMPLEADOS_ADM le corresponde DNIemp de EMPLEADOS_PROD. • A nombre de EMPLEADOS_ADM le corresponde nombreemp de EMPLEADOS_PROD. • A apellido de EMPLEADOS_ADM le corresponde apellidoemp de EMPLEADOS_PROD. • A edificiodesp de EMPLEADOS_ADM le corresponde edificiodesp de EMPLEADOS_PROD. • A númerodesp de EMPLEADOS_ADM le corresponde edificiodesp de EMPLEADOS_PROD. Además, supondremos que los dominios de sus atributos se han declarado de forma que se cumple que el dominio de cada atributo de EMPLEADOS_ADM sea el mismo que el dominio de su atributo correspondiente en EMPLEADOS_PROD. Por todos estos factores, podemos llegar a la conclusión de que EMPLEADOS_ADM y EMPLEADOS_PROD son relaciones compatibles. A continuación, pasaremos a definir los atributos y la extensión de la relación resultante de una unión. Los atributos del esquema de la relación resultante de T U S coinciden con los atributos del esquema de la relación T. La extensión de la relación resultante de T U S es el conjunto de tuplas que pertenecen a la xtensión de T, a la extensión de S o a la extensión de ambas relaciones. Ejemplo de unión Si queremos obtener una relación R que tenga a todos los empleados de la empresa del ejemplo anterior, llevaremos a cabo la unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la forma siguiente: R := EMPLEADOS_ADM U EMPLEADOS_PROD. Entonces la relación R resultante será la reflejada en la tabla siguiente (figura 12) María Wanda Sabadini Página: 21 Recupero de Información a través de operaciones con conjuntos Figura 12 El hecho de que los atributos de la relación resultante coincidan con los atributos de la relación que figura en primer lugar en la unión es una convención; teóricamente, también habría sido posible convenir que coincidiesen con los de la relación que figura en segundo lugar. La intersección de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD obtiene una nueva relación que incluye a los empleados que son al mismo tiempo de administración y de producción: se indicaría como EMPLEADOS_ADM EMPLEADOS_PROD. La intersección, como la unión, sólo se puede aplicar a relaciones que tengan tuplas similares. Para poder hacer la intersección de dos relaciones, es preciso, pues, que las relaciones sean compatibles. A continuación definiremos los atributos y la extensión de la relación resultante de una intersección. Los atributos del esquema de la relación resultante de T S coinciden con los atributos del esquema de la relación T. La extensión de la relación resultante de T S es el conjunto de tuplas que pertenecen a la extensión de ambas relaciones. Ejemplo de intersección Si queremos obtener una relación R que incluya a todos los empleados de la empresa del ejemplo que trabajan tanto en administración como en producción, realizaremos la intersección de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la forma siguiente: R : = EMPLEADOS_ADM EMPLEADOS_PROD (figura 13). Figura 13 Si queremos obtener una relación R con todos los empleados de la empresa del ejemplo que trabajan en administración, pero no en producción, haremos la diferencia de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la forma siguiente: María Wanda Sabadini Página: 22 Recupero de Información a través de operaciones con conjuntos R := EMPLEADOS_ADM – EMPLEADOS_PROD Entonces la relación R resultante será (figura 14): Figura 14 El producto cartesiano es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que resultan de concatenar tuplas de la primera relación con tuplas de la segunda. El producto cartesiano es una operación binaria. Siendo T y S dos relaciones que cumplen que sus esquemas no tienen ningún nombre de atributo común, el producto cartesiano de T y S se indica como T * S. Si calculamos el producto cartesiano de EDIFICIOS_EMP y DESPACHOS, obtendremos una nueva relación que contiene todas las concatenaciones posibles de tuplas de EDIFICIOS_EMP con tuplas de DESPACHOS. Si se quiere calcular el producto cartesiano de dos relaciones que tienen algún nombre de atributo común, sólo hace falta redenominar previamente los atributos adecuados de una de las dos relaciones. El producto cartesiano de las relaciones DESPACHOS y EDIFICIOS_EMP del ejemplo se puede hacer como se indica (es necesario redenominar atributos previamente): EDIFICIOS(nombreedificio, supmediadesp) := EDICIOS_EMP(edificio, supmediadesp). R := EDIFICIOS * DESPACHOS. Entonces, la relación R resultante será (figura 15): María Wanda Sabadini Página: 23 Recupero de Información a través de operaciones con conjuntos Figura 15 Para obtener el nombre y el apellido de los empleados, tanto de administración como de producción, es necesario hacer una unión de EMPLEADOS_ADM y EMPLEADOS_PROD, y después hacer una proyección sobre los atributos nombre y apellido. La operación se puede expresar de las formas siguientes: a) Se puede utilizar una sola expresión: R := (EMPLEADOS_ADM U EMPLEADOS_PROD) [nombre, apellido]. b) O bien podemos expresarlo en dos pasos: • EMPS := EMPLEADOS_ADM U • R := EMPLEADOS_PROD; EMPS(nombre, apellido) En los casos en que una consulta requiere efectuar muchas operaciones, resulta más sencilla la segunda alternativa, porque evita expresiones complejas Otros ejemplos de consultas formuladas con secuencias de operaciones Veamos algunos ejemplos de consultas en la base de datos formuladas con secuencias de operaciones del álgebra relacional. 1) Para obtener el nombre del edificio y el número de los despachos situados en edificios en los que la superficie media de estos despachos es mayor que 12, podemos utilizar la siguiente secuencia de operaciones: • A := EDIFICIOS_EMP(supmediadesp > 12); • B := DESPACHOS * A; • R := B(edificio, número) 2) Supongamos ahora que se desea obtener el nombre y el apellido de todos los empleados (tanto de administración como de producción) que están asignados al despacho 120 del edificio Marina. En este caso, podemos utilizar la siguiente secuencia: • A := EMPLEADOS_ADM U EMPLEADOS_PROD; • B := A(edificiodesp = Marina y númerodesp = 120); • R := B(nombre, apellido). 3) Si queremos consultar el nombre del edificio y el número de los despachos que ningún empleado de administración tiene asignado, podemos utilizar esta secuencia: • A := DESPACHOS (dificio, número); María Wanda Sabadini Página: 24 Recupero de Información a través de operaciones con conjuntos • B := EMPLEADOS_ADM(edificiodesp, númerodesp); • R := A – B. María Wanda Sabadini Página: 25 Recupero de Información a través de operaciones con conjuntos Conclusión El álgebra relacional proporciona un conjunto de operaciones para manipular relaciones. Estas operaciones se pueden clasificar de la forma siguiente: a) Operaciones conjuntistas: unión, intersección, diferencia y producto cartesiano. b) Operaciones específicamente relacionales: selección, proyección y combinación. Y estas operaciones del álgebra relacional pueden formar secuencias que permiten resolver consultas complejas en una base de datos. Partiendo de conceptos básicos en matemáticas como ser la teoría de conjuntos podemos resolver problemas tan complejos como el recupero de información de una base de datos, con sólo abstraer e imaginar cada una de nuestras tablas como conjuntos y aplicarles operaciones de álgebra relacional, siendo mucho más sencillo la interpretación de las sentencias de los lenguajes de consulta a bases de datos. Es una forma muy sencilla de explicar como obtener información de una base de datos, relacionando conceptos y disciplinas. El recupero de información de una base de datos no es sólo un problema del campo informático, sino, porque haciendo uso del modelo de la transdiciplinaridad los grandes problemas son transversales, transnacionales, múltiples, multidimensionales, transdisciplinarios. Esta forma de tratar el recupero de la información pretende mostrar que podemos reformular nuestra forma de conocimiento, evolucionando, para poder resolver los problemas no sólo desde el punto de vista de una disciplina, sino abriendo todas las disciplinas para ver que tienen en común, entrelazándolas y generando nuevas formas de organizar y producir conocimiento. María Wanda Sabadini Página: 26 Recupero de Información a través de operaciones con conjuntos Bibliografía Análisis y diseño detallado de Aplicaciones informáticas de Gestión – Mario G. Piattini. José A. Calvo-Manzano. Joaquín Cervera. Luis Fernández.Enero de 2000. Publicado por Alfaomega Grupo Editor. Database System Concepts, Fourth Edition. Silberschatz−Korth−Sudarshan. Foxit Software Company – 2004. Fundamentals of Database Systems - ElMasri Navathe –. Copyright 2001 Versaware Inc. and its licensors Segunda Clase: Qués es investigar? Profesora Viviana Polisena. Posgrado en Metodología de la Investigación Científica. Universidad Nacional del Nordeste. Facultad de Ingeniería. Teoría de conjuntos y temas afines – Seymour Lipschutz, Ph. D – McGraw Hill María Wanda Sabadini Página: 27