ISI0514 Fundamentos de Bases de Datos Pgina 1 de 120
BASES DE DATOS I
ISI0514
CUADERNO DOCENTE
Contenido: Fundamentos de Bases de Datos
Profesor: Oswaldo MERCHAN
Marzo/2004
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 2 de 120
INTRODUCCIN
El presente documento recopila informacin de las obras bibliogrficas especializadas en los fundamentos de Bases de Datos, incluye adems ejemplos prcticos que se encuentran desarrollados para que puedan ser revisados y analizados por el alumno. Los resmenes y extractos obtenidos, han sido organizados para que el documento sirva como gua para los estudiantes que cursan la materia de Bases de Datos
El captulo 1 presenta en forma general las caractersticas de un sistema de Bases de Datos, sus componentes y ventajas en comparacin con los sistemas tradicionales orientados a procesos.
En el captulo 2 se describe el modelo entidad - relacin que se emplea para interpretar, especificar y documentar los requerimientos para sistemas de procesamiento de Bases de Datos, siendo muy til este modelo para el diseo que parte de lo general a lo particular.
El captulo 3 presenta lo principios del Modelo Relacional y los aspectos de los fundamentos matemticos (lgebra Relacional)
El objetivo del captulo 4 es el de presentar de manera prctica los conceptos del lenguaje SQL. Se describe el manejo de datos que se realiza mediante las instrucciones de consulta, insercin, actualizacin y eliminacin; comprende tambin la teora de la integridad de datos. Al final del captulo se incluye una serie de ejemplos de consultas a las tablas generadas en el captulos 2.
En el captulo 5 se expone un tema que complementa al modelo relacional, la teora de Normalizacin, metodologa que es empleada para validar la adecuada construccin de una relacin. Se incluyen los conceptos necesarios de Dependencias Funcionales que servir para definir las Formas Normales
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 3 de 120 CAPITULO 1
SISTEMAS DE BASES DE DATOS
1.1 INTRODUCCIN.
Un sistema de gestin de bases de datos SGBD (DBMS Data Base Management System) consiste en una coleccin de datos interrelacionados y un conjunto de programas para acceder a esos datos.
El trmino bases de datos corresponde a un conjunto autodescriptivo de registros integrados. Es autodescriptivo, porque adems de los datos fuentes del usuario, contiene una descripcin de su propia estructura; tal descripcin es conocida como diccionario de datos. La Base de Datos es un depsito nico de datos para toda la organizacin, por lo que debe ser capaz de integrar los distintos sistemas y aplicaciones, atendiendo a las necesidades de los usuarios en los niveles: operativo, tctico y estratgico.
El objetivo del SGBD es suministrar la interfaz entre el conjunto de los datos y los usuarios. El SGBD tambin debe proporcionar a los otros usuarios (analistas, programadores, administradores) las correspondientes herramientas que les permitan un adecuado desarrollo de sus funciones.
Una Base de Datos es un conjunto de registros integrados que jerrquicamente est caracterizada de la siguiente manera: los bits conforman los bytes o caracteres; los caracteres constituyen campos; los campos integran registros y los registros componen archivos. Una base de datos contiene cuatro componentes: archivos de datos del usuario, una descripcin de su propia estructura que se denomina diccionario de datos o metadatos, incluye tambin ndices que se usan para representar las relaciones entre los datos y para mejorar el desempeo de las aplicaciones de la base de datos, y un ltimo tipo de informacin o componente que se almacena en la base de datos son los metadatos de aplicacin; se usan para almacenar la estructura y el formato de reportes, consultas, y otros componentes de aplicacin.
Bits } Bytes} Campos } Registros } Archivos }
Bits } Bytes} Campos } Registros } Archivos + Metadatos + Indices + Metadatos de Aplicacin
Jerarqua de los elementos de datos en un sistema de procesamiento de archivos y en un sistema de bases de datos
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 4 de 120 Los sistemas de bases de datos estn diseados para gestionar grandes bloques de informacin. La gestin de datos implica tanto la definicin de estructuras para el almacenamiento de la informacin como la provisin de mecanismos para la gestin de la informacin.
Relacin entre una aplicacin de base de datos y un DBMS
1.2 GESTION DE LOS DATOS
Enfoque tradicional: En las primeras etapas del procesamiento de datos, las aplicaciones que se desarrollaban en las organizaciones estaban orientadas a cubrir necesidades muy especficas de procesamiento, por lo que, tanto los lenguajes de programacin como las estructuras de datos se centraban en realizar de manera ms eficiente una tarea especfica.
Los sistemas informticos tradicionales se denominan sistemas orientados hacia procesos, debido a que en ellos se pone nfasis en los tratamientos que reciben los datos, los cuales se almacena en ficheros que son diseados para una determinada aplicacin.
Mundo Real
Ficheros Individuales
Procesos:
Aplicaciones de B.D. DBMS Bases de Datos Personal Nmina Vehculos Personal Nmina Vehculos Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 5 de 120 Sistema orientado a procesos:
Datos Archivo Tratamiento Resultados
Enfoque de base de datos: Con el fin de resolver los problemas que se presentan con los sistemas informticos tradicionales y con el objeto de lograr una gestin ms racional del conjunto de datos, surge un nuevo enfoque que se apoya sobre una Base de Datos en la cual los datos son recogidos y almacenados, al menos lgicamente, una sola vez, con independencia de los tratamientos. Por lo tanto, en los sistemas orientados a datos el anlisis comienza por formular la lgica de los datos organizacionales como un todo independiente, para despus involucrarlos con los procesos que lo utilizan.
Mundo Real
Base de Batos
Procesos:
Datos Personal Nmina Vehculos D1 D2 D3 D4 D5 D6 D7 F1 F2 F3 F4 F5 T1 T2 T3 T4 T5 F6 Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 6 de 120 Sistema orientado a las Bases de Datos
Datos Creacin y Recuperacin actualizacin y Tratamiento
1.3 OBJETIVOS DE LOS SISTEMAS DE BASES DE DATOS
Un sistema de procesamiento de archivos apoyado por un sistema operativo convencional, tiene un nmero de desventajas importantes que tienen que ser evitadas por un sistema de bases de datos:
Datos integrados: En un sistema de bases de datos, todos los datos de las aplicaciones se almacenan en un medio sencillo llamado Bases de Datos. Por ejemplo, en un programa de facturacin, la aplicacin puede acceder a los datos del cliente, los datos de proveedores o ambos. En caso de necesitar ambos datos, el programador de la aplicacin slo especifica cmo debern combinarse los datos y el DBMS realizar las operaciones necesarias para conseguirlo.
Cuando los datos se encuentran aislados, stos estn repartidos en varios archivos, y pueden tener diferentes formatos, lo que complica la creacin de nuevos programas para obtener los datos apropiados.
Independencia programa / datos: Una de las principales ventajas que brinda una Base de Datos es la independencia entre los datos y los tratamientos que se hacen de ellos, a diferencia de los Sistemas Orientados a Procesos, en los cuales los datos eran sumamente dependientes de los programas. De hecho, para que un proceso pudiera utilizar un determinado dato que se encontraba almacenado en un archivo deba hacer la declaracin completa de la estructura de este archivo, esta declaracin era slo modificable en tiempo de edicin quedando fijada en tiempo de compilacin.
Un sistema de procesamiento de bases de datos hace que los programas dependan menos de los formatos de archivo. Los formatos de registro se D1 D2 D3 D4 D5 D6 D7 Creacin
Depuracin
Actualizacin
Almacenamiento BD
Recuperacin
Tratamiento Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 7 de 120 almacenan en la misma base de datos y son accedidos por el DBMS y no por los programas de aplicacin.
La independencia de programas y datos minimiza el impacto de los cambios en el formato de los datos de los programas de aplicacin. La mayora de las veces los programas de aplicacin no se enteran de que el formato de los datos ha cambiado.
Redundancia e inconsistencia de datos: En un sistema de procesamiento de archivos, stos y los programas de aplicacin son creados por diferente personal durante un perodo largo de tiempo, en donde, probablemente los archivos tengan diferentes formatos y puedan estar duplicados en varios sitios. Esto puede causar la redundancia de la informacin que aumenta los costos de almacenamiento y adems puede llevar a inconsistencia de los datos, esto es, las diversas copias de los mismos datos no concuerdan entre s.
Por ejemplo, si la direccin de un empleado est registrada en un archivo que contenga la informacin del Personal de la empresa y adems est registrada en el archivo con la informacin del Control de Asistencia, un cambio en la direccin del empleado puede estar reflejada en el registro del Personal, pero no estarlo en el registro del control de asistencia, produciendo una inconsistencia de los datos lo que implica dudas en la credibilidad de los datos almacenados.
Problemas de integridad: Los valores de datos almacenados en la base de datos deben satisfacer ciertos tipos de restricciones de consistencia. Por ejemplo, el saldo mnimo de una cuenta corriente debe ser 100 dlares.
Acceso concurrente: En un entorno de multiprogramacin es posible ejecutar varias transacciones de manera concurrente, lo que significa actualizar los datos simultneamente, para lo cual es necesario que el sistema controle la interaccin entre las transacciones concurrentes para evitar que se destruya la consistencia de la base de datos.
Control de seguridad: No todos los usuarios del sistema de bases de datos pueden acceder a todos los datos.
1.4 CONCEPTO DE BASES DE DATOS:
Las definiciones de Bases de Datos son numerosas, aunque todas coinciden en que es un conjunto de datos almacenados en un soporte de acceso directo. Los datos estn interrelacionados y estructurados de acuerdo a un modelo que sea capaz de recoger el mximo contenido semntico.
El concepto de bases de datos ha ido cambiando y configurndose a lo largo del tiempo.
A continuacin se enuncian algunas de estas definiciones:
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 8 de 120 Definicin 1:
Coleccin de datos interrelacionados almacenados en conjunto, sin redundancia perjudicial o innecesaria. Su finalidad es servir a una o ms aplicaciones de la mejor forma posible. Los datos se almacena de modo que resulten independientes de los programas que lo usan. Se emplean mtodos bien determinados para incluir nuevos datos y para modificar o extraer los datos almacenados [Martn 1995]
Definicin 2:
Coleccin o depsito de datos donde los mismos se encuentran lgicamente relacionados entre s, tienen una definicin y descripcin comunes y estn estructurados de una forma particular. Una Base de Datos es tambin un modelo del mundo real, y como tal, debe servir para toda una gama de usos y aplicaciones. [Conference des Statisticiens Europens, 1977]
Definicin 3:
Coleccin de datos interrelacionados [Elmasri y Navathe, 1989]
Definicin 4:
Una coleccin o depsito de datos integrados, con redundancia controlada y con una estructura que refleje las interrelaciones y restricciones existentes en el mundo real. Los datos, que han de ser compartidos por diferentes usuarios y aplicaciones, deben mantenerse independientes de stas, y su definicin y descripcin, han de estar almacenadas junto con los mismos. Los procedimientos de actualizacin y recuperacin, comunes y bien determinados, habrn de ser capaces de conservar la seguridad (integridad, confiabilidad y disponibilidad) del conjunto de datos [De Miguel y Piattini, 1993]
1.5 VENTAJAS DE LAS BASES DE DATOS.
CUADRO RESUMEN DE LAS VENTAJAS DE LAS BASES DE DATOS Referido a: Ventajas: Los datos Independencia de los datos respecto a los tratamientos y viceversa Mejor disponibilidad de los mismos Mayor eficiencia en la recogida, codificacin y entrada Los resultados Mayor coherencia Mayor valor informativo Mejor y ms normalizada la documentacin de la informacin Los usuarios Acceso ms rpido y sencillo de los usuarios finales Ms facilidades para compartir los datos por el conjunto de usuarios Mayor flexibilidad para atender a demandas cambiantes Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 9 de 120
1.6 ABSTRACCIONES DE DATOS.
Un objetivo importante de un sistema de bases de datos es proporcionar a los usuarios una visin abstracta de los datos. Es decir, el sistema esconde ciertos detalles de cmo se almacenan y mantienen los datos. Puesto que, muchos usuarios de sistemas de bases de datos no tienen experiencia en computadoras, se les esconde la complejidad a travs de diversos niveles de abstracciones para simplificar su interaccin con el sistema.
En los sistemas de informacin tradicionales se puede observar la existencia de dos estructuras distintas:
- Lgica (vista de usuario)
- Fsica (forma en la que se encuentran los datos en el almacenamiento)
En las Bases de Datos aparece un nuevo nivel de abstraccin que se ha denominado de diversas maneras: nivel conceptual, estructura lgica global, etc. El nivel externo es la visin que tiene de la base de datos cada usuario en particular, el nivel conceptual responde al enfoque del conjunto de la empresa (visin del administrador), y el nivel interno es la forma en la que se organizan los datos en el almacenamiento fsico.
Nivel fsico o interno: Nivel ms bajo de abstraccin, describe cmo se almacenan realmente los datos. Se distinguen tres clases de aspectos:
Estrategia de almacenamiento: Incluye la asignacin de espacio de almacenamiento para el conjunto de datos, las estrategias para optimizar tiempo y espacio en memoria secundaria, tratamiento de desbordamientos, etc.
Caminos de acceso: Incluye las especificaciones de claves primarias y secundarias, as como la de ndices o punteros.
Miscelneos: Tcnicas de compresin de datos, criptografiado, optimizacin, etc.
Nivel conceptual: Este nivel describe qu datos son realmente almacenados en la base de datos y las relaciones que existen entre los datos. El nivel conceptual de abstraccin lo usan los administradores de bases de datos, quienes deben decidir qu informacin se va a guardar en la base de datos.
En el esquema o nivel conceptual deber incluirse la descripcin de todos los datos e interrelaciones entre stos, las restricciones de integridad y de confidencialidad.
Nivel de visin o externo: Es el nivel ms alto de abstraccin, describe un nmero de vistas, cada vista describe una parte de la base de datos completa que le interesa a un particular grupo de usuarios.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 10 de 120 La interrelacin entre estos tres niveles de abstraccin se detalla continuacin.
Almacenamiento de Bases de datos
Tres niveles de abstraccin de datos
1.7 ESQUEMA E INSTANCIA.
La informacin almacenada en la base de datos, en un determinado momento en el tiempo recibe el nombre de instancia (ejemplar), en tanto que el diseo global de la base de datos se llama esquema. Los esquemas cambian muy rara vez o nunca.
Los sistemas de Bases de Datos tienen varios esquemas, divididos de acuerdo con los niveles de abstraccin. En el nivel ms bajo est el esquema fsico; en el nivel intermedio, el esquema conceptual; en el nivel ms alto un subesquema.
1.8 USUARIOS DE UNA BASE DE DATOS
En esta seccin se identifican las personas que estn involucradas en el diseo, uso y mantenimiento de una base de datos.
Administrador de una base de datos (DBA): Es el responsable del diseo, control y administracin de la base de datos, puede ser desempeada por una persona o por un grupo de personas dependiendo de la envergadura del proyecto. Vista 1 Vista n. Nivel conceptual Nivel fsico Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 11 de 120
Ser responsabilidad del Administrador de la Base de datos (DBA):
- La estructura de la base de datos, en el sentido de determinar qu informacin va a ser necesaria almacenar en la misma, despus de haber analizado los requisitos de los distintos usuarios.
- La descripcin conceptual y lgica de la Base de datos, una vez especificados los requisitos de la informacin es preciso realizar el diseo conceptual de la base de datos para despus, adecuar la estructura conceptual a un SGBD especfico.
- La descripcin fsica de la Base de datos, encontrando una estructura interna que soporte el esquema lgico y los objetivos de diseo. Es una labor que se extiende a lo largo de la vida de la base de datos, el DBA tendr que variar parmetros, reorganizar los datos, modificar estructuras de almacenamiento, realizar nuevas distribuciones de los ficheros en los soportes, etc.
- Definicin de estndares con los que se va a regir la organizacin.
- Los aspectos relativos a la seguridad.
- El control y la interaccin entre la red y la base de datos.
- Los procedimientos de explotacin y uso.
- La estrategia de transicin.
Diseador de la base de datos: Es responsable de identificar los datos que van a ser almacenados en la base de datos y escoger las estructuras apropiadas. Define adems los requerimientos del usuario o grupos de usuarios.
Usuarios finales: Son las personas que en su trabajo requieren el acceso a la base de datos para realizar consultas, actualizaciones y generar reportes. Existen tres categoras de usuarios:
- Usuario casual: Usuarios que hacen consultas a la base de datos.
- Usuarios especializados: Realizan consultas y modificaciones a la base de datos.
- Usuarios sofisticados: Incluyen ingenieros, analistas que estn familiarizados con el DBMS.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 12 de 120 1.9 INDEPENDENCIA DE DATOS
Se llama independencia de datos a la capacidad para modificar una definicin de esquema en un nivel sin que afecte a una definicin de esquema en el siguiente nivel ms alto. Existen dos niveles de independencia de datos:
Independencia fsica de datos : Es la capacidad de modificar el esquema fsico sin provocar que los programas de aplicacin tengan que rescribirse. En algunas ocasiones son necesarias las modificaciones en el nivel fsico para mejorar el funcionamiento
En este punto se puede encontrar cambios al tamao de los bloques, longitud de los registros, creacin y eliminacin de ndices, cambios en las direcciones relativas y absolutas de almacenamiento.
Independencia lgica de datos : Es la capacidad de modificar el esquema lgico sin provocar que los programas de aplicacin tengan que rescribirse. Las modificaciones en el nivel lgico son necesarias siempre que la estructura lgica de la base de datos se altere. Los cambios pueden realizarse en los campos (nombre, tipo, etc) o en los registros (cambio de nombre, introducir nuevos campos, borrado de los mismos, etc).
1.10 MODELOS DE DATOS
Un modelo de datos consiste en una coleccin de herramientas conceptuales para describir datos, relaciones entre ellos, la semntica asociada a los datos, y restricciones de consistencia. Se dividen en tres modelos:
Modelo lgico basado en objetos: Este modelo describe los datos a nivel conceptual y de visin, los ms conocidos son:
Modelo entidad relacin Modelo orientado a objetos Modelo binario Modelo semntico de datos
Modelo lgico basado en registros: Los modelos lgicos basados en registros se utilizan para describir datos en los niveles conceptual y fsico.
La base de datos de un modelo basado en registros est estructurada en registros de formato fijo de varios tipos. Cada tipo de registro define un nmero fijo de campos y cada campo normalmente es de longitud fija.
Los modelos ms conocidos son:
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 13 de 120 Modelo Relacional: Este modelo representa los datos y las relaciones entre ellos, mediante una coleccin de tablas, cada una de las cuales tiene un nmero de columnas con nombres nicos.
NOMBRE CALLE CIUDAD NUMERO Prez Sucre Cuenca 900 Torres Bolvar Quito 556 Torres Bolvar Quito 647 Jara Crdova Guayaquil 801 Jara Crdova Guayaquil 647
NUMERO SALDO 900 55 556 100000 647 105666 801 10533
Modelo de red: Los datos se representan mediante coleccin de registros y las relaciones de datos mediante enlaces que pueden considerarse como punteros.
Modelo jerrquico: Es similar al modelo de red, la diferencia est en que los registro estn organizados como coleccin de rboles en vez de grafos arbitrarios.
Modelo fsico basado en datos: Se usa para describir datos en el nivel ms bajo.
1.11 LENGUAJES DE BASES DE DATOS.
Para llevar a cabo las distinta funciones que cumple un SGBD, se hace necesario contar con diferentes lenguajes y procedimientos que permitan la comunicacin con la Base de datos. Un sistema de bases de datos proporciona dos tipos de lenguaje diferentes: uno para especificar el esquema de la base de datos y el otro para expresar las consultas y actualizaciones de la base de datos.
Data definitin language (DDL): Lenguaje especial basado en un conjunto de definiciones, que sirve para especificar el esquema de una base de datos. El resultado de la compilacin de sentencias de DDL es un conjunto de tablas que se almacenan en un archivo llamado Diccionario de Datos (DD).
Storage definition lenguaje (SDL) y View definition languaje (VDL). Son lenguajes que nos sirven para especificar la estructura de almacenamiento y los mtodos de acceso.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 14 de 120 Data manipulation languaje (DML). El objetivo es proporcionar una interaccin eficiente entre las personas y el sistema. Por manipulacin se entiende la recuperacin, insercin, supresin y modificacin de la informacin almacenada en la base de datos.
Tipos de DML:
No procedimentales: Los DML requieren que el usuario especifique QU datos se necesitan, sin especificar CMO obtenerlos. Ej: SQL.
Procedimentales: Los DML requieren que el usuario especifique QU datos se necesitan y CMO obtenerlos. Ej. DL/I (lenguaje propio de los ordenadores IBM)
Representacin de la accin de un lenguaje de bases de datos
1.12 GESTOR DE BASE DE DATOS.
Es un modelo de programa que proporciona el interfaz entre los datos de bajo nivel almacenados en la base de datos y los programas de aplicacin y consultas hechas al sistema.
Quiero consultar datos del estudiante Nro 263 Voy a crear un nuevo archivo en la base de datos DDL DML GESTOR DE LA BD (DBMS) BASE DE DATOS COMUN Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 15 de 120 USUARIO
Un gestor de bases de datos es responsable de las siguientes tareas:
Interaccin con el gestor de archivos: Es responsable del almacenamiento, recuperacin y actualizacin de los datos en la base de datos. El gestor de bases de datos traduce las sentencias DML a comandos del sistema de archivos de bajo nivel, para procesar los datos almacenados en el disco.
Implantacin de la integridad: Controla que los datos almacenados en la base de datos cumplan con ciertas restricciones de consistencia. Por ejemplo el nmero mximo de horas semanales =< 40.
Implantacin de la seguridad: No todos los usuarios de la base de datos necesitan tener acceso a todo su contenido, es funcin del gestor de la base de datos administrar estas seguridades.
Copias de seguridad y recuperacin: Es responsabilidad del gestor de bases de datos detectar las fallas ocasionadas por hardware o software, y restaurar la base de datos al estado en el que se encontraba antes de ocurrir el fallo.
Control de concurrencia: Es responsabilidad del gestor de bases de datos conservar la consistencia de los datos, cuando varios usuarios actualizan la base de datos concurrentemente.
En resumen se puede definir como un Sistema de Gestin de la Bases de Datos (SGBD) Al conjunto coordinado de programas, procedimientos, lenguajes, etc., que suministra, tanto a los usuarios no informticos como a los analistas, programadores, o al administrador, los medios necesarios para describir, recuperar y manipular los datos almacenados en la base, manteniendo su seguridad. [DE MIGUEL y PIATTINI, 1993]
1.13 COMPONENTES DE UN SISTEMA DE BASES DE DATOS
Un sistema de base de datos contempla los siguientes componentes:
La Base de Datos.
B.D. Sistema de gestin de bases de datos Consultas Aplicaciones B.D. B.D. Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 16 de 120 Los sistemas de gestin de bases de datos (SGBD, DBMS), tal como el DB2, oracle, Sybase, etc., que varan considerablemente en cuanto a caractersticas y funciones.
Las caractersticas y funciones de un DBMS, pueden dividirse en tres subsistemas: Herramientas de diseo, tiempo de ejecucin y motor DBMS.
Subsistema de Herramientas de Diseo: Consta de un conjunto de implementos que facilitan el diseo y la creacin de la base de datos y sus aplicaciones. Generalmente incluye herramientas para la creacin de tablas, formas, consultas y reportes. Tambin proporcionan lenguajes e interfaces de programacin para programar con lenguajes. Por ejemplo Access tiene dos lenguajes: un macrolenguaje que no requiere conocimientos profundos de programacin y una versin de BASIC llamada Visual Basic.
Sistema de Run Time (Tiempo de Ejecucin): Procesa los componentes de aplicacin que se desarrollan al utilizar las herramientas de diseo. (procesador de formas, de consultas).
El motor DBMS: Es el intermediario entre las herramientas de diseo y los subsistemas run-time y los datos. El motor recibe los requerimientos de los otros dos componentes (plantados en trminos de tablas, filas y columnas) y traduce los requerimientos a rdenes dirigidas al sistema operativo para leer y escribir datos en medios fsicos. El motor DBMS tambin es responsable del manejo de transacciones, bloqueo, respaldo y recuperacin de la base de datos.
Programas de aplicacin.
Un conjunto de usuarios.
Medios tcnicos.
Programas utilitarios (generadores de informes, de interfaces, herramientas de desarrollo, de administracin, etc).
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 17 de 120 Una estructura completa de un sistema de bases de datos, se detalla en el siguiente grfico:
Usuarios Programadores Usuarios Administradores ingenuos de aplicaciones sofisticados de bases de datos
Interfaz de aplicacin Programadores de aplicaciones Consultas Planificacin de bases de datos Cdigo objeto de programas de aplicacin Precompilador de lenguaje de manipulacin de datos Procesador de consultas Compilador de lenguaje de definicin de datos Gestor de bases de datos Gestor de archivos Archivos Diccionario s Control de concurrencia Backup Recovery Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 18 de 120 CAPITULO 2
MODELO ENTIDAD - RELACIN
2.1 INTRODUCCIN
Podemos definir un Modelo de Datos como un conjunto de conceptos que permiten describir la estructura de una Base de Datos a diferentes niveles de abstraccin. Segn este nivel de abstraccin podemos clasificar a los modelos de datos como:
Externo.
Permite presentar los datos que necesita cada usuario en particular, con las estructuras propias del lenguaje de programacin que va a emplear.
Global.
Estos modelos ayudan a describir los datos para el conjunto de usuarios . Los mismos se clasifican en:
- Modelo Conceptual o de alto nivel.
Se refiere a la descripcin del mundo real de acuerdo con un modelo altamente semntico e independiente del hardware y del SGBD en el que posteriormente se vaya a realizar la implementacin de la base de datos.
En general, los Modelos Conceptuales, por su nivel de abstraccin y riqueza semntica, constituyen una interfaz til entre los profesionales de la informtica y los usuarios finales, en las primeras etapas del proceso de diseo de Bases de Datos.
- Modelos Convencionales.
Se encuentran soportados por los SGBD y estn orientados a describir los datos a nivel lgico para el SGBD, por lo que sus conceptos son propios de cada SGBD.
Estos modelos se pueden considerar como una interfaz entre el informtico y el ordenador.
Los tres modelos convencionales ms extendidos en el mercado son el Jerrquico, el de Codasyl y el Modelo Relacional.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 19 de 120 Interno.
Estos modelos tambin conocidos como Modelos Fsicos, se orientan a la mquina.
De manera ms precisa se puede definir a un Modelo de Datos como un conjunto de conceptos, reglas y convenciones que nos permiten describir y manipular los datos del mundo real y que deseamos almacenar en la Base de Datos.
Dentro de la problemtica del diseo de Bases de Datos, los modelos de datos cumplen un papel muy importante, ya que son las herramientas que nos permiten generar los esquemas de Bases de Datos que regirn su estructura.
La modelacin de datos expresa un diseo lgico de datos de la misma manera en que un diagrama de flujo expresa el diseo lgico de un programa.
2.2 EL DISEO CONCEPTUAL EN EL PROCESO DE DESARROLLO DE SOFTWARE.
Consideremos el Ciclo de Vida Clsico de un producto de Software.
En el desarrollo de software, las primeras etapas son las que cobran mayor importancia, ya que en ellas se debe centrar la mayor cantidad de esfuerzo para asegurar una mayor calidad del producto.
Dentro de estas etapas, se encuentra el diseo. El diseo como actividad se puede entender en distintos niveles de abstraccin, separndolo en Diseo Conceptual, Diseo lgico y Diseo Fsico.
Diseo Conceptual.
Es de un alto nivel de abstraccin, y puede confundirse inicialmente con el trmino de la etapa de anlisis. Este diseo no est necesariamente asociado con una Ingeniera del Sistema Anlisis Diseo Codificacin Pruebas Mantenimiento Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 20 de 120 plataforma de implementacin, sino es ms cercano a la realidad, al problema a solucionar.
El diseo conceptual recibe como entrada la especificacin de los requerimientos y su resultado es el esquema conceptual de la Base de datos, independiente del software que se use para manipularlo.
Diseo Lgico.
Recibe como entrada el esquema conceptual y da como resultado un esquema lgico, que es una descripcin de la estructura de la Base de Datos que puede procesar el software del Sistema de Gestin de Bases de Datos.
El diseo lgico se acerca ms a la implementacin del producto en una plataforma computacional, integrando consideraciones para la plataforma en cuestin.
Diseo Fsico:
Recibe como entrada el esquema lgico y da como resultado un esquema fsico, que es una descripcin de la implementacin de una Base de Datos en la memoria secundaria del ordenador. Describe la estructura de almacenamiento y los mtodos usados para tener acceso efectivo a los datos.
Esquema conceptual
Esquema Lgico
Esquema Fsico
Realidad Requisitos de datos Modelo Conceptual Modelo Lgico Modelo Fsico Diseo Conceptual Diseo Lgico Diseo Fsico Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 21 de 120 2. 3 MODELO ENTIDAD RELACIN (MER):
El Modelo EntidadRelacin fue desarrollado por Peter Chen en 1976 como metodologa grfica para el diseo de Bases de Datos, por lo que puede decirse que es un mtodo de representacin abstracta del mundo real centrado en las restricciones o propiedades lgicas de una Base de Datos.
El Modelo de datos Entidad-Relacin (MER) se basa en una percepcin del mundo real, que consiste en un conjunto de objetos bsicos llamados entidades y de relaciones entre estos objetos. Se emplea para interpretar, especificar y documentar los requerimientos para sistemas de procesamiento de bases de datos.
2.3.1 ENTIDADES:
Una entidad es algo que puede identificarse en el ambiente de trabajo de los usuarios, debe ser un objeto que existe y es distinguible de otros objetos. Una entidad con una existencia fsica es una persona, un carro; o puede ser un objeto con una existencia conceptual: una compaa, un trabajo o un curso de universidad.
Las entidades se agrupan en clases de entidades o conjunto de entidades del mismo tipo, una clase de entidad es la forma general o descripcin de algo, por ejemplo un CLIENTE.
Se define como ocurrencia de una clase de entidad, a la representacin de una entidad particular, tal como CLIENTE 23456.
Cada entidad tiene propiedades particulares llamadas atributos.
2.3.2 ATRIBUTOS:
Las entidades tienen atributos o como se les llama en ocasiones, propiedades, que describen las caractersticas de una entidad, por ejemplo una entidad EMPLEADO, tiene sus propiedades particulares como: nombre, edad, direccin, sueldo, actividad, etc.
Tipos de atributos:
Atmico: Los atributos que no son divisibles, por ejemplo: Nombre, Cdula de identidad, Ciudad.
Compuestos: Cuando un atributo es dividido en pequeas subpartes. Los atributos compuestos pueden formar una jerarqua de atributos, por ejemplo:
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 22 de 120
Atributo con simple valor: Cuando un atributo tiene un simple valor para una identidad particular. Por ejemplo, una persona tiene un valor por su edad y la edad es un simple valor de la persona.
Atri buto multivalor: Cuando un atributo tiene una serie de valores para identificarse, por ejemplo el atributo color de un automvil.
Atributos derivados: Cuando los valores de un atributo son afines, y el valor para este tipo de atributo se puede derivar de los valores de otros atributos. Por ejemplo, la edad y la fecha de nacimiento de una persona; si conocemos la fecha de nacimiento, podemos determinar su edad, en este caso decimos que la edad es derivada de la fecha de nacimiento.
Atributo llave: Una entidad usualmente tiene un atributo sobre el cual los valores son distintos para cada entidad individual, sta nos permite identificar de forma nica a una entidad en el conjunto de entidades, por ejemplo, en la entidad PERSONAL el atributo puede ser el nmero de la cdula de identidad.
En algunos casos varios atributos juntos pueden formar una llave, significando que la combinacin de los valores de los atributos debe ser distinta para cada entidad individual.
Atributos Nulos: Un valor nulo se usa cuando una entidad no tiene valor para un atributo. Nulo puede tambin indicar que el valor de un atributo es desconocido.
Cada atributo simple de una entidad es asociado con un set de valores al que llamamos Dominio de un atributo. En otros trminos, Dominio de un atributo es el conjunto de direccin Ciudad Parroquia Calle Barrio Nombre Nmero Nro.Dep. Automvil Color Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 23 de 120 posibles valores que puede tomar un atributo. Por ejemplo, el rango de edad de los empleados de una empresa es de 25 a 50 aos; el estado civil de los empelados.
2.3.3 RELACIN:
2.3.3.1 CONCEPTO:
Una relacin es cualquier asociacin R que pueda establecerse entre entidades de la misma clase o de clases diferentes.
Entidad Entidad Personal Vehculo Relacin Conductor
Una relacin puede incluir muchas entidades; la cantidad de entidades en una relacin es el grado de la relacin. Por ejemplos:
Relacin de grado 2 Relacin de grado 3
Personal Vehculo Conductor Vendedor Pedido Madre Padre Hijo Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 24 de 120 Aunque el modelo E-R permite relaciones de cualquier grado, la mayora de las aplicaciones del modelo slo consideran relaciones de grado 2 a las que se les llama relaciones binarias. Ejemplos: Ros atraviesan Provincias, Empleados trabajan para Departamentos, Autor escribe Documentos.
Relaciones unitarias o Relaciones Recursivas: Se establece entre entidades de la misma clase. Por ejemplo, Personas son hijos de Personas.
La relacin HABITACION-CON, podra definirse en la entidad ESTUDIANTE.
HABITACION-CON
SUPERVISOR
Relacin N-arias: La relacin se establece entre N clases de entidades, siendo N > 2. Este tipo de relaciones tienen limitaciones, por lo que cada una de ellas suele ser sustituida por un conjunto de relaciones binarias.
2.3.3.2 PROPIEDADES DE LAS RELACIONES:
Los roles de una relacin: Son las funciones que desempean cada una de las clases de entidades asociadas. En toda relacin existen dos roles diferentes correspondientes a las entidades de cada una de las clases relacionadas. Suponiendo que A representa la clase de entidad formada por todos los profesores de un centro de estudios universitario, y B la formada por todos los alumnos de dicho centro, entre las entidades de estas dos clases podran establecerse varias relaciones caracterizadas por los siguientes roles:
- Dar clase a / Recibir clase de - Es tutor de / Es dirigido por - Es director de / es dirigido por
Cardinalidad de una relacin: Expresa el nmero de entidades de una clase que pueden asociarse a una entidad de la otra clase. En funcin de esta propiedad, se distinguen tres tipos de relaciones:
Estudiante 1:N Empleado 1:N Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 25 de 120
1 1
N 1
Cada persona maneja un vehculo, cada Una persona maneja varios vehculos, un vehculo es manejado por una persona vehculo es manejado por una sola persona (A) Relacin 1:1 (B) Relacin 1:N
N N
N 1
Un vehculo puede ser manejado por algunas Una persona puede manejar un nmero de personas. Una persona maneja un vehculo vehculos, un vehculo puede ser manejado solamente. por algunas personas. (C) Relacin N:1 (D) Relacin N:M
Ejemplos:
(a) Auto - Asignacin
(b) Dormitorio - Ocupante
- Un Ro y su desembocadura - Las manzanas y las parcelas catastrales - Los empleados y su departamento - Un departamento y su jefe - Un empleado y sus cargas familiares
P1 P2 P3 v1 v2 v3 Persona Vehculo conductor P1 P2 P3 v1 v2 v3 v4 v5 v5 Persona Vehculo Empleado Auto 1:1 Dormitorio Estudiante 1:N P1 P2 P3 P4 P5
v1 v2 v3 Persona Vehculo conductor P1 P2 P3 P4 v1 v2 v3 v4 v5 v5 Persona Vehculo Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 26 de 120 El nmero dentro del rombo en la relacin, detalla la cantidad mxima de entidades que pueden ocurrir en un lado de ella. En ocasiones, tales limitaciones se denominan la cardinalidad mxima de la relacin. En el ejemplo anterior (b) la relacin tiene una cardinalidad mxima de 1:N. Es posible que la cardinalidad mxima sea distinta de 1 y N, por ejemplo en el caso de la relacin EQUIPO DE BASQUETBOL y JUGADOR, puede tener una cardinalidad mxima de 5.
Ejemplos de Cardinalidad (obtenido mediante el software Power Designer)
A) Relacin 1 : 1
Modelo de Datos Conceptual (CDM)
Modelo de Datos Fsico (FDM)
Relacin 1 : N
CDM
PDM
Relacin N: 1
CDM
PDM CODIGO = CODIGO PLACA = PLACA VEHICULO PLACA <pk> C(6) CODIGO <fk> C(5) MARCA C(10) MODELO C(10) PERSONA CODIGO <pk> C(5) PLACA <fk> C(6) NOMBRE C(15) APELLIDO C(15) CONDUCTOR VEHICULO PLACA MARCA MODELO PERSONA CODIGO NOMBRE APELLIDO CONDUCTOR VEHICULO PLACA MARCA MODELO PERSONA CODIGO NOMBRE APELLIDO PLACA = PLACA VEHICULO PLACA <pk> C(6) MARCA C(10) MODELO C(10) PERSONA CODIGO <pk> C(5) PLACA <fk> C(6) NOMBRE C(15) APELLIDO C(15) CONDUCTOR VEHICULO PLACA MARCA MODELO PERSONA CODIGO NOMBRE APELLIDO CODIGO = CODIGO VEHICULO PLACA <pk> C(6) CODIGO <fk> C(5) MARCA C(10) MODELO C(10) PERSONA CODIGO <pk> C(5) NOMBRE C(15) APELLIDO C(15) Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 27 de 120
Relacin N : M
CDM
PDM
Participacin de un conjunto de entidades: Especifica si todas las entidades de una clase participan o no en la relacin establecida con otra(s) clase(s) de entidad(es), es decir, indica si todas las entidades de una clase se relacionan necesariamente con entidades de otra clase asociada.
Una participacin es total, si cada entidad en E (conjunto de entidades) participa en al menos una relacin en R (Conjunto de relaciones).
La participacin es parcial, si slo alguna entidad en E participa en relaciones en R.
Ejemplo:
Empleado Jefes Departamento
Participacin parcial de Empleado y participacin total de Departamento.
CONDUCTOR VEHICULO PLACA MARCA MODELO PERSONA CODIGO NOMBRE APELLIDO PLACA = PLACA CODIGO = CODIGO VEHICULO PLACA <pk> C(6) MARCA C(10) MODELO C(10) PERSONA CODIGO <pk> C(5) NOMBRE C(15) APELLIDO C(15) CONDUCTO CODIGO <pk,fk> C(5) PLACA <pk,fk> C(6) e1 * e2 * e3 * e4 * e5 * e6 * * * R1 R2 R3
D1
D2
D3 Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 28 de 120 Dependencia de existencia: Si la existencia de la entidad x depende de la existencia de la entidad y, entonces se dice que x es dependiente por existencia de y. Operativamente eso significa que si se suprime y, tambin se suprime x. La entidad y se dice que es una entidad dominantey x una entidad subordinada.
Como ejemplo, considrese el conjunto de entidades cuenta y el conjunto de entidades Transaccin, que mantiene informacin de todas las transacciones hechas por cada una de las cuentas. El conjunto de entidades transaccin se describe mediante los atributos numero-transaccin, fecha-transaccin, e importe-transaccin. Se forma un conjunto de relaciones cuentatransaccin (bitcora) entre estos dos conjuntos de entidades, que es uno a varios, desde cuenta a transaccin. Cada entidad transaccin debe estar asociada con una entidad cuenta. Si la entidad cuenta se borra, todas sus entidades transaccin asociadas se deben borrar tambin. En cambio, las entidades transaccin se pueden borrar de la Base de Datos sin afectar a ninguna cuenta. En este caso la entidad cuenta es dominante y la entidad transaccin es subordinada.
Ejemplo: y x
2.4 CLAVES
En el modelo Entidad Relacin, los atributos pueden ser o no Claves, segn permitan o no la identificacin unvoca de las entidades de una clase o de las ocurrencias de una relacin. A continuacin se exponen los conceptos relacionados con este tema:
Superclave: conjunto de uno o ms atributos cuyos valores identifican unvocamente cada entidad de la clase u ocurrencia de la relacin.
Clave candidata: conjunto de uno a ms atributos cuyos valores identifican unvocamente cada entidad de la clase, sin que ningn subconjunto de ellos pueda realizar esta misma funcin. Una clave candidata es una superclave mnima. Una clase de entidad o relacin puede tener varias claves candidatas.
Clave primaria: Clave candidata de una clase de entidad o relacin que se elige como identificador unvoco de sus entidades u ocurrencias.
Cuenta Transaccin Bitacora Edificio Departamento Edi_num Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 29 de 120 2.5 DIAGRAMA ENTIDAD - RELACIN (E-R)
En un diagrama E-R las clases de entidades se muestran con rectngulos; las relaciones mediante rombos, y la cardinalidad de la relacin aparece dentro del rombo. El nombre de la relacin se muestra cerca del rombo.
Frecuentemente el nombre de la relacin se coloca dentro o sobre el rombo, y para estos casos la cardinalidad de la relacin se detalla colocando patas de gallo en la lnea que conecta a las entidades en el lado muchos de la relacin.
Para expresar la cardinalidad mnima, podemos ilustrar colocando una lnea perpendicular a la lnea de la relacin, para as indicar que una entidad debe existir en la relacin, y colocar un valo perpendicular a la lnea de la relacin, sealando que puede haber, o no, una entidad en la relacin. En el siguiente ejemplo se tiene que: un DORMITORIO debe tener una relacin con un ESTUDIANTE al menos, pero que no se requiere que un ESTUDIANTE, tenga una relacin con un DORMITORIO.
En este caso, DORMITORIO posee una cardinalidad mnima de 1 y una cardinalidad mxima de mltiples entidades ESTUDIANTE. Un ESTUDIANTE tiene una cardinalidad mnima de cero y una cardinalidad mxima de una entidad DORMITORIO.
Dormitorio Ocupante
En algunas versiones de los diagramas ER los atributos se representan con elipses que se conectan con la entidad o la relacin a la que pertenece. La identificacin de los atributos que forman la clave primaria en un diagrama Entidad Relacin puede representarse, subrayando el nombre del atributo.
Elipses dobles que representan atributos multivalor, elipses discontinuas que denotan atributos derivados, lneas dobles que indican participacin total de una entidad en un conjunto de relaciones.
Dormitorio Estudiante Dormitorio - Ocupante Dormitorio Estudiante 1:N Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 30 de 120
Ejemplo:
Entidades fuertes y dbiles: Una entidad fuerte es aquella entidad con identificador interno y una entidad dbil es aquella con identificador externo o mixto. En otras palabras un conjunto de entidades que tiene una clave primaria se denomina conjunto de entidades fuertes, y se llama conjunto de entidades dbiles aquellas que pueden no tener suficientes atributos para formar una clave primaria.
Los conceptos de entidades dbil y fuerte, estn relacionados con el concepto de dependencia de existencia. Un miembro de un conjunto de entidades fuerte es por definicin una entidad dominante, mientras que un miembro de un conjunto de entidades dbiles es una entidad subordinada. La entidad dbil se puede representar con un rectngulo de doble contorno.
2.6 REDUCCIN DE LOS DIAGRAMAS E-R A TABLAS
Una base de datos que se ajusta a un diagrama E-R puede representarse por medio de una coleccin de tablas. Para cada conjunto de entidades, y para cada conjunto de relaciones en la base de datos, existe una tabla nica a la que se asigna el nombre del conjunto de entidades o del conjunto de relaciones correspondiente. Cada tabla tiene un nmero de columnas que, a su vez, tienen nombres nicos.
En esta etapa transformaremos el esquema conceptual (MER) a un esquema relacional. Este esquema sigue siendo independiente del SGBD que se utilizar en las siguientes etapas del desarrollo de software.
El paso del esquema Entidad / Relacin se basa en los siguientes principios:
Todo tipo de entidad se convierte en una tabla.
Todo tipo de relacin N:M se transforma en una tabla.
Todo tipo de relacin 1:N se traduce en el fenmeno de propagacin de la clave o bien se crea una nueva relacin. Dormitorio Estudiante 1:N Ubicacin Nom-Dormi Cantidad de Habitaciones Renta Numero de estudiantes Nombre de estudiante Ao del estudiante Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 31 de 120 2.6.1 REGLAS DE TRANSFORMACIN:
2.6.1.1 RELACIN N:M
Un tipo de relacin de N:M se transforma en una relacin que tendr como clave primaria la concatenacin de los identificadores de cada entidad que asocia. Cada uno de los atributos que forman la llave primaria de una tabla derivada de una relacin N:M, son llave forneas respecto de cada una de las tablas de las entidades que se relacionan.
La tabla ESCRIBE est formada por las columnas cod-autor que es llave fornea que referencia a la tabla AUTOR, cod- libro llave fornea que referencia a la tabla LIBRO.
2.6.1.2 RELACIN 1:N
Como se indic anteriormente todo tipo de relacin 1:N se traduce en el fenmeno de propagacin de la clave.
Existen casos en que es necesario transformarla en una tabla, como si se tratara de una relacin N:M, siendo conveniente en los siguientes casos:
El nmero de ocurrencias de la entidad que propaga la clave es muy pequeo, evitando los valores nulos.
Empleado Departamento NOMBRE APELLIDO ND Juan Torre 1 Pedro Calle 1 ----- ------- Null ----- ------ Null ----- ------ Null ----- ------ Null Pablo Perez 2 Luis Polo 3
Para evitar los valores nulos en la tabla EMPLEADO, se recomienda crear una nueva tabla de la relacin.
Cuando se prev que en el futuro dicha relacin se convierta en una N:M Cuando la relacin tiene atributos propios.
DNO NOMBRE 1 Tcnico 2 Cmputo 3 Produccin Escribe Libro Autor Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 32 de 120 2.6.1.3 RELACIN 1:1
Son casos en donde se puede crear una tabla o bien propagar la clave. Esto ltimo puede ser en ambas direcciones
Si ambas entidades tienen una participacin parcial en la relacin, es recomendable crear una nueva tabla de la relacin, para evitar valores nulos.
Para el caso en que una de las entidades tenga una participacin total y la otra parcial, conviene propagar la clave de la entidad con participacin parcial.
1 1
EMPLEADO (cod-empleado, nombre, ..) DEPARTAMENTO (dno, cod-empleado, nombre, )
Si la participacin es total para las dos entidades, se puede propagar la clave en cualquiera de las dos direcciones.
2.6.1.4 ATRIBUTOS DE UNA RELACIN.
Es conveniente que aquellas relaciones que contiene atributos propios se transformen en una tabla, en donde aquellos atributos pasan a se columnas de dicha tabla.
2.6.2 EJEMPLO DE REDUCCIN
N N 1 N
Cliente CtaCli Cuenta Transaccin Nom_cli CI Calle Ciudad Fecha Num_Cta Saldo Num_ Cantidad Fecha Matrimonio Bitcora Mujer Hombre Empleado Departamento Jefe Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 33 de 120
Nom-Cli CI Calle Ciudad Pablo 654-32 Bolvar Cuenca Antonio 890-12 Sucre Cuenca Alberto 456-78 Boyac Guayaquil Manuel 369-12 9 octubre Guayaquil Pedro 246-80 Talbot Quito Juan 121-21 Amazonas Quito Andrs 135-79 Borrero Cuenca Tabla Clientes
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 34 de 120 2.7 AGREGACIN
Los conceptos analizados en los numerales anteriores, son los conceptos bsicos el modelo E R con los que se puede modelar la mayora de las caractersticas de las bases de datos. Sin embargo existen ciertos aspectos de una base de datos que sern expresados de mejor manera, mediante extensiones del modelo E R, como es el caso de la agregacin.
En el modelo E R no es posible expresar relaciones entre relaciones, para modelar una situacin como sta se usa la agregacin, que es una abstraccin a travs de la cual las relaciones se tratan como entidades de nivel ms alto.
Ejemplo:
Consideremos las entidades cliente y cuenta, cada cliente puede tener una o varias cuentas, y de igual manera una cuenta corriente puede pertenecer a varios clientes; la relacin entre estas dos entidades la denominamos impositor. Si al par cliente - cuenta le asignamos privilegios (solicitar sobregiro, cerrar cuenta, etc), que estn definidos en la entidad privilegios, estaramos en el caso de modelar una relacin entre relacin. Como el modelo no admite esta expresin, necesitamos crear una agregacin, generando una entidad de nivel ms alto formada por la relacin prestatario y las entidades cliente y cuenta. Esta entidad de nivel ms alto se trata de la misma forma que cualquier otro conjunto de entidades.
El modelo entidad - relacin no admite relaciones entre relaciones, razn por la cual no es posible generar el diagrama anterior, relacionando impositor con privilegio.
A continuacin se muestra el diagrama E R con el uso de agregacin. Cliente Cuenta Nombre Direccin CI Num_cue Importe Imposit or Privilegio codigo Descripci n Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 35 de 120
Cliente Cuenta Nombre Direccin CI Num_cue Importe Imposit or Privilegio codigo Descripci n Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 36 de 120 2.7 EJEMPLOS DE MODELO E-R
2.7.1 Se requiere llevar un control de las calificaciones de los exmenes de los estudiantes en cada una de las materias. A lo largo del curso se realizarn dos aportes y el examen final. Los datos que se registrarn para los alumnos sern su nombre, apellido, nmero de cdula, fecha de ingreso, edad y para el caso de las materias su nombre y nmero de crditos.
N
N
De este modelo aparecen las siguientes tablas:
ESTUDIANTE CI NOMBRE APELLIDO FECHA_ING N_MATRICULA 1101775849 Nelly Barrera 1-Oct-95 5630 1234567890 Mario Fajardo 5-Nov-98 7810 9876543210 Luis Arias 9-Sep-99 9315 1122334455 Francisco Cabrera 7-May-99 9148 ..... ..... ..... ..... .....
MATERIA CODIGO NOMBRE N_CREDITOS ISI515 Bases de Datos 5 ISI213 Lenguajes I 6 ISI 432 Estructura de Datos 3 ISI 313 Lenguaje II 6 ISI 712 Sistemas Expertos 4 ..... ..... .....
Estudiante Nombre N-Matricula Fecha_ingreso Edad CI Apellido Calificacin Materia Cdigo N_crditos Nombre Final Aporte-1 Aporte-2 Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 37 de 120 CALIFICACION CI CODIGO APORTE-1 APORTE-2 FINAL 1101775849 ISI515 8 6 7 1234567890 ISI515 9 7 7 9876543210 ISI712 7 4 8 1122334455 ISI213 6 9 6 1101775849 ISI432 6 8 7 1101775849 ISI712 5 6 9 1234567890 ISI313 9 8 8 ..... ..... ..... ..... .....
Analizando los atributos de las dos clases de entidades, se podran establecer las claves correspondientes.
ESTUDIANTE Superclaves: CI, Edad N_Matrcula, CI N_Matrcula, Fecha_Ing. Edad Claves Candidatas: CI N_Matrcula Clave Primaria: CI
Se considera que el Nmero de Matrcula es un valor nico para cada estudiante, por lo que permite identificar de forma unvoca a cada estudiante. Este atributo tambin podra haberse escogido como clave primaria en vez de la CI. La eleccin de uno u otro es indiferente en este caso.
MATERIA Superclaves: Cdigo, Nombre Cdigo, Creditos Claves Candidatas: Cdigo Nombre Clave Primaria: Cdigo
La clave primaria de una relacin se forma por unin de las claves primarias de las clases de entidades que interviene en dicha relacin. Teniendo en cuanta este principio, las claves correspondientes a la relacin Calificacin seran las siguientes: Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 38 de 120
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 39 de 120 2.7.2 Suponemos un modelo formado por las siguientes clases de entidades, atributos y relaciones.
- Universidades: Se caracterizan por su Nombre, Tipo (privada, estatal, etc), Nro. de carreras universitarias.
- Departamentos: Cada universidad tiene una serie de departamentos caracterizados por su Nombre, Especialidad, Lneas de investigacin.
- Profesores: Los profesores pertenecen a un departamento especfico, dan clases a uno o varios cursos, y se caracterizan por su Nombre y Apellido, CI, Ttulo(s) universitarios, Especialidad, Asignaturas que imparte.
- Alumnos: Los alumnos de cada universidad pertenecen a un solo departamento, pueden estar matriculados en uno o varios cursos, y se caracterizan por su Nombre y Apellido, Nro de matrcula, Cdigo, Edad, Expediente Acadmico.
- Cursos: Cada curso de una universidad es dirigido y administrado por un solo departamento, est formado por un nmero indeterminado de alumnos, y pueden dar clase en l uno o varios profesores del departamento al que pertenecen. Se caracteriza por su identificador, Nro de alumno, Ubicacin.
1
N
1 1
N 1 N
N N
N N N
Universidad Nombre Tip Se compone de Departamento Nombre Especialida d Se compone de Curso Nro_Alumnos Id_cu Alumno Nombre Codigo Fe_Na Estn matriculados Asiste a Profesor Da clases a Pertenece a Nombre CI Ttulos Apellido Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 40 de 120 2.7.3 Ejemplo de un modelo Entidad Relacin para una Compaa, en la que los empleados trabajan en diferentes departamentos y en diferentes proyectos. Estos proyectos son controlados por un departamento. Un empleado es jefe de un departamento y un departamento tiene varias localizaciones.
Del listado de empleados existen supervisores, quines son los encargados de supervisar a un determinado nmero de empleados. En el modelo se especifica tambin las cargas familiares de los empleados. (Ref: Fundamentals of DataBase Systems. Elmasri/Navathe)
1 N
1 1 1 N 1
N N N
1
N
Empleado Departamento Proyecto Carga_f Trabaja para Supervisor Dependen de Trabaja _en Jefe CI Salario Sexo Apellido Nombre Fecha_N Direccin Fecha_i Horas Nombre Num Localizacin Sexo Fe_Na Relacin Nombre Controla Nombre Nmero Locales Num_Emp Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 41 de 120
Reduccin del modelo E - R de la Compaa a tablas
EMPLEADO NOMBRE APELLIDO CI FECHA_N DIRECCIN SEXO SALARIO SUPERCI DNO Juan Polo 123456789 3-mar-59 Sucre 7-12 M 3000 333445555 5 Humberto Pons 333445555 25-dic-60 Bolvar 5-67 M 4000 888665555 5 Irma Vega 999887777 13-nov-50 P. Crdova 3-45 F 2500 987654321 4 Elena Tapia 987654321 3-may-61 Ordez 7-29 F 4300 888665555 4 Pablo Castro 666884444 15-sep-55 Bolvar 1-50 M 3800 333445555 5 Marcia Mora 453453453 29-mar-60 Colombia 4-23 F 2500 333445555 5 Manuel Bonilla 987987987 16-jul-58 B. Malo 1-10 M 2500 987654321 4 Jaime Prez 888665555 5-abr-57 Sangurima 8-34 M 5500 null 1
CARGA_F ECI DEP_NOM SEXO FECHAN_N RELACION 333445555 Mara F 2/02/86 hija 333445555 Teodoro M 10/10/90 hijo 333445555 Ana F 15/09/65 cnyuge 987654321 Alberto M 6/07/67 cnyuge 123456789 Miguel M 5/11/84 hijo 123456789 Mara F 9/01/87 Hija
123456789 Elizabeth F 12/12/60 Cnyuge
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 43 de 120
CAPITULO 3
EL MODELO RELACIONAL
No hay que confundir un diagrama de esquema con un diagrama entidad relacin. En particular, los diagrama E R no muestran explcitamente los atributos llave externa, mientras que los diagramas de esquema si. 1
El presente captulo est dividido en dos partes, la primera corresponde a la Estructura de la Base de Datos Relacionales y la segunda a la dinmica del Modelo Relacional.
3.1 ESTRUCTURA DEL MODELO RELACIONAL.
3.1.1 CONCEPTO DEL MODELO RELACIONAL.
El modelo relacional representa los datos en una base de datos como una coleccin de relaciones. Cada relacin se asemeja a una tabla, en donde; cada fila de la tabla representa una coleccin de datos conexos o afines. Los nombres de la tabla y de la columna son usados para ayudar en la interpretacin del significado de los valores de cada fila de la tabla.
La relacin es el elemento bsico del Modelo Relacional y se representa por una tabla.
Informalmente, los trminos y su equivalente son:
Relacin Tabla Tupla Fila Atributo Columna Nmero de tuplas Cardinalidad Nmero de atributos Grado Dominio Coleccin de valores, de los cuales uno o ms atributos obtienen sus valores reales Clave primaria Identificador nico para la tabla, es decir, una columna o combinacin de columnas con la propiedad de que nunca existen 2 filas de la tabla con el mismo valor en esa columna o combinacin de columnas.
Es importante indicar que la tabla es plana en el sentido de que el cruce de un fila y una columna slo puede dar un valor.
3.1.2 DOMINIO y ATRIBUTO.
1 Silberschatz Korth - Sudarshan, Fundamentos de Bases de Datos, cuarta edicin, 2002 Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 44 de 120 Dominio.
Se entiende por dominio D al conjunto finito de valores homogneos y atmicos V1, V2, .... Vn, caracterizados por un nombre. Homogneo significa que los valores son todos del mismo tipo y atmicos significa que son indivisibles, es decir, si se descompone se perdera la semntica del dominio.
Ejemplos:
- Dominio de Nacionalidades: Ecuatoriana, Peruana, Colombiana, etc.
- Dominio Edad_Empleado: Posible edad de los empleados de una compaa; un valor entre 18 y 50 aos.
- Dominio telfono: La coleccin de siete nmeros telefnicos de una provincia en particular.
Todo dominio tiene un nombre y un tipo de dato, en el primer ejemplo, el tipo de datos es un conjunto de caracteres de longitud mxima de 20.
Un tipo de datos o un formato son tambin especificados por cada dominio. Por ejemplo, el nmero telefnico podemos especificar como (d)ddd-ddd, donde d es un nmero entero y el primer dgito representa un cdigo para una provincia determinada.
Se considera que los dominios no incluyen nulos, ya que nulo (null) no es un valor.
La importancia de los dominios es que restringen las comparaciones, es decir, slo se puede comparar atributos definidos sobre el mismo dominio.
Dominio compuesto: Es una combinacin de dominios simples que tiene un nombre y sobre l se puede aplicar ciertas restricciones de integridad. Por ejemplo: un usuario podra manejar adems de los tres dominios Da, Mes, Ao, un dominio compuesto llamado Fecha que sera la combinacin de los tres, al que podramos aplicar restricciones de integridad a fin de que no aparezcan valores no vlidos para la fecha.
Todos los atributos compuestos como los dominios compuestos pueden ser tratados como piezas nicas de informacin, es decir, como valores atmicos.
Atributo.
Un atributo A es el papel que tiene un determinado dominio D en una relacin. Se dice que D es el domino de A y se denota dom(A).
El modelo relacional admite slo atributos simples, monovalentes.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 45 de 120 Los atributos compuestos se pueden transformar segn las siguientes dos alternativas:
1. Eliminar el atributo compuesto considerando todos sus componentes como un atributo individual, o;
2. Eliminar los componentes individuales y considerar el atributo compuesto entero como un solo atributo.
Ejemplo:
Nombre Calle Nmero Ciudad
Para la primera alternativa de transformacin el esquema relacional sera:
Persona (CI, Nombre, Calle, Nmero, Ciudad)
Para la segunda:.
Persona (CI, Direccin)
La transformacin de atributos polivalentes o multivalor requieren la introduccin de relaciones nuevas; cada atributo polivalente distinto requiere una relacin en la cual pueda estar representado como atributo monovalente. La nueva relacin contiene el atributo polivalente ms el identificador de la entidad original; el identificador de la nueva relacin es el conjunto de todos sus atributos.
Ejemplo:
Nombre Calle Nmero (1,n) Ciudad
PERSONA
CI Direccin
PERSONA
CI Direccin Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 46 de 120 Esquema relacional:
Persona (CI, Nombre)
Direccin (CI, Calle, Nmero, Ciudad) con CI como clave fornea que referencia a Persona.
3.1.3 RELACIN
Una relacin R sobre un conjunto de dominios D1, D2, ... Dn, (no necesariamente distintos), se compone de dos partes: una cabecera y un cuerpo.
La Cabecera est formada por un conjunto de atributos o, en trminos ms precisos, de pares de atributo-domino {(A1:D1), (A2:D2), .... ,(An:Dn)}, donde cada atributo Aj corresponde a uno y slo uno de los dominios Dj.
El Cuerpo est formado por un conjunto de tuplas, que varan en el tiempo. Cada tupla est formada por pares de atributo valor {(A1:vi1), (A2,vi2), .... (An:vin)}, (i = 1,2,..., m), donde m es el nmero de tuplas del conjunto.
En una relacin se debe cumplir las siguientes restricciones:
- Las celdas de la tabla deben ser de valores nicos.
- Cada atributo slo puede tomar un nico valor del dominio, no se admiten por lo tanto los grupos repetitivos ni arreglos como valores.
- Todos los ingresos en cualquier atributo deben ser del mismo tipo.
- Cada atributo posee un nombre nico.
- El orden de las columnas no es significativo.
- En una tabla no pueden ser idnticas dos tuplas.
- No es importante el orden de las tuplas.
3.1.4 CLAVES.
Los conceptos de claves que fueron analizadas en el Captulo 2, tambin son aplicables en el modelo relacional.
Clave Candidata:
Es un conjunto no vaco de columnas que identifican unvoca y mnimamente cada tupla. Toda relacin siempre tendr una clave candidata.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 47 de 120 Clave Primaria:
Es aquella clave candidata que es elegida por el diseador de la base de datos como elemento principal para identificar las tuplas de la relacin.
Claves Altenativas:
Son aquellas claves candidatas que no han sido escogidas como claves primarias.
Clave Ajena o Fornea:
De una relacin R2 es un conjunto no vaco de atributos cuyos valores han de coincidir con los valores de la clave primaria de una relacin R1. Debe tenerse en cuenta que la clave ajena y la correspondiente clave primaria han de estar definidas sobre el mismo dominio.
3.2 DINMICA DEL MODELO RELACIONAL
El componente dinmico del Modelo Relacional se divide en dos partes:
lgebra relaciona y
Clculo relacional.
El lgebra relacional se basa en un conjunto de operadores que operan sobre relaciones.
El clculo relacional se basa en predicados que definen un estado objetivo de la Base de datos. Dentro de stos tenemos el clculo relacional orientado a tuplas y el clculo relacional orientado a dominios.
3.2.1 ALGEBRA RELACIONAL
3.2.1.1 INTRODUCCIN.
El Algebra Relacional es una coleccin de operaciones que son usadas para manipular relaciones. Estas operaciones seleccionan tuplas de relaciones individuales o combina tuplas de varias relaciones, con el propsito de especificar una bsqueda o consulta en la base de datos. El resultado de cada operacin es una nueva relacin, la misma que puede ser tambin manipulada por las operaciones del lgebra relacional.
Las operaciones del lgebra relacional son divididas en dos grupos. El primer grupo incluye las operaciones que son definidas de las matemticas: la UNION, INTERSECCION, DIFERENCIA, y PRODUCTO CARTESIANO. El otro grupo conforma las operaciones desarrolladas especficamente para el manejo de bases de datos relacionales e incluye las operaciones SELECT, PROJECT y JOIN. Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 48 de 120
3.2.1.2 OPERACIN SELECT.
Es utilizada para seleccionar tuplas en una relacin. Estas tuplas deben satisfacer una condicin de seleccin.
Operacin: Unaria Formato: <condicin de seleccin>(<nombre de la relacin>) Donde: - Denota la operacin SELECT
- <Condicin de seleccin> expresin booleana de la forma: <nombre atributo><comparacin><valor constante>, o <Nombre atributo><comparacin><nombre atributo>.
La comparacin normalmente tiene los operadores: {=,<, ,>,,}. Condiciones: AND, OR, y NOT
- <nombre relacin> Nombre de la relacin.
Nota: Los ejemplos que se presentan en este captulo estn realizados sobre la base de la tablas del modelo E - R para Compaas del Captulo 2.
Ejemplos.
- Seleccione los empleados que trabajan en el departamento 4 DNO=4(EMPLEADO)
- Seleccionar los empleados con salario mayor a 2500 SALARIO > 2500(EMPLEADO)
- Lista de empleados que trabajan en el departamento 4, con un salario mayor a 2500 o empleados que trabajan en el departamento 5 y ganan ms de 4000. (DNO=4 AND SALARIO > 2500) OR (DNO=5 AND SALARIO > 4000)(EMPLEADO)
3.2.1.3 OPERACIN PROJECT.
La operacin PROJECT selecciona columnas de una tabla, las otras columnas son eliminadas. Si nos interesamos en ciertos atributos de una relacin, utilizamos la operacin PROJECT.
Formato: <lista de atributos>(<nombre relacin>)
Ejemplos: - Crear una tabla con el sexo y salario de los empleados. SEXO, SALARIO(EMPLEADO). Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 49 de 120
Secuencia de operaciones:
Es posible escribir operaciones con una simple expresin del lgebra relacional.
Ejemplos:
- Recuperar el primer nombre, el ltimo nombre y el salario de los empleados que trabajan en el departamento 5.
El siguiente grupo de operaciones son las correspondientes a las operaciones de la matemtica estndar.
UNION: El resultado de esta operacin denotada por R S, es una relacin que incluye tuplas que estn en R o en S o en ambas. Las tuplas duplicadas se eliminan.
INTERSECCIN: El resultado de esta operacin denotado por R S, es una relacin que incluye todas las tuplas que estn en la relacin R y en la relacin S.
DIFERENCIA: El resultado de esta operacin denotada por R-S, es una relacin que incluye todas las tuplas que estn en R pero no en S.
La operacin UNION e INTERSECCION son conmutativas
R S = S R, y R S = S R
Tambin cumplen la propiedad de ser asociativas.
R (S T) = (R S) T, y (R S) T = R (S T).
La operacin DIFERENCIA no es conmutativa:
R S S R Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 50 de 120
Ejemplos:
ESTUDIANTE NOMBRE APELLIDO INSTRUCTOR FNAME LNAME Susana Perez Pablo Medina Juan Reyes Ricardo Duran Jaime Torres Susana Perez Freddy Flores Francisco Lopez Antonio Gmez Juan Reyes Ana Rojas Mara Garcia
(a) NOMBRE APELLIDO (b) NOMBRE APELLIDO Susana Perez Susana Perez Juan Reyes Juan Reyes Jaime Torres Freddy Flores Antonio Gmez Ana Rojas Mara Garcia Pablo Medina Ricardo Duran Francisco Lopez
(c) NOMBRE APELLIDO (d) NOMBRE APELLIDO Jaime Torres Pablo Medina Freddy Flores Ricardo Duran Antonio Gmez Francisco Lopez Ana Rojas Mara Garcia
PRODUCTO CARTESIANO: Operacin binaria representada por . En general, el resultado de las relaciones R S de R(A1,A2,...,An) S(B1,B2...Bm) es una relacin Q con n * m atributos Q(A1,A2,...,An,B1,B2,...,Bm). El resultado de la relacin Q tiene un tupla de cada combinacin de tuplas, una de R y una de S.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 51 de 120
Denotada por , es usada para combinar tuplas similares a partir de dos relaciones.
La forma general de un JOIN con dos relaciones R(A1,A2,...,An) y S(B1,B2,...,Bm) es
R <JOIN CONDICIN> S
El resultado de la operacin join es una relacin Q con n + m atributos Q(A1,A2,..,An,B1,B2,...Bm); Q tiene una tupla por cada combinacin de tuplas, una por R y una por S, sin embargo, la combinacin satisface la <join condicin>. Esta es la principal diferencia entre el PRODUCTO CARTESIAONA y el JOIN; En un join, solamente las combinaciones que satisfacen la condicin aparecen en el resultado, en tanto que en el producto cartesiano todas las combinaciones de tuplas se incluyen en el resultado.
La <join condicin> es de la forma:
<condicin> AND <condicin> AND....AND<condicin> Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 52 de 120
donde cada condicin es de la forma Ai Bj, Ai es un atributo de R, Bj es un atributo de S, Ai y Bj tienen el mismo dominio, y es uno de los siguientes operadores de comparacin {=, <, , >, , }. Una operacin join con condiciones de este tipo se lo llama THETA JOIN.
Los ms comunes join envuelven condiciones nicamente de igualdad, utilizando el operador =. A este tipo de join se le denomina EQUIJOIN.
NATURAL JOIN: Idntico al EQUIJOIN, excepto que los <join atributos> de R2 no son incluidos en el resultado de la relacin. Est denotada por *.
R1 * <JOIN CONDICIN>, o R1 *(<join atributo>),(<join atributo2>)R2 o R1 * R2.
Ejemplos:
- Recuperar el nombre del jefe de cada departamento.
DEPT_JEFE DEPARTAMENTO X JEFECI = CI EMPLEADO RESULT DNUMERO, NOMBRE, APELLIDO (DEPT_JEFE)
- Natural join.
PROY_DEPT PROYECTO * DNUM = DNUMERO DEPARTAMENTO
En este caso en la tabla PROY_DEPT no se repite el atributo DNUMERO de la relacin DEPARTAMENTO.
Si los join atributos tienen el mismo nombre en ambas relaciones, se puede escribir la instruccin obviando el nombre de los join atributos.
DEPT_LOCS DEPARTAMENTO* LOCALIZACION
Ntese que el nombre de los join atributos, es el mismo DNUMERO para las dos relaciones.
3.2.1.6 LA OPERACIN DIVISION.
Operacin binaria representada por el smbolo , se establece para aquellas consultas que incluyen la frase para toda.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 53 de 120 R A B S A a1 b1 a1 a2 b1 a2 a3 b1 a3 a4 b1 a1 b2 a3 b2 a2 b3 T B a3 b3 b1 a4 b3 b4 a1 b4 a2 b4 a3 b4
T R S
3.2.1.7 FUNCIONES.
Consideramos las siguientes operaciones aplicadas a la coleccin de valores numricos:
SUM : Suma AVERAGE : Media aritmtica MAXIMUN : Valor mximo MINIMUN : Valor mnimo COUNT : Contador.
Las funciones estn denotadas por el smbolo . Su formato es:
Donde <grupo atributos> es una lista de atributos de la relacin especificada en <nombre relacin>, y <lista funciones> es una lista de pares (<funcin><atributo>)
Ejemplo:
- Recuperar, para cada nmero de departamento, el nmero de empleados en el departamento y su salario promedio.
R(DNO, N_EMPLEADOS, SALARIO_PROME) DNO COUNT CI, AVERAGE SALARIO(EMPLEADO)
R DNO N_EMPLEADOS SALARIO_PROME 5 4 3325 4 3 3100 1 1 5500 Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 54 de 120
Si no especificamos el <grupo atributos>, la funcin es aplicada a todas las tuplas de la relacin, y como resultado se obtiene una simple relacin.
COUNT CI, AVERAGE SALARIO(EMPLEADO)
CONUT_CI AVERAGE_SALARIO 8 3512.5
Si no se especifica los nombres de los atributos en el resultado de la relacin R, los nombres son aplicados desde la <funcin>_<atributos>.
Se desea implementar una solucin de base de datos que describa las pruebas de autocomprobacin para cada una de las materias que se imparten en una universidad, de acuerdo con los siguientes criterios:
- Se realiza una prueba de autocomprobacin para cada uno de los captulos que definen a una Materia.
- Una prueba contiene una o varias preguntas, las que a su vez pueden tener una o varias respuestas posibles.
- Se desea identificar qu profesores imparten cada materia. Una materia puede ser impartida por mas de un profesor.
- Se debe tener constancia de qu captulo han sido respondidas por cada alumno, de manera que si ya ha sido respondida no se vuelvan a almacenar sus datos. Slo es posible que el alumno responda a un captulo de una determinada Materia, slo una vez.
MATERIA (Cod_Materia, Descripcin, Contenido, Duracin) CAPITULO (Cod_Materia, Cod_Capitulo, Ttulo_Captulo) Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 55 de 120 PREGUNTAS (Cod_Materia, Cod_Captulo, Cod_Pregunta, Enunciado) RESPUESTAS (Cod_Materia, Cod_Captulo, Cod_Pregunta, Cod_Respuesta, Texto) PROFESORES (Cod_Profesor, Nombre, Apellidos, Direccin, Telfono) IMPARTEN (Cod_Materia, Cod_Profesor) ALUMNOS (Cod_Alumno, Nombre, Apellidos, Direccin, Telfono) EXAMENES (Cod_Alumno, Cod_Materia, Cod_Capitulo, Fecha, Calificacin )
Ejercicio 2
Deseamos disear una Base de Datos que recoja la organizacin de una universidad. Se considera que:
- Los departamentos pueden estar en una sola facultad o ser interfacultativos.
- Una ctedra se encuentra en un nico departamento.
- Una ctedra pertenece a una sola facultad.
- Un profesor est siempre asignado a un nico departamento y adscrito a una o varias ctedras, pudiendo cambiar de ctedra pero no de departamento; interesa la fecha en la que un profesor es adscrito a un departamento.
- Existen varias reas de conocimiento, y todo departamento tendr una nica rea de conocimiento.
Se desea disear una Base de datos que contenga la informacin relativa a las carreteras de un pas, sabiendo que:
- En dicho pas las carreteras se encuentran divididas en tramos.
- Un tramo siempre pertenece a una carretera, y no puede cambiar de carretera.
- Un tramo puede pasar por varios trminos municipales, siendo un dato de inters el kilmetro del tramo por el que entra en dicho trmino municipal, y el kilmetro por el que sale.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 56 de 120 - Existe una serie de reas en la que se agrupan los tramos, cada uno de los cuales no puede pertenecer a ms de un rea.
1. Seleccionar las tuplas para todos los empleados que trabajan en el departamento 1 y ganan ms de $ 2000 o trabajan en el departamento 4 y ganan ms de $ 1000.
R (DNO=1 AND SALARIO>1000) OR ( DNO=4 AND SALARIO>1000) (EMPLEADO)
2. Listar el nombre, apellido y salario de todos los empleados que trabajan en el departamento 1 y ganan ms de $ 3000 o trabajan en el departamento 4 y ganan ms de $ 1000.
Alternativa 1.
R NOMBRE, APELLIDO, SALARIO((DNO=1 AND SALARIO>3000) OR ( DNO=4 AND SALARIO>1000) (EMPLEADO))
Alternativa 2.
TEMP (DNO=1 AND SALARIO>3000) OR ( DNO=4 AND SALARIO>1000) (EMPLEADO) R NOMBRE, APELLIDO, SALARIO (TEMP)
3. Listar todos los nombres, apellidos y salario de todos los empleados de sexo masculino, con salario mayor a $ 1500, renombrando los atributos en la tabla resultante como fname, lname y salary respectivamente.
TEMP (SEXO = M AND SALARIO > 1500)(EMPLEADO) R(FNAME, LNAME, SALARY) NOMBRE, APELLIDO, SALARIO(TEMP)
4. Recuperar la cedula de ciudadana de todos los empleados que cumplan cualquiera de las dos condiciones, trabajar en el departamento 5 o ser directamente supervisor de un empleado que trabaja en el departamento 5.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 57 de 120 EMP_DEP5 DNO = 5 (EMPLEADO) CONDICION1 CI(EMP_DEP5) CONDICION2 (CI) SUPERCI(EMP_DEP5) RESULTADO CONDICION1 CONDICION2
El desarrollo de este ejemplo se detalla a continuacin:
EMP_DEP5 NOMBRE INICIAL APELLIDO CI FECHA_N DIRECCIN SEXO SALARIO SUPERCI DNO Juan B Polo 123456789 3-mar-59 Sucre 7-12 M 3000 333445555 5 Humberto t Pons 333445555 25-dic-60 Bolvar 5-67 M 4000 888665555 5 Pablo K Castro 666884444 15-sep-55 Bolvar 1-50 M 3800 333445555 5 Marcia A Mora 453453453 29-mar-60 Colombia 4-23 F 2500 333445555 5
CONDICION1 CI 123456789 333445555 666884444 453453453
CONDICION2 CI 333445555 888665555
RESULTADO CI 123456789 333445555 666884444 453453453 888665555
5. Para cada empleado de sexo masculino, recuperar su nombre, apellido y el nombre de su dependiente.
Alternativa 1 (con producto cartesiano)
NOM_EMP NOMBRE, APELLIDO, CI ( SEXO = M (EMPLEADO)) EMP_DEP NOM_EMP CARGA_F RESULTADO1 CI = ECI (EMP_DEP) RESULTADO NOMBRE, APELLIDO, DEP_NOM(RESULTADO1)
Alternativa 2 (con join)
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 58 de 120 NOM_EMP NOMBRE, APELLIDO, CI ( SEXO = M (EMPLEADO)) RESULTADO1 NOM_EMP * CI = ECI CARGA_F RESUTADO COMBRE, APELLIDO, DEP_NOM(RESULTADO1)
6. Listar el nombre, apellido y CI de los empleados que trabajan en el departamento de compras
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 59 de 120 CAPITULO 4
EL LENGUAJE SQL
4.1 GENERALIDADES.
Los sistemas de bases de datos comerciales requieren de un lenguaje de consulta amigable para el usuario. Existen diferentes lenguajes comerciales como: SQL, QBE, QUEL.
QBE (QUERY-BY-EXAMPLE) est basado en el clculo relacional de dominio; QUEL est basado en el clculo relacional de tuplas y SQL (STRUCTURE QUERY LANGUAGE) usa una combinacin de construcciones del lgebra relacional y del clculo relacional.
En este captulo se hace referencia al lenguaje SQL, el mismo que est compuesto por comandos, clusulas, operadores y funciones de agregado (funciones de columna). Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las Bases de datos.
Comandos.
El SQL es un lenguaje de DBMS relacional que puede ser usado como lenguaje de manipulacin de datos. Existen cuatro postulados de SQL para realizar las funciones bsicas de manipulacin (DML) de datos:
Comando Descripcin SELECT Utilizado para operaciones de lectura, es decir consultas de tuplas de la base de datos que cumplan una condicin determinada. INSERT Se utiliza para insertar nuevas tuplas en una relacin. UPDATE Modifica valores de los campos. DELETE Elimina tuplas de una tabla.
Tambin sirve como lenguaje de definicin (DLL) de datos. Se emplea el SQL para crear las estructuras de datos; es decir, las relaciones en las que posteriormente se almacenarn las tuplas. Los postulados de SQL para este propsito son:
Comando Descripcin CREATE Define la estructura de una nueva tabla, campos e ndices. DROP Elimina una tabla. ALTER Utilizado para modificar las tablas, agregar campos o cambiar la definicin de los campos.
SQL tambin es til como lenguaje de control de acceso. Es utilizado para dar autoridad de acceso a los datos almacenados en las relaciones. Hay dos postulados de SQL que se encargan de ello. Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 60 de 120
Comando Descripcin GRANT Otorga autoridad de acceso a los usuarios. REVOKE Suprime autoridades de acceso a los usuarios.
Conviene aclarar que, por lo general, los mecanismos de autorizacin en los DBMS son muy sofisticados y suelen ir mucho ms all que la simple autorizacin de acceso a datos.
Clusulas
Las clusulas son condiciones de modificacin utilizadas para definir los datos que se desea seleccionar o manipular.
Clusula Descripcin FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros. WHERE Utilizada para especificar las condiciones que debe reunir los registros que se van a seleccionar. GROUP BY Utilizada para separar los registros seleccionados en grupos especficos. HAVING Utilizada para expresar la condicin que debe satisfacer cada grupo. ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un orden especfico.
Operadores Lgicos
Operador Uso AND Es el y lgico. Evala dos condiciones y devuelve un valor de verdad slo si ambas son ciertas. OR Es el o lgico. Evala dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta. NOT Negacin lgica. Devuelve el valor contrario de la expresin.
Operadores de Comparacin Operador Uso < Menor que. > Mayor que. <> Distinto. <= Menor igual que. >= Mayor igual que. = Igual que. BETWEEN Utilizado para especificar un intervalo de valores. LIKE Utilizado en la comparacin de un modelo. IN Utilizado para especificar registros de una Base de Datos. Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 61 de 120
Funciones de Agregado
Las funciones de agregado se usan dentro de una clusula SELECT en grupos de registros, para devolver un nico valor que se aplica a un grupo de registros.
Funcin Descripcin AVG Calcula el promedio de los valores de un campo determinado COUNT Calcula el nmero de registros de la seleccin. SUM Calcula la suma de todos los valores de un campo determinado. MAX Devuelve el valor ms alto de un campo determinado. MIN Devuelve el valor ms bajo de un campo determinado.
4.2 CONSULTAS DE UNA TABLA.
La instruccin SELECT, permite manipular los datos contenidos en una tabla para responder a los diversos tipos de preguntas que pueden presentarse, y de esta manera explotar la informacin que est registrada en forma relacional.
Formato:
SELECT [ALL, DISTINCT] <lista de atributos> FROM <nombre de la tabla> WHERE <condicin> GROUP BY <nombre de la columna> HAVING <condicin de bsqueda> ORDER BY <nombre de columna> ASC, DECS.
SQL Interactivo Consulta
Resultado de la consulta AUTOR GENERO Hugo Teatro Hugo Poesa Balzac Romana Dumas Teatro
Consulta SQL programado
Estructura tabular de los resultados de una consulta SQL SELECT AUTOR, GENERO FROM LIBROS ........................... PROGRAMA DBMS BD Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 62 de 120
4.2.1 SELECCIN SIMPLE
SELECT *
El primer operando que sigue al SELECT es el carcter *. Este significa el ensamble de columnas de la tabla, presentadas en el mismo orden que el de la definicin de la tabla al momento de la creacin.
SELECT * FROM LIBROS;
AUTOR TITULO AO GENERO PRECIO HUGO HERNANI 1830 TEATRO 120.000 HUGO LAS CONTEMPLACIONES 1856 POESIA 78.500 HUGO LOS MISERABLES 1862 ROMANA 148.500 BALZAC EUGENIA GRANDET 1833 ROMANA 100.000 BALZAC PAP GORIOT 1834 ROMANA DUMAS LOS TRES MOSQUETEROS 1844 ROMANA 80.000 DUMAS VEINTE AOS DESPUES 1845 ROMANA 80.000 DUMAS LA DAMA DE LAS CAMELIAS 1852 TEATRO 110.000 STENDHAL ROJO Y NEGRO 1831 ROMANA 98.500 STENDHAL LA CARTUJA DE PARMA 1839 ROMANA 110.500 FLAUBERT MADAME BOVARY 1857 ROMANA 99.500 VERLAINE POEMAS SATURNIANOS 1866 POESIA 90.500
Tabla LIBROS
SELECT con expresin.
Una o varias expresiones pueden seguir a la palabra SELECT.
SELECT columna_1 * columna_2 FROM nombre_tabla
SELECT (col_1 * 1.25) / (col_2 * col_3) FROM nombre_tabla
SELECT con una o varias columnas
La expresin ms simple, que contiene nicamente las columnas especificadas
SELECT TITULO FROM LIBROS
SELECT AO, TITULO FROM LIBROS
SELECT con valores calculados
Esta consulta se ilustra con el siguiente ejemplo: Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 63 de 120
Listar el ttulo y el precio con un incremento del 20% de cada obra de la tabla libros.
SELECT TITULO, Precio: , PRECIO*1.2, Sucres FROM LIBROS
HERNANI Precio : 144000 Sucres LAS CONTEMPLACIONES Precio : 94200 Sucres LOS MISERABLES Precio : 178200 Sucres EUGENIA GRANDET Precio : 120000 Sucres PAP GORIOT Precio : 0 Sucres LOS TRES MOSQUETEROS Precio : 96000 Sucres VEINTE AOS DESPUES Precio : 96000 Sucres LA DAMA DE LAS CAMELIAS Precio : 132000 Sucres ROJO Y NEGRO Precio : 118200 Sucres LA CARTUJA DE PARMA Precio : 132600 Sucres MADAME BOVARY Precio : 119400 Sucres POEMAS SATURNIES Precio : 108600 Sucres
La opcin DISTINCT, permite seleccionar un ejemplar de cada lnea.
Ejemplo:
SELECT AUTOR FROM LIBROS; SELECT DISTINCT AUTOR FROM LIBROS
Los resultados para cada una de estas consultas son los siguientes:
AUTOR AUTOR HUGO BALZAC HUGO DUMAS HUGO FLAUBERT BALZAC HUGO BALZAC STENDHAL DUMAS VERLAINE DUMAS STENDHAL STENDHAL FLAUBERT VERLAINE
4.2.2 SELECCIN CONDICIONAL CON WHERE
El predicado de base es la forma ms simple de una condicin de bsqueda. Est constituida de dos expresiones compatibles, separadas por un operador de comparacin (=, <=, >=, <, >, <>). Los resultados del predicado pueden ser Verdadero (v), Falso (f) o Desconocido (d), este ltimo caso se obtiene si una de las dos expresiones tiene un valor nulo. Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 64 de 120 Las condiciones de bsqueda atan uno a ms predicados, separados por los operadores lgicos AND, OR y NOT.
Valores de la tabla de verdad de los operadores lgicos:
X Y NOT X X AND Y X OR Y V V F V V V F F F V V D F D V F V V F V F F V F F F D V F D D V D D V D F D F D D D D D D
SQL ofrece un conjunto de condiciones de bsqueda, permitiendo elaborar diferentes tipos de consultas:
4.2.2.1 Test de Comparacin:
Compara el valor de una expresin con el valor de otra.
Ejemplos:
- Busque en la tabla LIBROS el ttulo y gnero de todos los libros escritos por DUMAS.
SELECT TITULO, GENERO FROM LIBROS WHERE AUTOR = DUMAS
- Busque en la tabla LIBROS, los datos concernientes a las obras no escritas por DUMAS y posteriores a 1835.
SELECT * FROM LIBROS WHERE NOT (AUTOR = DUMAS) AND AO > 1835;
- Busque en la tabla LIBROS el ttulo, ao, gnero y precio de las obras en donde el precio es menor a $ 100.000 o superior a $ 135000.
SELECT TITULO, AO, GENERO, PRECIO FROM LIBROS WHERE PRECIO < 100000 OR PRECIO > 135000;
Cuando la columna de comparacin es una clave primaria, el test asla una sola fila de la tabla, produciendo una sola fila de resultado.
4.2.2.2 Test de rango (BETWEEN)
Determina si el valor de una expresin cae dentro de un rango especfico de valores. Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 65 de 120
El predicado BETWEEN permite buscar un valor a partir de dos expresiones enmarcadas mediante la palabra AND.
X BETWEEN Y AND Z es equivalente a (X >= Y) AND (X <= Z)
La versin negada del test de rango (NOT BETWEEN) comprueba los valores que caen fuera del rango.
Ejemplo:
Liste el nombre y el lugar de nacimiento de todos los autores nacidos entre 1802 y 1850.
SELECT AUTOR, LUGAR FROM AUTORES WHERE FE_NE BETWEEN 1802 AND 1805;
4.2.2.3 Test de pertenencia a conjunto
El predicado IN examina si un valor coincide con uno de una lista de valores determinados explcitamente por enumeracin o implcitamente por una subconsulta.
La condicin: A IN (X, Y, Z ) es equivalente a:
(A = X) OR (A = Y) OR (A = Z)
Ejemplo:
- Listar el autor, ttulo y el ao de las obras de la tabla LIBROS escritas en 1839, 1866 o 1857.
SELECT AUTOR , TITULO, AO FROM LIBROS WHERE AO IN (1839, 1866, 1857)
4.2.2.4 Test de correspondencia con patrn
Se utiliza para comparar una expresin de cadena, con un modelo en una expresin SQL.
Caracteres comodines:
(%) se corresponde con cualquier secuencia de dos a ms caracteres.
(_) Se corresponde con cualquier carcter simple.
Ejemplo: Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 66 de 120
- Liste los ttulos de las obras de la tabla LIBROS que compongan la cadena DAM en el ttulo.
SELECT TITULO FROM LIBROS WHERE TITULO LIKE %DAM%
4.2.2.5 Test de valor nulo
El predicado NULL permite verificar el o los valores nulos contenidos en una columna.
La forma negativa del test de valor nulo (IS NOT NULL), encuentra la filas que no contiene un valor NULL.
Ejemplo:
Liste el autor y el ttulo de las obras donde no se conoce el precio.
SELECT AUTOR, TITULO FROM LIBROS WHERE PRECIO IS NULL
4.2.3 LAS OPCIONES GROUP BY Y HAVING.
GROUP BY
La opcin GROUP BY es seguida del nombre de una o varias columnas llamadas columnas de agrupamiento. Las lneas donde el contenido de las columnas de agrupamiento son idnticas forman un grupo.
Ejemplo:
Liste agrupados por gnero y autor, los datos de autor y gnero de la tabla LIBROS.
SELECT AUTOR, GENERO FROM LIBROS GROUP BY AUTOR, GENERO;
Como resultado de esta consulta se obtiene los siguientes datos:
AUTOR GENERO BALZAC ROMANA DUMAS ROMANA DUMAS TEATRO FLAUBERT ROMANA HUGO POESIA HUGO ROMANA HUGO TEATRO STENDHAL ROMANA VERLAINE POESIA Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 67 de 120
HAVING
La opcin HAVING, permite aplicar una condicin de bsqueda a los grupos de datos definidos por la opcin GROUP BY. No confundir las operaciones WHERE y HAVING. WHERE permite seleccionar una lnea antes de formar los grupos, en tanto que HAVING selecciona cuando los grupos han sido formados por GROUP BY.
Ejemplo:
Liste reagrupando por autor y gnero, los datos relativos a autor y gnero de obras de la tabla LIBROS, eliminando las de gnero poesa.
SELECT AUTOR, GENERO FROM LIBROS GROUP BYAUTOR, GENERO HAVING GENERO <> POESIA;
4.2.4 LA OPCIN ORDER BY.
Las filas de la tabla resultante pueden ser ordenadas por los valores de una o ms columnas. Podemos especificar que la secuencia sea creciente (ASC) o decreciente (DESC).
Ejemplo:
Liste el autor, el ttulo, y el ao de las obras de la tabla LIBROS, ordenada cronolgicamente.
SELECT AUTOR, TITULO, AO FROM LIBROS ORDER BYAO;
Es posible en la opcin ORDER BY colocar el nmero de la posicin en el SELECT de la columna que deseamos ordenar.
SELECT AUTOR, TITULO, AO FROM LIBROS ORDER BY3;
4.3 LA OPCIN UNION (UNION ALL)
La operacin UNION permite definir una tabla resultante a partir de la combinacin de los resultados de dos o ms consultas o tablas independientes.
Restricciones:
Ambas tablas deben tener el mismo nmero de columnas.
El tipo de dato de cada columna en la primera tabla debe ser el mismo que el tipo de dato de la columna correspondiente en la segunda tabla. Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 68 de 120
Ninguna tabla puede estar ordenada con la sentencia ORDER BY, sin embargo, el resultado de la consulta UNION, puede ser ordenado con la utilizacin de la clusula ORDER BY al final de la ltima consulta SELECT.
Las columnas resultado no son nombradas.
Si se utiliza la opcin UNION ALL, la tabla resultante contiene todas las lneas provenientes de cada SELECT. En la opcin UNION, las lneas repetidas son eliminadas.
Ejemplo:
AUTOR FE_NA LUGAR SALA ESTANTE HUGO 1802 BESANCON 2 3 BALZAC 1799 TOURS 1 1 DUMAS 1802 VILLERS 1 1 DUMAS 1824 PARIS 1 1 STENDHAL 1783 GRENOBLE 3 5 FLAUBERT 1821 ROUEN 1 2 VERLAINE 1844 METZ 3 6 ZOLA 1840 PARIS 3 6 RIMBAUD 1854 CHARLEVILLE 3 5 SAND 1804 PARIS 3 5
Tabla AUTORES
Liste el ensamble de autores que se encuentran en la tabla LIBROS y que hayan escrito una obra antes de 1835, o figuran en la tabla AUTORES y nacidos despus de 1850.
SELECT AUTOR FROM LIBROS WHERE AO < 1835 UNION SELECT AUTOR FROM AUTORES WHERE FE_NA > 1850;
Resultado:
BALZAC HUGO RIMBAUD STENDHAL
El desarrollo del ejemplo anterior se describe en la siguiente figura:
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 69 de 120
Tabla LIBROS
AO > 1835
Resultado
Tabla AUTORES
FE_NA > 1850
La operacin unin puede ser utilizada repetidamente para combinar tres o ms conjuntos de resultados:
SELECT * FROM A UNION (SELECT * FROM B UNION SELECT * FROM C)
4.4 CONSULTAS MULTITABLA
SQL permite consultar datos procedentes de dos o ms tablas de la Base de Datos. Para ilustrar con ejemplos este tipo de consultas, utilizaremos el modelo de la compaa detallado en el captulo 2.
AUTOR HUGO BALZAC BALZAC STENDHAL BALZAC HUGO STENDHAL RIMBAUD AUTOR BALZAC STENDHAL RIMBAUD UNION Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 70 de 120 Esquema de la Base de datos relacional de la COMPAIA
EMPLEADO NOMBRE APELLIDO CI FECHA_N DIRECCIN SEXO SALARIO SUPERCI DNO
DEPARTAMENTO DNOMBRE DNUMERO JEFECI JEFE_FI
LOCALIZACION DNUMERO DEP_LOCA
TRABAJA EN ECI PNO HORAS
PROYECTO PNOMBRE PNUMERO PLOCAL DNUM
CARGA_F ECI DEP_NOM SEXO FECHAN_N RELACION
El Proceso de formar parejas de fila haciendo coincidir los contenidos de las columnas relacionadas se denomina componer (joining) las tablas. La tabla resultante que contiene datos de las dos tablas basadas en una coincidencia exacta entre dos columnas se denomina equicomposicin.
4.4.1 CONSULTAS PADRE/HIJO
Las claves forneas y las claves primarias crean relaciones padre/hijo en una base de datos. Partiendo de este concepto las consultas multitabla ms comunes implican a dos tablas que tienen esta relacin.
Ejemplo:
Listar cada uno de los empleados y el nombre del departamento donde trabajan.
SELECT NOMBRE, APELLIDO, DNOMBRE FROM EMPLEADO, DEPARTAMENTO WHERE DNO = DNUMBER
Cada empleado (hijo) tiene un departamento (padre) asociado y cada departamento (padre) puede tener muchos empleados (hijos) asociados. Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 71 de 120
La columna DNO de la tabla EMPLEADO, es una clave fornea correspondiente a la columna DNUMERO (clave primaria) de la tabla DEPARTAMENTO.
Listar el nombre y apellido de los jefes departamentales.
SELECT NOMBRE, APELLIDO FROM EMPLEADO, DEPARTAMENTO WHERE CI = JEFECI
4.4.2 COMPOSICIONES CON CRITERIO DE SELECCIN DE FILA.
La condicin de bsqueda que especifica las columnas de emparejamiento en una consulta multitabla, pueden combinarse con otras condiciones de bsqueda para restringir an ms los contenidos del resultado.
Ejemplo:
Listar el nombre y apellido del jefe del departamento administrativo.
SELECT NOMBRE, APELLIDO FROM EMPLEADOS, DEPARTAMENTO WHERE DNO = DNUMERO AND DNOMBRE = Administrativo
Listar los nombres de los dependientes del empleado Juan Polo.
SELECT DEP_NOM FROM EMPLEADOS, CARGAS_F WHERE CI = ECI AND NOMBRE = Juan AND APELLIDO = Polo
4.4.3 CONSULTAS DE TRES O MAS TABLAS
Con la misma tcnica que utiliza SQL para combinar dos tablas, es posible combinar tres o ms tablas.
Ejemplo:
Listar los nombres de los dependientes de todos los empleados que trabajan en el departamento de investigacin.
SELECT NOMBRE, APELLIDO, DEP_NOM FROM EMPLEADOS, DEPARTAMENTO, CARGAS_F WHERE DNOMBRE = Investigacin AND DNUMERO = DNO AND CI = ECI
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 72 de 120 4.4.4 OTRAS COMPOSICIONES
La mayor parte de consultas entre mltiples tablas se realizan en relaciones de padre/hijo, sin embargo, SQL no exige que las columnas de emparejamiento sean necesariamente llaves primarias o llaves forneas. Cualquier tipo de columnas pueden servir como columnas de emparejamiento, siempre que tengan tipos de datos comparables.
Las comparaciones ms habituales son aquellas basadas en la igualdad de dos columnas (equicomposiciones), sin embargo, SQL permite componer tablas basndose en otros operadores de comparacin.
4.4.5 CONSULTAS DE COLUMNAS CUALIFICADAS.
Si una sentencia en SQL afecta a dos columnas con el mismo nombre correspondiente a dos tablas diferentes, debe utilizarse un nombre de columna cualificado para identificar sin ambigedad la columna designada. Un nombre de columna cualificado especifica tanto el nombre de la tabla que contiene la columna, como el nombre de la columna separados por un punto (.). Por ejemplo: la columna de nombre SEXO de la tabla EMPLEADO tiene el nombre de columna cualificado:
EMPLEADO . SEXO
Ejemplo:
Mostar el sexo de los empleados que tienen dependiente.
SELECT NOMBRE, APELLIDO, EMPLEADO.SEXO FROM EMPLEADOS, CARGAS_F WHERE CI = ECI
4.4.6 SELECCIN DE TODAS LAS COLUMNAS.
En una consulta multitabla, el asterisco (*) selecciona todas las columnas de todas las tablas seleccionadas en la clusula FROM.
Ejemplo: Recuperar todos los datos de los empleados que trabajan en el departamento de Investigacin, incluyendo todos los atributos del departamento.
SELECT * FROM EMPLEADO, DEPARTAMENTO WHERE DNO = DNUMERO AND DNOMBRE = Investigacin
Especificar el Producto Cartesiano de las relaciones EMPLEADO Y DEPARTAMENTO.
SELECT * FROM EMPLEADO, DEPARTAMENTO Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 73 de 120
4.4.7 AUTOCOMPOSICIONES.
Algunas consultas multitabla afectan a una relacin que una tabla tiene consigo misma, es decir cuando se cuenta con una relacin recursiva.
Ejemplo:
Para cada empleado, recuperar su nombre y apellido y el nombre y apellido de su inmediato supervisor.
SELECT EMP.NOMBRE, EMP.APELLIDO, SUP.NOMBRE, SUP.APELLIDO FROM EMPLEADO EMP SUP WHERE EMP.SUPERCI = SUP.CI.
En este caso hemos creado tabas alternativas EMP y SUP de la tabla EMPLEADO llamadas alias. Estas tablas se crean en la clusula FROM, separadas con espacio en blanco y no con coma. EMP y SUP son copias de la tabla EMPLEADO, la primera EMP representa los empleados y el rol de supervisados y la segunda SUP representa los empleados y el rol de supervisor. Una vez creadas las tablas alias podemos hacer la combinacin de las dos.
4.5 FUNCIONES DE COLUMNA
Una funcin de columna reenva un valor nico dependiendo de la aplicacin de la funcin sobre la expresin o del contenido de la columnas que se especifica entre parntesis FUNCIN(expresin).
Si aplicamos funciones de columna en un SELECT sin la clusula GROUP BY, el resultado que obtendremos ser una lnea de valores. Si el SELECT esta conformado por la clusula GROUP BY, la funcin de columna es aplicada a cada uno de los grupos, por lo tanto se obtendr un valor por cada grupo distinto de valores. A este tipo de consultas se los denomina Consultas Agrupadas., y las columnas indicadas en la clusula GROUP BY se denominan Columnas de agrupacin.
SQL cuenta con seis funciones de columna diferentes:
4.5.1 LA FUNCIN AVG()
Calcula la media aritmtica de un conjunto de valores contenidos en un campo especfico de una consulta. Los datos de la columna deben ser de tipo numrico.
Su sintaxis es :
Avg(exp)
Ejemplo: Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 74 de 120
Calcular el salario promedio de todos los trabajadores
SELECT AVG(SALARIO) FROM EMPLEADO
Como resultado obtenemos:
AVG(SALARIO) 3512.5
Calcular para cada uno de los departamentos el salario promedio de sus empleados.
SELECT DNO, AVG(SALARIO) FROM EMPLEADO GROUP BY DNO
Como resultado obtenemos:
DNO AVG(SALARIO) 5 3325 4 3100 1 5500
4.5.2 FUNCIN SUM()
Devuelve la suma del conjunto de valores contenido en un campo especfico de una consulta.
Su sintaxis es:
Sum(expresin)
En donde expresin representa el nombre del campo que contiene los datos que desean sumarse o una expresin que realiza un clculo utilizando los datos de dichos campos.
Ejemplo:
Calcular la suma total del salario de los empleados.
SELECT SUM(SALARIO) FROM EMPLEADOS
Como resultado obtenemos:
SUM(SALARIO) 28100 Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 75 de 120
Calcular la suma total del salario de los empleados por departamento.
SELECT DNO, SUM(SALARIO) FROM EMPLEADO GROUP BY DNO
Como resultado obtenemos:
DNO SUM(SALARIO) 5 13300 4 9300 1 5500
4.5.3 FUNCIN MAX Y MIN
Devuelve el mximo o el mnimo de un conjunto de valores contenidos en un campo especfico de una consulta.
Su sintaxis es:
Min(exp), Max (exp)
En donde exp es el campo de una tabla sobre el que se desea realizar el clculo.
Para el empleado que gana el mximo salario, mostrar su nombre y el salario.
SELECT NOMBRE, MAX(SALARIO) FROM EMPLEADO
Resultado:
NOMBRE MAX(SALARIO) Jaime 5500
Para cada departamento, mostrar el mnimo salario de los empleados.
SELECT DNO, MIN(SALARIO) FROM EMPLEADO GROUP BY DNO
4.5.4 FUNCIN COUNT()
Cuenta el nmero de valores de datos que hay en una columna.
Su sintaxis es:
Count(exp) Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 76 de 120
Donde exp contiene el nombre del campo que deseamos contar. Puede contar cualquier tipo de dato incluso texto. Count cuenta el nmero de registros sin tener en cuenta el valor que est almacenado. No cuenta los registros que tienen campos nulos a menos que exp sea un carcter comodn asterisco (*).
Ejemplo:
Calcular el nmero total de departamentos.
SELECT COUNT(DNUMERO) FROM DEPARTAMENTO
Calcular el nmero total de empleados por departamento.
SELECT DNO, COUNT(CI) FROM EMPLEADO GROUP BY DNO
Determinar el nmero de empleados que ganan ms de $ 3000.
SELECT COUNT(CI) FROM EMPLEADO WHERE SALARIO > 3000
4.5.5 FUNCIN COUNT(*)
Proporciona como resultado el nmero de lneas de una tabla o de un grupo de lneas luego de aplicar una condicin de seleccin.
Ejemplo:
Calcular el nmero de empleados de sexo masculino.
SELECT COUNT(*) FROM EMPLEADO WHERE SEXO = M
Resultado:
COUNT(*) 5
La siguiente instruccin generar el mismo resultado:
SELECT COUNT(CI) FROM EMPLEADO WHERE SEXO = M
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 77 de 120 4.5.6 FUNCIN DE COLUMNAS CON LA PALABRA CLAVE DISTINCT
Para eliminar valores duplicados, es necesario incluir la palabra clave DISTINCT delante del argumento de la funcin de columna inmediatamente despus del parntesis abierto.
Para aplicar DISTINCT, la expresin de la funcin debe ser un simple nombre de columna.
El estndar de SQL permite utilizar la palabra clave DISTINCT para las funciones de SUM(), AVG() y COUNT(). No permite el DISTINCT para las funciones de MAX() y MIN(), puesto que, no tiene impacto en su resultado.
La palabra clave DISTINCT no puede ser usada con la funcin COUNT(*), ya que sta no trata con una columna de datos sino que simplemente cuenta filas.
Ejemplo:
Determinar los salarios distintos de los empleados.
SELECT COUNT (DISTINCT SALARIO) FROM EMPLEADO
4.5.7 FUNCIONES DE COLUMNA CON VALORES NULOS
El estndar de SQL especifica que los valores NULL de la columna deben ser ignorados para las funciones de columna. Esta especificacin se muestra en los siguientes ejemplos:
Ejemplo:
SELECT COUNT(*), COUNT(CI), COUNT(SUPERCI) FROM EMPLEADO
Resultado:
COUNT(*) COUNT(CI) COUNT(SUPERCI) 8 8 7
En funcin de la tabla T, calcular la siguiente consulta.
T A B 3 1 5 NULL 2 2 1 1 4 1 Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 78 de 120
SELECT SUM(A), SUM(B), (SUM(B) - SUM(B), SUM(A B) FROM T
Resultado:
SUM(A) SUM(B) SUM(A) SUM(B) SUM(A-B) 15 5 10 5
El estndar especifica las siguientes reglas para gestionar las funciones de columna con valores NULL.
Si algn valor de datos de una columna es NULL, se ignora para el propsito de calcular el valor de la funcin de columna.
Si todos los datos de una columna son NULL, las funciones SUM(), AVG(), MIN() y MAX(), devuelven un valor NULL; la funcin COUNT() devuelve cero.
Si no hay datos en la columna (vaca), las funciones SUM(), AVG(), MIN() Y MAX() devuelven un valor cero.
La funcin COUNT(*) cuenta filas, y no depende de la presencia o ausencia de valores NULL en la columna; sin no hay filas devuelve un valor de cero.
Los gestores de bases de datos comerciales pueden producir resultados diferentes a los especificados por el estndar.
4.5.8 CONDICIONES DE BSQUEDA DE GRUPOS (HAVING)
La clusula HAVING puede ser utilizada para seleccionar y rechazar grupos de filas, es decir, especifica una condicin de bsqueda para grupos.
Ejemplo:
Listar la CI de los empleados que tengan ms de un dependiente.
SELECT ECI FROM CARGAS_F GROUP BY ECI HAVING COUNT(*) > 1
Para todos los empleados que han trabajado ms de 30 horas, listar su cdula de identidad, nombre y nmero de horas trabajadas.
SELECT ECI, NOMBRE, SUM(HORAS) FROM TRABAJA_EN, EMPLEADOS WHERE CI = ECI GROUP BY ECI HAVING SUM(HORAS) > 30 Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 79 de 120
4.6 SUBCONSULTAS
SQL tiene la caracterstica de permitir utilizar el resultado de una consulta como parte de otra, a esta caracterstica se lo denomina Subconsulta. Una subconsulta aparece dentro de la clusula WHERE o HAVING de otra sentencia SQL. Con la clusula WHERE se seleccionan las filas individuales que aparecen en los resultados de la consulta, en tanto que, con la clusula HAVING ayuda a seleccionar los grupos de filas que aparecen en los resultados de la consulta.
Existen algunas diferencias entre una subconsulta y una sentencia SELECT real:
Una subconsuta produce una nica columna de datos como resultado, esto significa que tiene un nico elemento de seleccin.
La clusula ORDER BY no puede ser especificada en una subconsulta.
Una subconsulta no puede ser la UNION de varias sentencias SELECT diferentes; slo se permite una nica sentencia SELECT.
Los nombres de columnas que aparecen en una subconsulta pueden referirse a columnas de tablas de la consulta principal. A esta referencia se lo denomina Referencia Externa.
4.6.1 CONDICIONES DE BSQUEDA EN UNA SUBCONSULTA.
SQL proporciona las siguientes condiciones de bsqueda en una subconsulta.
4.6.1.1 Test de comparacin subconsulta. (=, <>, <,<=, >, >=)
Este test compara el valor de una expresin con el valor producido por una subconsulta, y devuelve un resultado verdadero (TRUE) si la comparacin es cierta.
Formato:
------- expresin ----- operador de comparacin ---- ( Subconsulta )
El resultado de la subconsulta produce un nico valor que ser comparado con un valor de la fila que est siendo examinada en la consulta principal. Si la subconsuta produce ms de una fila como resultado, SQL informa de una condicin de error.
Si la subconsulta no produce filas o produce un valor NULL, el test de comparacin devuelve NULL.
Ejemplo: Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 80 de 120
Listar el nombre y apellido de los empleados que trabajan en el departamento Administrativo.
SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE DNO = (SELECT DNUMERO FROM DEPARTAMENTO WHERE DNOMBRE = Administrativo
En este ejemplo el resultado de la subconsulta es 4, valor que corresponde al nmero del departamento Administrativo. Este resultado de 4 ser comparado con cada uno de los valores de la columna DNO de la tabla EMPLEADOS, devolviendo verdadero (TRUE) si la comparacin es cierta.
Listar los nombres de los proyecto controlados por el departamento de Investigacin.
SELECT PNOMBRE FROM PROYECTO WHERE DNUM = (SELECT DNUMERO FROM DEPARTAMENTO WHERE DNOMBRE = Investigacin
Listar los nombres de los dependientes del empleado Humberto Pons.
SELECT DEP_NOM FROM CAGAS_F WHERE ECI = (SELECT CI FROM EMPLEADO WHERE NOMBRE = Humberto AND APELLIDO = Pons)
4.6.1.2 Test de pertenencia a subconjunto IN
Este test se emplea para recuperar nicamente aquellos registros de la consulta principal para los que algunos registros de la subconsulta contienen un valor igual.
Compara un nico valor de datos con una columna de valores producida por una subconsulta y devuelve un resultado verdadero (TRUE) si el valor coincide con uno de los valores de la columna.
Inversamente se puede utilizar NOT IN para recuperar nicamente aquellos registros de la consulta principal para los que no hay ningn registro de la subconsulta que contenga un valor igual.
Ejemplo:
Recuperar el nombre de los empleados que tienen dependientes con el mismo sexo. Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 81 de 120
SELECT NOMBRE FROM EMPLEADOS EMP WHERE CI IN (SELECT ECI FROM CARGAS_F WHERE ECI = EMP.CI AND SEXO = EMP .SEXO)
Recuperar el nombre de todos los empleados que trabajan en el proyecto Computadora.
SELECT NOMBRE FROM EMPLEADOS WHERE CI IN (SELECT ECI FROM TRABAJA _EN, PROYECTO WHERE PNOMBRE = Computadoras AND PNUMERO = PNO)
4.6.1.3 Test de existencia (EXISTS)
El test de existencia EXISTS (con la palabra reservada NOT opcional) se utiliza en comparaciones de verdadero / falso, para determinar si la subconsulta devuelve algn registro. Si la subconsulta produce filas, el test de EXISTS es TRUE, y si no produce filas, el test de EXISTS es FALSE.
En este test, SQL permite utilizar la forma SELECT * en razn de que la condicin de bsqueda EXISTS no utiliza realmente los resultados de la subconsulta. En la prctica siempre se utiliza la notacin SELECT *.
El test de existencia EXISTS se utiliza slo con subconsultas.
Ejemplos:
Recuperar el nombre de los empleados que tiene dependiente.
SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE EXISTS (SELECT * FROM CARGAS_F WHERE CI = ECI)
En este ejemplo, la subconsulta incluye una Referencia Externa a una columna de la tabla de la consulta principal. En la subconsulta, la columna CI referencia a la tabla EMPLEADOS de la consulta principal. Una Referencia Externa es un nombre de columna que no se refiere a ninguna de las tablas designadas en la clusula FROM de la subconsulta en la cual aparece el nombre de la columna, en vez de ello, el nombre de la columna se refiere a una columna de una tabla especfica en la tabla FROM de la consulta principal.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 82 de 120 En la prctica, la subconsulta de un test EXISTS siempre contiene una referencia externa que enlaza la subconsulta a la fila que actualmente est siendo examinada por la consulta principal.
Listar el nombre de los departamentos en donde los empleados ganan ms de $ 3000.
SELECT DNOMBRE FROM DEPARTAMENTOS WHERE EXISTS( SELECT * FROM EMPLEADO WHERE SALARIO > 3000 AND DNO = DNUMERO)
4.6.1.4 Test cuantificados (ANY y ALL)
El test ANY se utiliza para recuperar filas de la consulta principal que satisfagan la comparacin con cualquier otra fila recuperada en la subconsulta. Los operadores de comparacin que se utilizan para el test ANY son ( = , <>, <, >, <=, >=).
Si alguna de las comparaciones individuales produce un resultado TRUE, el test ANY devuelve un resultado TRUE.
En la instruccin WHERE X < ANY (SELECT Y .......) el test puede leerse de la siguiente manera:
en donde, para algn Y, X es menor que Y
Por ejemplo: si X = 1000 y la subconsulta genera una columna Y con los siguientes valores: 600, 500, 1200, 800, el resultado del ANY es TRUE, puesto que, existe al menos un valor (1200) que cumple la condicin.
WHERE X < ANY Y
<
Ejemplo:
Listar el nombre de los empleados que tienen dependiente
SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE CI = ANY (SELECT ECI FROM CARGA_F)
1000 600 500 1200 800 Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 83 de 120 El test ALL, se utiliza para recuperar nicamente filas de la consulta principal que satisfacen la comparacin con todas las filas recuperadas en la subconsulta. Los operadores de comparacin que se utilizan para el test ALL son ( = , <>, <, >, <=, >=).
Si todas las comparaciones individuales producen un resultado TRUE, el test ALL devuelve un resultado TRUE.
En la instruccin WHERE X < ALL (SELECT Y .......) el test puede leerse de la siguiente manera:
donde, para todo Y, X es menor que Y
Por ejemplo: si X = 1000 y la subconsulta genera una columna Y con los siguientes valores: 600, 500, 1200, 800, el resultado del ALL es FALSE, al existir valores que no cumplen con la condicin.
WHERE X < ALL Y
<
Ejemplo.
Listar el nombre de los empleados que por cada proyecto han trabajado ms horas que las trabajadas por los empleados en el proyecto 30.
SELECT NOMBRE, APELLIDO FROM EMPLEADO, TRABAJA_EN WHERE CI = ECI AND HORAS > ALL (SELECT HORAS FROM TRABAJA_EN WHERE PNO = 30)
4.7 BUSQUEDAS ANIDADAS
Del mismo modo que se puede utilizar una subconsulta dentro de una consulta principal, se puede utilizar subconsultas dentro de otra subconsulta. A este tipo de consultas de ms de dos niveles se las denomina Subconsultas Anidadas.
SELECT ......... WHERE ............ (SELECT......... WHERE ............(SELECT........... WHERE .................))
Determinar los proyectos en donde trabajan empleados que tienen dependientes Cnyuges.
1000 600 500 1200 800 Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 84 de 120 SELECT PNOMBRE FROM PROYECTO WHERE PNUMERO IN (SELECT PNO FROM TRABAJA_EN WHERE ECI IN (SELECT ECI FROM CARGAS_F WHERE RELACIN = Cnyuge))
4.8 OPERACIONES DE ACTUALIZACIN DE LA BASE DE DATOS.
Denominadas tambin como consultas de accin y son las encargadas de aadir, borrar y modificar una fila. Las instrucciones que corresponden a estas acciones son: INSERT, DELETE y UPDATE.
Es necesario indicar que las operaciones de actualizacin pueden ser el origen de errores en la base de datos, si las tablas relacionales no son bien construidas, anlisis que se realizar en el siguiente captulo.
4.8.1 INSERT
Agrega una fila a una tabla. Se conoce como una consulta de datos aadidos.
A una fila se le considera como la unidad de datos ms pequea que puede aadirse a una base de datos relacional.
Esta instruccin puede ser de tres tipos:
Insertar una nica fila.
Para este caso la sintaxis es la siguiente:
INSERT INTO tabla (campo1, campo2, .. campo n) VALUES (valor 1, valor 2, valor n)
Esta consulta graba en el campo 1 el valor 1, en el campo 2 el valor 2 y as sucesivamente.
Consideraciones para esta instruccin:
- El INSERT se puede utilizar con SQL interactivo.
- Si se omite el nombre de una columna, SQL inserta NULL.
- Si se insertan todas las columnas de una tabla, se puede omitir el listado del nombre de las columnas en la sentencia INSERT. Al utilizarse esta alternativa, SQL genera automticamente todas las columnas de la tabla en secuencia de izquierda a derecha. En este caso si se quiere ingresar valores nulos se tendr que utilizar la palabra clave NULL. Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 85 de 120
Ejemplo:
Insertar un nuevo empleado con los siguientes datos:
Nombre: Pedro Apellido: Torres CI: 112233445 Fecha de nacimiento: 25/Feb/1967 Direccin: Vega Muoz 10-12 Sexo: Masculino Salario: 1000 Supervisor: 333445555 Departamento: Compras
INSERT INTO Tabla (campo 1, campo 2,.... , campoN) SELECT TablaOrigen.campo2, TablaOrigen.campo2, ................................... TablaOrigen.campoN). FROM TablaOrigen
En este caso se seleccionarn los campos 1, 2, .... N de la TablaOrigen y se grabarn en los campos 1, 2, .... N de la Tabla. La condicin SELECT puede incluir la clusula WHERE para filtrar las filas a copiar. Si la Tabla y TablaOrigen poseen la misma estructura, podemos simplificar la sintaxis a:
INSERT INTO Tabla SELECT TablaOrigen.* FROM TablaOrigen.
Ejemplo:
Copiar en la tabla EMPLEADO2, el nombre, apellido, ci y salario, de todos los empleado que ganan ms de $ 2000.
INSET INTO EMPLEADO2 (NOMBRE, APELLIDO. CI, SALARIO) SELECT (NOMBRE, APELLIDO, CI, SALARIO) FROM EMPLEADO WHERE SALARIO > 2000
La representacin grfica del desarrollo de esta consulta es la siguiente:
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 86 de 120
EMPLEADO CONSULTA
EMPLEADO2 Resultado de la Consulta
Restricciones (estndar SQL1)
o La consulta no puede contener una clusula ORDER BY.
o El resultado de la consulta debe contener el mismo nmero de columnas que hay en la lista de columnas de la sentencia INSERT y adems los tipos de datos deben ser compatibles columna a columna.
o La tabla destino no puede aparecer en la clusula FROM.
Carga Masiva
Los productos DBMS comerciales incluyen una capacidad de carga masiva que cargan los datos desde un archivo a una tabla a alta velocidad. El estndar SQL ANSI/ISO no considera esta funcin y suele ser suministrada como un programa de utilidad autnomo en lugar de formar parte del lenguaje SQL. La utilidad que cada vendedor suministra, dispone de un conjunto ligeramente diferente de caractersticas, funciones y rdenes.
4.8.2 DELETE
La sentencia DELETE elimina las filas seleccionadas de datos de una nica tabla. La clusula FROM especifica la tabla destino que contiene las filas. La clusula WHERE especifica qu filas de la tabla van a ser suprimidas. Esta instruccin elimina las filas completas, no es posible eliminar el contenido de algn campo en concreto.
Sus sintaxis es:
DELETE FROM tabla WHERE criterio
Ejemplos:
Eliminar a Jaime Prez de la base de datos. NOMBRE APELLIDO CI ............. SALARIO DNO
NOMBRE APELLIDO CI SALARIO
NOMBRE APELLIDO CI SALARIO
SELECT (NOMBRE, APELLIDO, CI, SALARIO FROM EMPLEADO WHERE SALARIO > 2000 Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 87 de 120
DELETE FROM EMPLEADO WHERE NOMBRE = Jaime AND APELLIDO = Prez
Suprimir todas las filas de la tabla departamento.
DELETE FROM DEPARTAMENTO
Se suprimen los datos de la tabla departamento, pero la tabla no es borrada.
Eliminar las cargas familiares del empleado Humberto Pons
DELETE FROM CARGA_F, EMPLEADO WHERE ECI = CI AND NOMBRE = Humberto AND APELLIDO = Pons
En esta instruccin las filas seleccionadas que se eliminarn, dependen de los datos contenidos en otras tablas. La instruccin anterior presenta un error, al especificarse ms de dos tablas en la clusula FROM
Para evitar estos inconvenientes es necesario utilizar subconsultas:
DELETE FROM CARGA_F WHERE ECI = (SELECT CI FROM EMPLEADO WHERE NOMBRE = Humberto AND APELLIDO = Pons
4.8.3 UPDATE
Esta instruccin cambia los valores de los campos de una tabla basndose en un criterio especificado.
UPDATE tabla SET Campo1=Valor1, Campo2=Valor2, ...., CampoN=ValorN WHERE Criterio;
Ejemplo:
Incrementar el salario en 10 % a los empleados que trabajan en el departamento Administrativo.
UPDATE EMPLEADOS SET SALARIO = SALARIO * 1.1 WHERE DNO = (SELECT DNUMERO FROM DEPARTAMENTO WHERE DNOMBRE = Administracin
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 88 de 120
4.9 INTEGRIDAD DE DATOS
Cuando los contenidos de una Base de Datos se modifica con las sentencias INSERT, DELETE, UPDATE, la integridad puede perderse. Con el propsito de preservar la consistencia y correccin de los datos almacenados , un DBMS relacional impone una o ms restricciones de integridad que pueden ser de varios tipos:
RESTRICCIONES DE INTEGRIDAD:
1. Datos requeridos : Ciertas columnas de una base de datos deben contener un valor de dato vlido en cada fila, es decir no se permite ausencia de valor o que contenga valores NULL.
Esta restriccin de integridad se declara cuando la tabla que contiene la columna se crea por primera vez mediante la restriccin NOT NULL, que se especifica en la sentencia CREATE TABLE.
2. Chequeo de validez: En una base de datos cada columna tiene un dominio, por ejemplo: utilizar nmeros mayores a 1000 para el registro del CODIGO en una tabla de estudiantes, o la columna EDAD de los empleados de una empresa debe estar en el rango de 20 a 45 aos. El gestor de bases de datos puede ser preparado para que se introduzcan datos vlidos para cada columna de acuerdo a su dominio y tipo. (chek)
3. Integridad de Entidad: La clave primaria de una tabla debe contener un valor nico para cada fila diferente a los valores de todas las filas restantes, caso contrario, la base de datos perder su integridad. Esta exigencia se denomina restriccin de integridad de entidad.
El DBMS comprueba automticamente la unicidad del valor de la clave primaria con cada sentencia INSERT y UPDATE.
En ciertas ocasiones resulta necesario que una columna que no es clave primaria de una tabla, contenga valores nicos en cada fila. Este requerimiento se obtiene con la restriccin de unicidad, que se declara mediante la restriccin UNIQUE de la sentencia CREATE TABLE.
Toda columna que forma parte de una clave primaria y toda columna designada con una restriccin de unicidad deben ser declaradas NOT NULL.
4. Integridad Referencial: Si una tabla R2 tiene una clave fornea correspondiente a la clave primaria de la tabla R1, todo valor de dicha clave fornea debe concordar con un valor de la clave primaria de R1 o ser nulo. En otros trminos, una clave fornea en una base de datos relacional, enlaza cada fila de la tabla hijo que contiene la clave fornea con la fila de la tabla padre que contiene el valor de la clave primaria correspondiente.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 89 de 120
EMPLEADO NOMBRE APELLIDO CI FECHA_N DIRECCIN SEXO SALARIO SUPERCI DNO Juan Polo 123456789 3-mar-59 Sucre 7-12 M 333445555 5 Humberto Pons 333445555 25-dic-60 Bolvar 5-67 M 888665555 5 Irma Vega 999887777 13-nov-50 P. Crdova 3-45 F 987654321 4 Elena Tapia 987654321 3-may-61 Ordez 7-29 F 888665555 4 Pablo Castro 666884444 15-sep-55 Bolvar 1-50 M 333445555 5 Marcia Mora 453453453 29-mar-60 Colombia 4-23 F 333445555 5 Manuel Bonilla 987987987 16-jul-58 B. Malo 1-10 M 987654321 4 Jaime Prez 888665555 5-abr-57 Sangurima 8-34 M null 1
Las columnas DNUMERO y DNO, crean una relacin padre/hijo entre las tablas DEPARTAMENTO Y EMPLEADO. Cada fila DEPARTAMENTO (padre) tiene cero (segn el caso) o ms filas EMPLEADO (hijo) con nombres de departamento coincidentes. Anlogamente, cada fila EMPLEADO (hijo) tiene exactamente una fila DEPARTAMENTO (padre) con un nmero de departamento coincidente.
Aparentemente no hay error, la base de datos mostrar que Juan Prez trabaja en el departamento nmero 6, aun cuando no existe el departamento 6 en la tabla DEPARTAMENTO. Sin embargo, la fila recin ingresada rompe la relacin padre/hijo entre las dos tablas. Este ejemplo demuestra que necesariamente el valor de la columna DNO debe ser forzado para que corresponda a algn valor de los que aparecen en la columna DNUMERO. Esta regla se conoce como restriccin de Integridad Referencial, que asegura la integridad de las relaciones padre/hijo creadas mediante claves forneas y claves primarias.
Problemas de integridad referencial:
La insercin de una nueva fila hijo: Cuando se inserta una nueva fila en la tabla EMPLEADO, su valor de la clave fornea DNO debe coincidir con uno de los valores de la clave primaria DNUMERO. Si el valor no coincide, la insercin de la fila corromper la base de datos, ya que habr un hijo sin un padre (un hurfano). El insertar una nueva fila en la tabla padre no representa problemas a la base de datos, porque simplemente se crear un padre sin hijos.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 90 de 120 La actualizacin de la clave fornea de una fila hijo: Si se modifica la clave fornea DNO mediante la sentencia UPDATE, el nuevo valor debe coincidir con un valor de la clave primaria DNUMERO de la tabla padre (DEPARTAMENTO), caso contrario la fila actualizada quedar hurfana.
La supresin de una fila padre: Si una fila de la tabla padre (DEPARTAMENTO) que tiene uno o varios hijos en la tabla EMPLEADOS se suprime, todas las filas de la tabla hijo quedarn hurfanas. Si se suprime una fila de la tabla hijo, esto no representa problema, pues el padre de esta fila tendr un hijo menos despus de la eliminacin.
Supongamos que se cierra el departamento Administrativo y deseamos eliminar la fila correspondiente; Qu sucedera con todos los empleados que trabajaban en este departamento?. Segn el caso se podra desear:
- Impedir que el departamento se elimine hasta que los empleados fueran reasignados.
- Suprimir automticamente a los tres empleados de la tabla EMPLEADO.
- Poner la columna DNO de los tres empleados a NULL, indicando que la asignacin del departamento es desconocida.
- Poner la columna DNO de los tres empleados a algn valor por defecto.
La actualizacin de la clave primaria en una fila padre. Para este caso, si el valor de la clave primaria en una tabla padre se modifica, todos los hijos actuales de esa fila quedarn hurfanos. En la prctica, esta restriccin no suele provocar problemas, ya que los valores de claves primarias casi nunca se modifican.
Reglas de supresin actualizacin:
Operacin restringida (RESTRICT): Borrar (DELETE) una fila o modificar (UPDATE) la clave primaria de una tabla que contiene la clave primaria referenciada, slo se permite, si no existen filas con dicha clave en la tabla que contiene la clave fornea. La operacin RESTRICT impide suprimir una fila o actualizar la clave primaria de la tabla padre si la fila tiene algn hijo. Ejemplo: Para borrar un departamento, no tendra que haber ningn empleado asignado a dicho departamento.
Operacin en cascada (CASCADE): El borrar o modificar una fila de la tabla que contiene la clave primaria referenciada, lleva consigo el borrado o modificado en cascada de las filas de la tabla que contiene la clave fornea. CASCADE le dice al DBMS que cuando una fila es borrada o se modifique la llave primaria de una tabla Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 91 de 120 padre, todas sus filas hijos tambin debern ser borradas o modificadas automticamente. Ejemplo: Al modificar el nmero de un departamento, modifica automticamente el nmero de departamento de todos los empleados asignados a ese departamento. Para el caso de eliminacin de un departamento, se suprime automticamente todos los empleados asignados a ese departamento.
Operacin de puesta a nulos (SET NULL). Al borrar una fila o modificar el valor de una clave primaria de una tabla padre, los valores de la clave fornea de todas las filas hijo deben automticamente pasar a NULL. Ejemplo: Cuando borramos un departamento, a los empleados que pertenecen a ese departamento en la tabla EMPLEADOS, se indicar que la asignacin del departamento al empleado es desconocida (NULL).
Operacin de puesta a valor por defecto (SET DEFAULT). Indica que cuando la fila padre sea suprimida o el valor de la clave primaria de una fila padre sea modificada, el valor de la clave fornea en todas las filas hijo deben automticamente pasarse al valor por defecto para esa columna particular. Ejemplo: si se modifica el nmero de un departamento, automticamente cambia la asignacin del departamento de su empleado al departamento por defecto especificado en la definicin de la tabla EMPLEADO.
Si no se especifica una regla, la regla RESTRICT, es el valor por omisin.
4.10 DEFINICIN DE DATOS EN SQL
4.10.1 Comando CREATE TABLE.
Este comando es utilizado para especificar una nueva tabla, para darle un nombre y especificar cada uno de sus atributos. Cada atributo es especificado con un nombre, su tipo, su dominio de valores y alguna condicin del atributo.
Formato:
CREATE TABLE nombre tabla (lista de columnas tipo - NOT NULL, NOT NULL WHIT DEFAULT).
Las relaciones creadas con la instruccin CREATE TABLE son llamadas tablas base.
NOT NULL: impide la introduccin de valores nulos, y provoca la emisin de un mensaje de error al momento de tratar de ingresar un valor nulo.
NOT NULL WHIT DAFAULT: permite reemplazar a la ausencia de un valor, por un valor por omisin, dependiendo del tipo de dato definido para la columna.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 92 de 120 Cero para los datos numricos. Blanco para las cadenas de caracteres de longitud fija Cadena de longitud cero para las cadenas de caracteres de longitud variable
Ejemplo:
CREATE TABLE EMPLEADO(NOMBRE VARCHAR(15) NOT NULL, APELLIDO VARCHAR(15) NOT NULL, CI CHAR(9) NOT NULL, FECHA_N CHAR(9), DIRECCION VARCHAR(30), SEXO CHAR(1), SALARIO INTEGER, SUPERCI CHAR(9), DNO INTEGER);
CREATE TABLE DEPARTAMENTO ( DNOMBRE VARCHAR(15) NOT NULL, DNUMERO INTEGER NOT NULL, JEFECI CHAR(9), JEFE_FI CHAR(9));
CREATE TABLE LIBROS (AUTOR CHARACTER(8) NOT NULL, TITULO CHARACTER(24) NOT NULL, AO SMALLINT, GENERO CHAR(8) NOT NULL WHIT DEFAULT, PRECIO DECIMAL(5,2));
AUTOR TITULO AO GENERO PRECIO HUGO HERNANI 1830 TEATRO 120.000 HUGO LAS CONTEMPLACIONES 1856 POESIA 78.500 HUGO LOS MISERABLES 1862 ROMANA 148.500 BALZAC EUGENIA GRANDET 1833 ROMANA 100.000 BALZAC PAP GORIOT 1834 ROMANA DUMAS LOS TRES MOSQUETEROS 1844 ROMANA 80.000 DUMAS VEINTE AOS DESPUS 1845 ROMANA 80.000 DUMAS LA DAMA DE LAS CAMELIAS 1852 TEATRO 110.000 STENDHAL ROJO Y NEGRO 1831 ROMANA 98.500 STENDHAL LA CARTUJA DE PARMA 1839 ROMANA 110.500 FLAUBERT MADAME BOVARY 1857 ROMANA 99.500 VERLAINE POEMAS SATURNIANOS 1866 POESIA 90.500
Tabla LIBROS
4.10.2 Comando DROP TABLE
Si se considera que una tabla no es necesaria en la base de datos relacional, se puede eliminar utilizando el comando DROP TABLE.
Ejemplo: DROP TABLE EMPLEADO;
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 93 de 120 4.10.3 Comando ALTER TABLE
Si se necesita adicionar un atributo (columna) a una de las tablas de la base de datos relacional, utilizamos el comando ALTER TABLE. El nuevo atributo tendr nulos en todas las tuplas despus que el comando es ejecutado.
Ejemplo:
ALTER TABLE EMPLEADO ADD JOB VARCHAR(12);
4. 11 EJEMPLOS
1. Recuperar la fecha de nacimiento y direccin de la empleada Elena Tapia.
SELECT FECHA_N, DIRECCION FROM EMPLEADO WHERE NOMBRE = Elena AND APELLIDO = Tapia
2. Recuperar el nombre, apellido y salario de todos los empleados que trabajan en el departamento administrativo.
SELECT NOMBRE, APELLIDO, SALARIO FROM EMPLEADO, DEPARTAMENTO WHERE DNO = DNUMERO AND DNOMBRE = Administrativo
3. Seleccionar toda la informacin de los empleados que trabajan en el departamento 5.
SELECT * FROM EMPLEADO WHERE DNO = 5
4. Seleccionar toda la informacin de los empleados que trabajan en el departamento de investigacin.
SELECT * FROM EMPLEADO WHERE DNOMBRE = Investigacin AND DNUMERO = DNO
5. Listar los diferentes tipos de salarios de los empleados.
SELECT DISTINCT SALARIO FROM EMPLEADO
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 94 de 120 6. Recuperar el nombre y apellido de los empleados que tienen dependientes.
SELECT DISTINCT NOMBRE, APELLIDO FROM EMPLEADO, CARGA_F WHERE CI = ECI
7. Listar el nombre, apellido y la cdula de identidad de todos los empleados que trabajan en el departamento de investigacin y ganan mas de $ 2500.
SELECT NOMBRE. APELLIDO, SALARIO FROM EMPLEADO, DEPARTAMENTO WHERE DNOMBRE = Investigacin AND SALARIO > 2500 AND DNO = DNUMERO
8. Recuperar el nombre, direccin y sexo de los jefes de departamento.
SELECT NOMBRE, DIRECCION, SEXO FROM EMPLEADO, DEPARTAMENTO WHERE JEFECI = CI
9. Para cada proyecto localizado en Cuenca, listar el nmero de proyecto, el nmero de departamento que lo controla, incluyendo el apellido del jefe, la direccin y salario.
SELECT PNUMERO, DNUM, APELLIDO, DIRECCION, SALARIO FROM EMPLEADO, PROYECTO, DEPARTAMENTO WHERE PLOCAL = Cuenca AND DNUM = DNUMERO AND JEFECI = CI
10. Listar el apellido del empleado y su sexo e incluir el nombre y sexo de su dependiente.
SELECT APELLIDO, EMPLEADO. SEXO, DEP_NOM, CARGA_F.SEXO FROM EMPLEADO, CARGA_F WHERE CI = ECI
11. Listar el nombre del departamento y su localizacin.
SELECT DNOMBRE, DEP_LOCA FROM DEPARTAMENTO, LOCALIZACIN WHERE DEPARTAMENTO.DNUMERO = LOCALIZACION.DNUMERO
12. Recuperar el nombre y el apellido de todos los empleados de sexo masculino y el nombre, apellido y sexo de su supervisor.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 95 de 120 SELECT E.NOMBRE, E.APELLIDO, E.SEXO, S.NOMBRE, S.APELLIDO, S.SEXO FROM EMPLEADO E, EMPLEADO S WHERE E.SUPERCI = S.CI AND E.SEXO = M
13. Listar la cdula de identidad y el apellido de todos los empleados que ganan ms de $ 2500 o han trabajado ms de 20 horas en cada uno de los proyectos.
SELECT CI, APELLIDO FROM EMPLEADO WHERE SALARIO > 2500 UNION SELECT ECI, APELLIDO FROM TRABAJA_EN, EMPLEADO WHERE HORAS > 20 AND CI = ECI
14. Listar todos los nmeros de proyecto que son controlados por el departamento en donde el empleado Tapia es jefe, o todos los proyecto en donde trabaja el empleado Tapia.
SELECT PNUMERO FROM EMPLEADO, DEPARTAMENTO, PROYECTO WHERE APELLIDO = Tapia AND CI = JEFECI AND DNUMERO = DNUM UNION SELECT PNO FROM EMPLEADO, TRABAJA_EN WHERE APELLIDO = Tapia AND CI = ECI
15. Listar los nombres de los empleados que trabajan en los departamentos 1, 10 y 30.
SELECT DISTINCT NOMBRE, APELLIDO FROM EMPLEADO, TRABAJA_EN WHERE CI = ECI AND PNO IN (1,10,30)
16. Listar el nombre, apellido y la cdula de identidad de todos los empleados cuyos apellidos estn comprendidos entre los apellidos Mora y Vega.
SELECT NOMBRE, APELLIDO, CI FROM EMPLEADO WHERE APELLIDO BETWEEN Mora AND Vega
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 96 de 120 17. Listar el nombre de los empleados que no tienen supervisor.
SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE SUPERCI IS NULL
18. Listar el nombre del empleado, su cedula de identidad, el nmero de proyecto y las horas trabajadas en cada proyecto. Ordenar de forma ascendente por horas.
SELECT NOMBRE, CI, PNO, HORAS FROM EMPLEADO, TRABAJA_EN WHERE CI = ECI ORDER BY 4
19. Listar los nombres en orden alfabtico de los dependientes de sexo femenino, seguidos de los dependientes de sexo masculino.
SELECT DEP_NOM, SEXO FROM CARGA_F ORDER BY 2, DEP_NOM
20. Recuperar los nombres de los empleados que trabajan en los proyectos controlados por el departamento de investigacin.
SELECT NOMBRE FROM EMPLEADO WHERE CI IN (SELECT ECI FROM DEPARTAMENTO, PROYECTO, TRABAJA_EN WHERE DNOMBRE = Investigacin AND DNUMERO = DNUM AND PNUMERO = PNO )
21. Recuperar el nombre de los empleados que tiene un dependiente con el mismo primer nombre y el mismo sexo que el empleado.
Consulta simple:
SELECT NOMBRE. APELLIDO FROM EMPLEADO E, CARGA_F C WHERE E.CI = C.ECI AND E.SEXO = C.SEXO AND F.NOMBRE = C.DEP_NOM
Con subconsulta:
SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE CI IN (SELECT ECI Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 97 de 120 FROM CARGA_F WHERE NOMBRE = DEP_NOM AND EMPLEADO.SEXO = CARGA_F.SEXO AND CI = ECI)
22. Seleccionar el nombre y apellido de todos los empleados que tiene nicamente dependientes de sexo femenino
SELECT NOMBRE, APELLIDO FROM EMPLEADO, CARGA_F WHERE CI = ECI AND ECI NOT IN (SELECT ECI FROM CARGA_F WHERE SEXO = M)
23. Listar el nombre de los jefes de departamento que tienen dependientes.
Alternativa 1
SELECT NOMBRE, APELLIDO FROM EMPLEADO, DEPARTAMENTO, CARGA_F WHERE JEFECI = CI AND ECI = CI
Alternativa 2
SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE EXIST (SELECT * FROM DEPARTAMENTO WHERE CI = JEFECI) AND EXIST (SELECT * FROM CARGA_F WHERE ECI = CI)
24. Calcular el salario mximo y mnimo de los empleados, el salario total, su promedio y el nmero total de empleados.
SELECT MAX(SALARIO), MIN(SALARIO), SUM(SALARI0), AVG(SALARIO), COUNT(CI) FROM EMPLEADO
25. Para el departamento de Investigacin, calcular el salario mximo y mnimo de los empleados, el salario total y su promedio y el nmero total de empleados.
SELECT MAX(SALARIO), MIN(SALARIO), SUM(SALARI0), AVG(SALARIO), COUNT(CI) FROM EMPLEADO, DEPARTAMENTO Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 98 de 120 WHERE DNUMERO = DNO AND DNOMBRE = Investigacin
26. Para cada departamento calcular el salario mximo y mnimo de los empleados, el salario total y su promedio y el nmero total de empleados.
SELECT DNO, MAX(SALARIO), MIN(SALARIO), SUM(SALARI0), AVG(SALARIO), COUNT(CI) FROM EMPLEADO GROUP BY DNO
27. Para cada departamento calcular el salario mximo y mnimo de los empleados, el salario total y su promedio, y el nmero total de empleados. Siempre que el departamento tenga ms de 2 empleados.
SELECT DNO, MAX(SALARIO), MIN(SALARIO), SUM(SALARI0), AVG(SALARIO), COUNT(CI) FROM EMPLEADO GROUP BY DNO HAVING COUNT(CI) > 2
28. Obtener el nmero total de horas trabajadas por cada empleado.
SELECT NOMBRE, APELLIDO, SUM(HORAS) FROM EMPLEADO, TRABAJA_EN WHERE CI = ECI GROUP BY ECI
29. Determinar el nmero total de horas trabajadas por los empleados en cada proyecto.
SELECT PNOMBRE, PNUMERO, SUM(HORAS) FROM TRABAJA_EN, PROYECTO WHERE PNUMERO = PNO GROUP BY PNO
30. Determinar el nmero de dependientes de cada empleado.
SELECT APELLIDO, COUNT(ECI) FROM EMPLEADO, CARGA_F WHERE CI = ECI GROUP BY ECI
31. Determinar el nmero de salarios diferentes de los empleados.
SELECT COUNT (DISTINCT SALARIO) FROM EMPLEADO
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 99 de 120
32. Listar el nombre de los empleados que tienen 2 o ms dependientes.
SELECT NOMBRE, APELLIDO FROM EMPLEADO, CARGA_F WHERE CI = ECI GROUP BY ECI HAVING COUNT(ECI) > 2
33. Para cada proyecto con ms de dos empleados, recuperar el nombre y nmero de proyecto y los empleados que trabajan en el proyecto.
SELECT PNUMERO, PNOMBRE, COUNT(CI) FROM PROYECTO, TRABAJA_EN WHERE PNO = PNUMERO GROUP BY PNUMERO, PNOMBRE HAVING COUNT(CI) > 2
34. Listar el nombre de departamento, nmero de empleados y salario promedio por departamento, de todos los departamentos en donde el promedio del salario de los empleados es menor a $ 3000.
SELECT DNOMBRE, COUNT(CI), AVG(SALARIO) FROM EMPLEADO, DEPARTAMENTO WHERE DNO = DNUMERO GROUP BY DNO HAVING AVG(SALARIO) < 3000
35. Cuantos supervisores hay en la compaa.
SELECT COUNT (DISTINCT SUPERCI) FROM EMPLEADO
36. Determinar el nombre del empleado que tiene como dependiente a Miguel.
SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE CI = (SELECT ECI FROM CARGA_F WHERE DEP_NOM = Miguel)
(Esta instruccin tal como est concebida se ejecutar siempre y cuando exista un slo dependiente de nombre Miguel).
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 100 de 120 37. Listar el nombre de los empleados que tengan por lo menos una dependiente mujer.
SELECT NOMBRE , APELLIDO FROM EMPLEADO, CARGA_F WHERE CI IN (SELECT ECI FROM CARGA_F WHERE SEXO = F)
38. Calcular la nota final de cada uno de los estudiantes (la nota final es igual al promedio de los dos aportes ms el examen final).
SELECT ESTUDIANTE.NOMBRE, APELLIDO, MATERIA.NOMBRE, (APORTE1 + APORTE2)/2 + FINAL FROM CALIFICACIN, ESTUDIANTE, MATERIA WHERE ESTUDIANTE.CI = CALIFICACIN.CI AND MATERIA.CODIGO = CALIFICACIN.CODIGO
39. Para que los estudiantes aprueben una materia deben tener una nota final igual o mayor a 14, se pide, listar los nombres de los estudiantes, las materias reprobadas y su nota final. (nota final = (aporte1 + aporte2)/2 + final).
SELECT ESTUDIANTE.NOMBRE, APELLIDO, MATERIA.NOMBRE, (APORTE1 + APORTE2)/2 + FINAL FROM CALIFICACIN, ESTUDIANTE, MATERIA WHERE ESTUDIANTE.CI = CALIFICACIN.CI AND MATERIA.CODIGO = CALIFICACIN.CODIGO AND (APORTE1 + APORTE2)/2 + FINAL < 14
40. Listar el total de crditos aprobados por el estudiante Barrera con cdula de identidad 1101775849.
SELECT SUM(N_CREDITOS) FROM MATERIA, CALIFICACIN WHERE CI = 1101775849 AND (APORTE1 + APORTE2)/2 + FINAL >= 14 AND MATERIA.CODIGO = CALIFICACIN.CODIGO
41. Determinar el nmero de alumnos que estudian la materia de Sistemas Expertos.
SELECT COUNT (CALIFICACIN.CODIGO) FROM CALIFICACIN, MATERIA WHERE NOMBRE = 'Bases de Datos' AND MATERIA.CODIGO = CALIFICACION.CODIGO
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 101 de 120
42. Calcular el promedio de las notas de cada una de las materias.
SELECT MATERIA.NOMBRE, AVG(APORTE1), AVG(APORTE2), AVG(FINAL) FROM CALIFICACIN, MATERIA WHERE MATERIA.CODIGO = CALIFICACIN.CODIGO GROUP BY MATERIA.CODIGO
43. Calcular el promedio de notas de cada uno de los estudiantes.
SELECT NOMBRE, APELLIDO, AVG(APORTE1), AVG(APORTE2), AVG(FINAL) FROM ESTUDIANTE, CALIFICACIN WHERE ESTUDIANTE.CI = CALIFICACIN.CI GROUP BY CALIFICACIN.CI
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 102 de 120 CAPITULO 5
DEPENDENCIA FUNCIONAL Y NORMALIZACION DE BASES DE DATOS RELACIONALES
En este captulo nos interesaremos en las operaciones de mantenimiento de una tabla: insertar, modificar y eliminar un dato, estas operaciones de mantenimiento pueden ser el origen de errores si las tablas relacionales no son bien construidas.
Se ver las dependencias funcionales, que es la normalizacin de tablas y que aportan las tres primeras formas normales.
5.1 EJEMPLOS DE ANOMALAS EN LA ACTUALIZACIN.
Para ilustrar las operaciones de actualizacin o mantenimiento de tablas y los problemas que se presentan al utilizar estas instrucciones: INSERT, UPDATE y DELETE, definimos la siguiente tabla OBRAS:
CREATE TABLE OBRAS (AUTOR CHR(8) NOT NULL WITH DEFAULT; TITULO CHR(24) NOT NULL WITH DEFAULT; FE_NA INT NOT NULL WITH DEFAULT; SALA INT; ESTANTE INT) ;
AUTOR TITULO FE_NA SALA ESTANTE
Tabla: OBRAS
Esta tabla contiene los datos relativos a los autores (nombre del autor y el ao de nacimiento), el ttulo de las obras escritas por estos autores, as como, la sala y el estante de la biblioteca donde se encuentran ubicadas las obras organizadas por autor.
Adicionalmente trabajaremos con la estructura y los datos de las siguientes tablas (LIBROS y AUTORES).
AUTOR TITULO AO GENERO PRECIO HUGO HERNANI 1830 TEATRO 120,000 HUGO LAS CONTEMPACIONES 1856 POESIA 78,500 HUGO LOS MISERABLES 1862 ROMANA 148,500 BALZAC EUGENIA GRANDET 1833 ROMANA 100,000 BALZAC PAP GORIOT 1834 ROMANA DUMAS LOS TRES MOSQUETEROS 1844 ROMANA 80,000 DUMAS VEINTE AOS DESPUES 1845 ROMANA 80,000 DUMAS LA DAMA DE LAS CAMELIAS 1852 TEATRO 110,000 STENDHAL ROJO Y NEGRO 1831 ROMANA 98,500 STENDHAL LA CARTUJA DE PARMA 1839 ROMANA 110,500 FLAUBERT MADAME BOVARY 1857 ROMANA 99,500 VERLAINE POEMAS SATURNIANOS 1866 POESIA 90,500 Tabla: LIBROS Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 103 de 120 AUTOR FE_NA LUGAR SALA ESTANTE HUGO 1802 BESANCON 2 3 BALZAC 1799 TOURS 1 1 DUMAS 1802 VILLERS 1 1 DUMAS 1824 PARIS 1 1 STENDHAL 1783 GRENOBLE 3 5 FLAUBERT 1821 ROUEN 1 2 VERLAINE 1844 METZ 3 6 ZOLA 1840 PARIS 3 6 RIMBAUD 1854 CHARLEVILLE 3 5 SAND 1804 PARIS 3 5
Tabla: AUTORES
En los ejemplos que se desarrollan a continuacin, se detallan las diferentes anomalas que pueden presentarse al utilizar los comandos de actualizacin de datos.
5.1.1 INSERT
Se ha visto que la instruccin INSERT permite insertar informacin en una tabla previamente creada, por medio de la opcin VALUES. Es igualmente posible incluir un subselect en la instruccin INSERT, para poder insertar en una tabla valores provenientes de otra tabla.
INSERT INTO nombre-tabla (nombre-columnas,) SELECT nombre-columna FROM nombre -tabla.
Ejemplo 5.1
Inicializar la tabla OBRAS (considerada como vaca) a partir de la tabla LIBROS y listar la tabla despus de inicializar.
INSERT INTO OBRAS (AUTOR, TITULO) SELECT AUTOR, TITULO, FROM LIBROS;
SELECT * FROM OBRAS;
AUTOR TITULO FE_NA SALA ESTANTE HUGO HERNANI 0 ------------ ------------ HUGO LAS CONTEMPLACIONES 0 ------------ ------------ HUGO LOS MISERABLES 0 ------------ ------------ BALZAC EUGENIA GRANDET 0 ------------ ------------ BALZAC PAP GORIOT 0 ------------ ------------ DUMAS LOS TRES MOSQUETEROS 0 ------------ ------------ DUMAS VEINTE AOS DESPUES 0 ------------ ------------ DUMAS LA DAMA DE LAS CAMELIAS 0 ------------ ------------ STENDHAL ROJO Y NEGRO 0 ------------ ------------ STENDHAL LA CARTUJA DE PARMA 0 ------------ ------------ FLAUBERT MADAME BOVARY 0 ------------ ------------ VERLAINE POEMAS SATURNIANOS 0 ------------ ------------ Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 104 de 120
La columna FE_NA, SALA y ESTANTE no figuran en la orden INSERT: la fecha de nacimiento se coloca en cero, puesto que, su formato est especificado como NOT NULL WITH DEFAULT, mientras que, los nmeros de sala y estante son puestos en NULL.
Ejemplo 5.2:
Inicializar la tabla OBRAS (considerada como vaca) a partir de la tabla AUTORES y listar despus de la inicializacin.
INSERT INTO OBRAS (AUTOR, FE_NA, SALA, ESTANTE) SELECT AUTOR, FE_NA, SALA, ESTANTE FROM AUTORES; SELECT * FROM OBRAS;
Los ttulos no figuran en la orden INSERT; el contenido de la columna TITULO es blanco en cada lnea, puesto que, se indica la opcin NOT NULL WITH DEFAULT.
Ninguna de las dos operaciones descritas en los ejemplos anteriores permiten crear completamente la tabla OBRAS.
5.1.2 UPDATE
La instruccin UPDATE modifica el valor de los datos de las columnas de una o varias lneas de una tabla.
Ejemplo 5.3:
Actualizar la tabla OBRAS obtenida en el ejemplo 1, reemplazando el ao de nacimiento por la constante 1800.
UPDATE OBRAS SET FE_NA = 1800; SELECT *FROM OBRAS;
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 105 de 120 AUTOR TITULO FE_NA SALA ESTANTE HUGO HERNANI 1800 ------------ ------------ HUGO LAS CONTEMPLACIONES 1800 ------------ ------------ HUGO LOS MISERABLES 1800 ------------ ------------ BALZAC EUGENIA GRANDET 1800 ------------ ------------ BALZAC PAP GORIOT 1800 ------------ ------------ DUMAS LOS TRES MOSQUETEROS 1800 ------------ ------------ DUMAS VEINTE AOS DESPUES 1800 ------------ ------------ DUMAS LA DAMA DE LAS CAMELIAS 1800 ------------ ------------ STENDHAL ROJO Y NEGRO 1800 ------------ ------------ STENDHAL LA CARTUJA DE PARMA 1800 ------------ ------------ FLAUBERT MADAME BOVARY 1800 ------------ ------------ VERLAINE POEMAS SATURNIANOS 1800 ------------ ------------
Ejemplo 5.4:
Actualizar la tabla OBRAS obtenida en el ejercicio 3, reemplazando el ao de nacimiento de Victor Hugo por 1802 y colocando para la SALA y ESTANTE sus valores correspondientes.
UPDATE OBRAS SET FE_NA = 1802, SALA = 2, ESTANTE = 3 WHERE AUTOR = 'HUGO';
SELECT * FROM OBRAS;
AUTOR TITULO FE_NA SALA ESTANTE HUGO HERNANI 1802 2 3 HUGO LAS CONTEMPLACIONES 1802 2 3 HUGO LOS MISERABLES 1802 2 3 BALZAC EUGENIA GRANDET 1800 ------------ ------------ BALZAC PAP GORIOT 1800 ------------ ------------ DUMAS LOS TRES MOSQUETEROS 1800 ------------ ------------ DUMAS VEINTE AOS DESPUES 1800 ------------ ------------ DUMAS LA DAMA DE LAS CAMELIAS 1800 ------------ ------------ STENDHAL ROJO Y NEGRO 1800 ------------ ------------ STENDHAL LA CARTUJA DE PARMA 1800 ------------ ------------ FLAUBERT MADAME BOVARY 1800 ------------ ------------ VERLAINE POEMAS SATURNIANOS 1800 ------------ ------------
Ejemplo 5.5:
Actualizar la tabla OBRAS obtenida en el ejemplo 4, reemplazando el ao de nacimiento, la sala y el estante por los valores 1799, 1 y 1 respectivamente, de los autores comprendidos entre BALZAC y DUMAS.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 106 de 120
UPDATE OBRAS SET FE_NA = 1799, SALA = 1, ESTANTE = 1 WHERE AUTOR BETWEEN 'BALZAC' AND 'DUMAS';
AUTOR TITULO FE_NA SALA ESTANTE HUGO HERNANI 1802 2 3 HUGO LAS CONTEMPLACIONES 1802 2 3 HUGO LOS MISERABLES 1802 2 3 BALZAC EUGENIA GRANDET 1799 1 1 BALZAC PAP GORIOT 1799 1 1 DUMAS LOS TRES MOSQUETEROS 1799 1 1 DUMAS VEINTE AOS DESPUES 1799 1 1 DUMAS LA DAMA DE LAS CAMELIAS 1799 1 1 STENDHAL ROJO Y NEGRO 1800 ------------ ------------ STENDHAL LA CARTUJA DE PARMA 1800 ------------ ------------ FLAUBERT MADAME BOVARY 1800 ------------ ------------ VERLAINE POEMAS SATURNIANOS 1800 ------------ ------------
En este ltimo ejemplo se puede apreciar lo siguiente:
1. Si los datos de la SALA y ESTANTE son correctos para BALZAC y DUMAS, slo la fecha de nacimiento de BALZAC est de acuerdo a la realidad, representada en la tabla AUTORES.
2. Comparando los datos de la tabla AUTORES y los de la tabla OBRAS, se constata que existe dos veces el nombre DUMAS en la tabla AUTORES, con dos fechas de nacimiento diferentes. Esto se debe a que existen dos autores diferentes: Alejandro DUMAS padre y Alejandro DUMAS hijo; si vamos a corregir la actualizacin, es necesario ser capaces de distinguir los dos autores.
3. La tabla AUTORES y la tabla OBRAS en el estado actual presentan distorsiones, afectando la coherencia de los datos; por ejemplo, la fecha de nacimiento de VERLAINE es 1844 en la tabla AUTORES y 1800 en la tabla OBRAS.
La operacin de actualizacin no asegura implcitamente la integridad de los datos, por lo cual en los ejemplos siguientes trataremos de remediar provisionalmente estos inconvenientes con otras rdenes de UPDATE.
Ejemplo 5.6.
Actualizar la tabla OBRAS obtenida en el ejemplo 5, diferenciando DUMAS padre y DUMAS hijo, corrigiendo la fecha de nacimiento.
UPDATE OBRAS SET AUTOR = 'DUMAS H' , FE_NA = 1824 WHERE AUTOR = 'DUMAS' AND TITULO = 'LA DAMA DE LAS CAMELIAS';
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 107 de 120
UPDATE OBRAS SET AUTOR = 'DUMAS P' , FE_NA = 1802 WHERE AUTOR = 'DUMAS' ;
AUTOR TITULO FE_NA SALA ESTANTE HUGO HERNANI 1802 2 3 HUGO LAS CONTEMPLACIONES 1802 2 3 HUGO LOS MISERABLES 1802 2 3 BALZAC EUGENIA GRANDET 1799 1 1 BALZAC PAP GORIOT 1799 1 1 DUMAS P LOS TRES MOSQUETEROS 1802 1 1 DUMAS P VEINTE AOS DESPUES 1802 1 1 DUMAS H LA DAMA DE LAS CAMELIAS 1824 1 1 STENDHAL ROJO Y NEGRO 1800 ------------ ------------ STENDHAL LA CARTUJA DE PARMA 1800 ------------ ------------ FLAUBERT MADAME BOVARY 1800 ------------ ------------ VERLAINE POEMAS SATURNIANOS 1800 ------------ ------------
5.1.3 DELETE
La instruccin DELETE permite suprimir lneas de una tabla. Su formato general es:
Ejemplo 5.7:
Anular, en la tabla OBRAS obtenida en el ejemplo 6, las lneas correspondientes a los autores con fecha de nacimientos de 1800.
DELETE FROM OBRAS WHERE FE_NA = 1800;
AUTOR TITULO FE_NA SALA ESTANTE HUGO HERNANI 1802 2 3 HUGO LAS CONTEMPLACIONES 1802 2 3 HUGO LOS MISERABLES 1802 2 3 BALZAC EUGENIA GRANDET 1799 1 1 BALZAC PAP GORIOT 1799 1 1 DUMAS P LOS TRES MOSQUETEROS 1802 1 1 DUMAS P VEINTE AOS DESPUES 1802 1 1 DUMAS F LA DAMA DE LAS CAMELIAS 1824 1 1
Ejemplo 5.8:
Anular en la tabla OBRAS obtenida en el ejemplo 7, las lneas correspondientes a DUMAS padre e hijo.
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 108 de 120 DELETE FROM OBRAS WHERE AUTOR LIKE 'DUMAS%';
AUTOR TITULO FE_NA SALA ESTANTE HUGO HERNANI 1802 2 3 HUGO LAS CONTEMPLACIONES 1802 2 3 HUGO LOS MISERABLES 1802 2 3 BALZAC EUGENIA GRANDET 1799 1 1 BALZAC PAP GORIOT 1799 1 1
5.2 DEPENDENCIAS FUNCIONALES
La teora de la normalizacin se basa en restricciones definidas sobre los atributos de una relacin o tabla que son conocidas como dependencias.
5.2.1 DEPENDENCIA FUNCIONAL
Sea el esquema relacional R definido sobre el conjunto de atributos A y sea X e Y subconjuntos de A llamados descriptores. Se dice que Y depende funcionalmente de X o que X determina a Y, que se representa X Y, si y solo si , cada valor de X tiene asociado en todo momento un nico valor de Y.
Ejemplo: cod_libro Ttulo, el cdigo del libro determina el ttulo. El cod_libro es el implicante y ttulo es el implicado. Siempre el implicado es un hecho (una informacin) acerca del implicante.
Una dependencia funcional es una relacin entre uno a ms atributos. Supongamos que si se da el valor de un atributo se puede obtener (o buscar) el valor de otro. Si se conoce el valor de NmeroDeCuentaDeCliente, se puede hallar el valor de EstadoDeCuentaDeCliente. Si esto es cierto, se puede decir que EstadoDeCuenctaDeCliente es funcionalmente dependiente de NmeroDeCuentaDeCliente. En forma general, si se conoce el valor de X, se puede obtener el valor de Y.
Las ecuaciones pueden representar dependencia funcional. Si se sabe el precio de un artculo y la cantidad de artculos comprados, se puede calcular el precio total de esos artculos.
PrecioTotal = PrecioDelArtculo * Cantidad
En este caso se puede decir que PrecioTotal es dependiente del PrecioDelArtculo y Cantidad.
Las dependencias funcionales entre atributos de una tabla no involucran ecuaciones. Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 109 de 120
A continuacin, mediante un ejemplo se comenta la definicin de dependencia funcional.
La identificacin de un estudiante es su cdula de identidad (CI) y suponemos que cada alumno tiene una y slo una especialidad. En este caso dado el valor de la CI, se puede conocer la especialidad del estudiante y as la especialidad depende de la CI.
La dependencia funcional se escribe usando la siguiente notacin:
CI Especialidad.
La expresin se lee como CI determina funcionalmente Especialidad o Especialidad es dependiente de CI. El atributo al lado izquierdo de la flecha se denomina determinante.
Si CI determina Especialidad, un valor particular de CI har pareja slo con un valor de Especialidad. En sentido inverso, un valor de Especialidad puede hacer pareja con uno o ms valores diferentes de CI.
Supongamos que la Contabilidad es la especialidad del estudiante cuya CI es 0123456789. Cada vez que CI y Especialidad se encuentren juntos en una tabla, la CI nmero 0123456789 siempre har pareja con el valor de la especialidad Contabilidad. Sin embargo, lo opuesto no es cierto, pues la Especialidad Contabilidad puede hacer pareja con varios valores de CI, como en este caso har pareja adems con los estudiantes que tienen la CI nmero: 9988776655 y 8888999911.
Se puede decir que la relacin de CI con Especialidad es muchos a uno (N:1). En general se dice que si A determina a B, la relacin de los valores de A a B es de N:1.
La dependencia funcional puede involucrar grupos de atributos. Considere la tabla CALIFICACIN (CI, Materia, calificacin). La combinacin de una CI y una materia determinan una calificacin, una dependencia funcional que se escribe as:
(CI, materia) Calificacin
Consideremos los dos siguientes casos:
Si X (Y , Z) entonces X Y y X Z
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 110 de 120
Por ejemplo, si CI (Nombre_Estudiante, Especialidad), entonces CI Nombre_estudiante) y CI Especialidad.
Si (X , Y) Z entonces en general no es cierto que X Y o Y Z
Por ejemplo, si (CI, Materia) Calificacin, entonces CI por si mismo no puede determinar Calificacin.
5.2.2 DEPENDENCIA FUNCIONAL TRANSITIVA
El atributo Y de la relacin R tiene una dependencia transitiva del atributo X de R a travs de un tercero Z, si se verifica:
- Los tres atributos son disjuntos
- X Z, Z y, Z X
Por tanto X Z
Ejemplo: LIBRO_ED (Codlibro, Editorial. Pas)
La dependencia entre codlibro y pas es transitiva, a travs de editorial. Intuitivamente se interpreta como que PAIS es una informacin del libro, pero indirectamente, ya que es una informacin de EDITORIAL y sta a su vez de LIBRO.
5.3 NORMALIZACIN DE BASES DE DATOS
Las operaciones INSERT; UPDATE y DELETE, permiten efectuar todas las operaciones necesarias para el mantenimiento de una tabla, sin embargo, la coherencia de los datos no puede ser asegurada si no se toman ciertas precauciones al momento de la concepcin de la tabla.
En los ejemplos anteriores se pudo poner en evidencia las anomalas que se presentan en el mantenimiento de las tablas. En este captulo veremos los procedimientos de normalizacin de tablas, los mismos que permiten evitar estas anomalas y obtener actualizaciones coherentes.
La normalizacin es un proceso de optimizacin del diseo de la estructura de una Base de Datos, que tiene por objeto reducir al mnimo las duplicaciones de datos innecesarios, de modo que las nicas duplicaciones existentes sean las debidas al uso de Claves Forneas. La normalizacin se realiza a travs de Formas Normales, e implican la descomposicin de una relacin o tabla en un conjunto de tablas equivalentes, que carezcan de las anomalas que presentaba la inicial y contenga la misma informacin.
Por Formas Normales se entiende un conjunto de reglas o criterios cuyo cumplimiento garantiza un diseo correcto de la Base de Datos, y la no existencia de duplicaciones Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 111 de 120 innecesarias. Una tabla est en una determinada forma normal si satisface un cierto conjunto de restricciones.
Las anomalas en una relacin se producen en proceso de actualizacin y no en procesos de consulta. La normalizacin penaliza las consultas, al disminuir la eficiencia, ya que la normalizacin aumenta el nmero de relaciones presentes en la Base de Datos, por lo que una determinada consulta puede llevar consigo el acceso a varias tablas, lo que aumenta el costo de sta.
La normalizacin se lleva a cabo por cuatro razones:
Estructurar los datos de tal manera que se pueda presentar las relaciones pertinentes entre los datos.
Permite la recuperacin sencilla de los datos en respuesta a las solicitudes de consulta y reportes.
Simplifica el mantenimiento (actualizar, borrar, insertar) de los datos.
Reduce la necesidad de reestructurar o reorganizar los datos cuando surjan nuevas aplicaciones.
Para ilustrar los procedimientos de normalizacin, partiremos de la tabla OBRAS que fue creada en el apartado 5.1 con los siguientes datos:
AUTOR TITULO FE_NA SALA ESTANTE HUGO HERNANI 1802 2 3 HUGO LAS CONTEMPLACIONES 1802 2 3 HUGO LOS MISERABLES 1802 2 3 BALZAC EUGENIA GRANDET 1799 1 1 BALZAC PAP GORIOT 1799 1 1 DUMAS LOS TRES MOSQUETEROS 1802 1 1 DUMAS VEINTE AOS DESPUES 1802 1 1 DUMAS LA DAMA DE LAS CAMELIAS 1824 1 1 STENDHAL ROJO Y NEGRO 1783 3 5 STENDHAL LA CARTUJA DE PARMA 1783 3 5 FLAUBERT MADAME BOVARY 1821 1 2 VERLAINE POEMAS SATURNIANOS 1844 3 6 ZOLA GERMINAL 1840 3 6 RIMBAUD UNA ESTANCIA EN EL INFIERNO 1854 3 5 SAND LA CHARCA DEL DIABLO 1804 3 5
Tabla: OBRAS
5.3.1 PRIMERA FORMA NORMAL (FN1)
Se dice que una tabla est en primera forma normal cuando sta posee nicamente datos elementales para cada columna en cada lnea, es decir, para cada lnea el valor almacenado para cada columna es nico (atmico). Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 112 de 120
La primera forma normal se alcanza cuando se quitan todos los grupos de datos de repeticin, es decir, la aparicin repetida de un dato o grupos de datos dentro de un registro.
De acuerdo a esta definicin, la tabla OBRAS se encuentra en Primera Forma Normal.
Sin embargo, esta tabla no ofrece todas las garantas de integridad cuando se realizan diversas operaciones de actualizacin, como se ilustran en los diferentes casos de anomalas que se detalla a continuacin.
Anomala con DELETE.
Ejemplo 5.9:
Anular, en la tabla OBRAS, las lneas relativas a las obras escritas por el autor HUGO.
DELETE FROM OBRAS WHERE AUTOR = 'HUGO'
AUTOR TITULO FE_NA SALA ESTANTE BALZAC EUGENIA GRANDET 1799 1 1 BALZAC PAP GORIOT 1799 1 1 DUMAS LOS TRES MOSQUETEROS 1802 1 1 DUMAS VEINTE AOS DESPUES 1802 1 1 DUMAS LA DAMA DE LAS CAMELIAS 1824 1 1 STENDHAL ROJO Y NEGRO 1783 3 5 STENDHAL LA CARTUJA DE PARMA 1783 3 5 FLAUBERT MADAME BOVARY 1821 1 2 VERLAINE POEMAS SATURNIANOS 1844 3 6 ZOLA GERMINAL 1840 3 6 RIMBAUD UNA ESTANCIA EN EL INFIERNO 1854 3 5 SAND LA CHARCA DEL DIABLO 1804 3 5
Anulando la informacin relativa a las obras escritas por Victo HUGO, se pierde adems la fecha de nacimiento de este autor, informacin que es independiente de las obras.
Anomalas con INSERT
Ejemplo 5.10
Introducir en la tabla OBRAS, el libro 'EL CORONEL CHABERT' del autor BALZAC.
INSERT INTO OBRAS (AUTOR, TITULO) VALUES ( ' BALZAC ' , ' EL CORONEL CHABERT ' );
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 113 de 120 AUTOR TITULO FE_NA SALA ESTANTE BALZAC EUGENIA GRANDET 1799 1 1 BALZAC PAP GORIOT 1799 1 1 DUMAS LOS TRES MOSQUETEROS 1802 1 1 DUMAS VEINTE AOS DESPUES 1802 1 1 DUMAS LA DAMA DE LAS CAMELIAS 1824 1 1 STENDHAL ROJO Y NEGRO 1783 3 5 STENDHAL LA CARTUJA DE PARMA 1783 3 5 FLAUBERT MADAME BOVARY 1821 1 2 VERLAINE POEMAS SATURNIANOS 1844 3 6 ZOLA GERMINAL 1840 3 6 RIMBAUD UNA ESTANCIA EN EL INFIERNO 1854 3 5 SAND LA CHARCA DEL DIABLO 1804 3 5 BALZAC EL CORONEL CHABERT 0 --------- ----------
La orden INSERT no obliga a ingresar todos los valores relativos a todas las columnas de la tabla, lo que puede ocasionar que se ingrese una incoherencia, la fecha de nacimiento de BALZAC tiene un valor diferente. De igual manera puede suceder con los valores correspondientes a la ubicacin de las obras de este autor en los atributos sala y estante.
Anomalas con UPDATE
Ejemplo 5.11
Dar mantenimiento a la fecha de nacimiento, la sala y el estante del libro "EL CORONEL CHABERT" del autor BALZAC.
UPDATE OBRAS SET FE_NA = 1800, SALA = 2 , ESTANTE = 2 WHERE AUTOR = ' BALZAC ' AND TITULO LIKE 'EL CORONEL CHABERT' ;
AUTOR TITULO FE_NA SALA ESTANTE BALZAC EUGENIA GRANDET 1799 1 1 BALZAC PAP GORIOT 1799 1 1 DUMAS LOS TRES MOSQUETEROS 1802 1 1 DUMAS VEINTE AOS DESPUES 1802 1 1 DUMAS LA DAMA DE LAS CAMELIAS 1824 1 1 STENDHAL ROJO Y NEGRO 1783 3 5 STENDHAL LA CARTUJA DE PARMA 1783 3 5 FLAUBERT MADAME BOVARY 1821 1 2 VERLAINE POEMAS SATURNIANOS 1844 3 6 ZOLA GERMINAL 1840 3 6 RIMBAUD UNA ESTANCIA EN EL INFIERNO 1854 3 5 SAND LA CHARCA DEL DIABLO 1804 3 5 BALZAC EL CORONEL CHABERT 1800 2 2
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 114 de 120 En este ejemplo, se introduce voluntariamente valores errneos en una lnea. La instruccin UPDATE no controla la presencia de datos relativos a BALZAC que se encuentran en otra lnea de la tabla.
Para corregir el error, podemos realizar la siguiente instruccin:
UPDATE OBRAS SET FE_NA = 1799 , SALA = 1 , ESTANTE = 1 WHERE AUTOR = ' BALZAC ' ;
Pero para determinar los valores correctos del autor BALZAC, debemos recorrer toda la tabla, lo que puede ocasionar problemas de rendimiento en una tabla grande.
Causas y soluciones:
Porqu esas anomalas ?. Por que la tabla tal como est, no es mas que una yuxtaposicin de columnas. Analizando el contenido de la tabla OBRAS, podemos concluir lo siguiente:
o Existen datos que estn relacionados nicamente a los autores (AUTOR, FE-NA, SALA, ESTANTE), considerando que las obras se guardan por autor.
o Existen datos que estn relacionados nicamente a las obras (AUTOR, TITULO).
Adems, los autores no son correctamente identificados. Hemos visto que el nombre DUMAS corresponde a dos autores diferentes; Alejandro DUMAS padre y Alejandro DUMAS hijo, cada uno tiene una fecha de nacimiento diferente.
Para solucionar el inconveniente, partiendo de la tabla OBRAS, podemos crear dos nuevas tablas como se mostrar en los siguientes ejemplos.
Ejemplo 5.12
A partir de la tabla OBRAS, en la que se distingue DUMAS P y DUMAS H, crear una tabla LIBROS1 que contenga los datos relativos a libros.
CREATE TABLE LIBROS1 (AUTOR CHAR(8) NOT NULL; TITULO CHAR(24) NOT NULL) ;
INSERT INTO LIBROS1 (AUTOR, TITULO) SELECT DISTINCT AUTOR, TITULO FROM OBRAS;
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 115 de 120 AUTOR TITULO HUGO HERNANI HUGO LAS CONTEMPLACIONES HUGO LOS MISERABLES BALZAC EUGENIA GRANDET BALZAC PAP GORIOT DUMAS P LOS TRES MOSQUETEROS DUMAS P VEINTE AOS DESPUES DUMAS F LA DAMA DE LAS CAMELIAS STENDHAL ROJO Y NEGRO STENDHAL LA CARTUJA DE PARMA FLAUBERT MADAME BOVARY VERLAINE POEMAS SATURNIANOS ZOLA GERMINAL RIMBAUD UNA ESTANCIA EN EL INFIERNO SAND LA CHARCA DEL DIABLO
Tabla: LIBROS1
La tabla LIBROS1 es una proyeccin obtenida a partir de la tabla OBRAS, donde cada libro es identificado de una manera nica por su ttulo.
Ejemplo 5.13
A partir de la tabla OBRAS, crear una tabla AUTORES1 que contenga los datos relacionados con los autores.
CREATE TABLE AUTORES1 (AUTOR CHAR (8) NOT NULL; FE_NE INT NOT NULL; SALA INT NOT NULL; ESTANTE INT NOT NULL);
INSERT INTO AUTOR1 (AUTOR, FE_NE, SALA, ESTANTE) SELECT DISTINCT AUTOR, FE_NE, SALA, ESTANTE FROM OBRAS;
AUTOR FE_NA SALA ESTANTE HUGO 1802 2 3 BALZAC 1799 1 1 DUMAS P 1802 1 1 DUMAS H 1824 1 1 STENDHAL 1783 3 5 FLAUBERT 1821 1 2 VERLAINE 1844 3 6 ZOLA 1840 3 6 RIMBAUD 1854 3 5 SAND 1804 3 5
Tabla: AUTORES1 Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 116 de 120
5.3.2 SEGUNDA FORMA NORMAL (FN2)
Una relacin est en segunda forma normal si y solamente si est en primera forma normal y si todos los atributos que no son llaves dependen nicamente de la llave. De acuerdo a esta definicin, cada tabla que tiene un atributo nico como clave, est en segunda forma normal.
La tabla LIBROS1 no contiene ms redundancia. Es un conjunto de datos relacionados nicamente a los libros de la biblioteca.
Los datos FE_NA, SALA y ESTANTE, dependen funcionalmente de los datos de AUTOR de la tabla AUTORES1, puesto que, a cada dato AUTOR corresponde un dato de FE_NA y uno solo, un dato de SALA y uno solo y un dato de ESTANTE y uno solo.
Sin embargo las anomalas pueden todava ocurrir al momento de realizar el mantenimiento de la tabla AUTORES1, puesto que, existe tambin dependencia funcional al interior mismo de la tabla AUTORES1: en efecto, un estante pertenece a una sala y solo una, esto significa que el conocimiento de un estante implica el conocimiento de su sala, podemos por tanto decir que, existe una dependencia transitiva entre autor y sala a travs del estante.
Anomalas con DELETE
Anular de la tabla AUTORES1 las obras escritas por el autor HUGO.
DELETE FROM AUTORES1 WHERE AUTOR = 'HUGO' ;
Ocasionamos la prdida de informacin: La sala 2 contiene el estante 3, informacin independiente del autor HUGO.
Anomalas con INSERT
No podemos crear una nueva sala y un nuevo estante si no tenemos un autor a registrar.
Anomalas con UPDATE
La instruccin:
UPDATE AUTORES1 SET SALA = 4 WHERE AUTORES = ZOLA;
Introduce una incoherencia, puesto que, el estante 6 pertenece a la sala 4 para el autor ZOLA y a la sala 3 para el autor VERLAINE.
5.3.3 TERCERA FORMA NORMAL (FN3)
La solucin a los problemas de la tabla AUTORES1 que se encuentra en segunda forma normal, es crear dos tablas a partir de AUTORES1: Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 117 de 120
- Una tabla AUTORES2 que contenga los datos de AUTOR, FE_NA, y ESTANTE. Esta tabla contiene datos que dependen funcionalmente de AUTOR.
SELECT AUTOR , FE_NE, ESTANTE FROM AUTORES1
- Una tabla ESTANTES que contenga los datos de ESTANTE y SALA.
SELECT DISTINCT ESTANTE, SALA FROM AUTORES1
Las dos tablas AUTORES2 Y ESTANTES estn en tercera forma normal.
Una tabla est en Tercera Forma Normal, si y solamente si, est en segunda forma normal y no tiene dependencia transitiva. Por lo tanto para eliminar las anomalas de una tabla en segunda forma normal, es necesario quitar la dependencia transitiva.
La tercera forma normal es la mnima requerida para asegurar la coherencia lgica de los datos al momento de la concepcin de una tabla.
Otra definicin, presentada por Boyce y Codd, no hace referencia a las dos primeras formas normales, sta introduce una forma ms completa, que se lo llama forma normal Boyce y Codd (BCNF). Si llamamos determinante a un dato o un conjunto de datos que dependen funcionalmente de un atributo, podemos construir la siguiente definicin:
Una relacin est en forma normal Boyce/Codd si y solamente si cada determinante es una llave candidata.
5.4 EJEMPLOS
5.4.1
VUEL_PILOTO VUELO DIA NUMPILOTO NOMBRE HRS_VUELO 112 Jun-06 31174TORRES 7250 112 Jun-07 30046PEREZ 15412 203 Jun-09 31174TORRES 7250
ESCRIBE AUTOR NACIONALIDAD COD_LIBRO TITULO EDITORIAL AO Date, C. Norteamericana 98987 Database Addison 1990 Date, C. Norteamericana 97777 SQL Stan Addison, W. 1986 Date, C. Norteamericana 98987 Guide for Addison, W. 1988 Cood, E Norteamericana 7890 Relational Addison, W. 1990 Gardain Francesa 12345 Basi Dati Paraninfo 1986 Gardain Francesa 67890 Comp DB Eyrolles 1984 Valduriez Francesa 67890 Comp DB Eyrolles 1984 Kim, W. Norteamericana 11223 BD OO ACM 1989 Lochovsky Canadiense 11223 BD OO ACM 1989
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 119 de 120 LIBRO Cod_libro Titulo Editorial Ao
AUTOR Nombre Nacionalidad
ESCRIBE Cod_libro Nombre
Sistemas de Bases de Datos ISI0514 Fundamentos de Bases de Datos Pgina 120 de 120 BIBLIOGRAFA
1. [Adad y otros 1993] Rubn Abad, Alfredo Careaga, Miguel Angel Medina, Fundamentos de las estructuras de datos relacionales. Limusa S.A.
2. [Elmasri y Navathe 1989] R. Elmasri y S. B. Navathe, Fundamentals of Database Systems. Benjamin Cummings, Redwood City, CA
3. [Groff y Weinberg 1998] James R. Groff y Paul N. Weinberg, Gua Lan Times de SQL. McGraw- Hill.
4. [Korth y Silberchatz 2002] Henry F. Korth y Abraham Silberschatz, Fundamentos de Bases de Datos. 4ta Edicin. McGraw-Hill.
5. [Korth y Silberchatz 1998] Henry F. Korth y Abraham Silberschatz, Fundamentos de Bases de Datos. 3ra Edicin. McGraw-Hill.
6. [Kroenke 2003] David M. Kroenke, Procesamiento de Bases de Datos, Fundamentos Diseo e I nstrumentacin. Octava Edicin. Prentice-Hall Hispanoamericana, S.A.
7. [Koutchouk 1992]. Michel Koutchouk, SQL et DB2 le relationnel et sa pratique. 2da Edicin. Masson, Paris.
8. [Moreno y otros 2002] Pilar Moreno, Iigo Molina, Santiago Ormeo, Curso de Fundamentos de sistemas de informacin geogrfico, Universidad Politcnica de Madrid, Cepade.
9. [OBrien 2001] James A. OBrien, Sistemas de I nformacin Gerencial, MacGraw Hill.
10. [Piattini y otros 1996] Mario Piattini, Jos Antonio Calvo, Joaqun Cervera, Luis Fernando Sanz, Anlisis y diseo detallado de aplicaciones informticas de gestin. Ra-Ma.
11. [Ramos 2002] Humberto Ramos, Curso deGestin de Bases de Datos, Universidad Politcnica de Madrid, Cepade.