Fundamentos de Bases de Datos

Anuncio
Sistemas de Bases de Datos
BASES DE DATOS I
ISI0514
CUADERNO DOCENTE
Contenido: Fundamentos
Profesor:
de Bases de Datos
Oswaldo MERCHAN
Marzo/2004
ISI0514
Fundamentos de Bases de Datos
Página 1 de 120
Sistemas de Bases de Datos
INTRODUCCIÓN
El presente documento recopila información de las obras bibliográficas especializadas
en los fundamentos de Bases de Datos, incluye además ejemplos prácticos que se
encuentran desarrollados para que puedan ser revisados y analizados por el alumno.
Los resúmenes y extractos obtenidos, han sido organizados para que el documento sirva
como guía para los estudiantes que cursan la materia de Bases de Datos
El capítulo 1 presenta en forma general las características de un sistema de Bases de
Datos, sus componentes y ventajas en comparación con los sistemas tradicionales
orientados a procesos.
En el capítulo 2 se describe el modelo entidad - relación 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 diseño que parte de lo general a lo
particular.
El capítulo 3 presenta lo principios del Modelo Relacional y los aspectos de los
fundamentos matemáticos (Álgebra Relacional)
El objetivo del capítulo 4 es el de presentar de manera práctica los conceptos del
lenguaje SQL. Se describe el manejo de datos que se realiza mediante las instrucciones
de consulta, inserción, actualización y eliminación; comprende también la teoría de la
integridad de datos. Al final del capítulo se incluye una serie de ejemplos de consultas a
las tablas generadas en el capítulos 2.
En el capítulo 5 se expone un tema que complementa al modelo relacional, la teoría de
Normalización, metodología que es empleada para validar la adecuada construcción de
una relación. Se incluyen los conceptos necesarios de Dependencias Funcionales que
servirá para definir las Formas Normales
ISI0514
Fundamentos de Bases de Datos
Página 2 de 120
Sistemas de Bases de Datos
CAPITULO 1
SISTEMAS DE BASES DE DATOS
1.1 INTRODUCCIÓN.
Un sistema de gestión de bases de datos SGBD (DBMS Data Base Management
System) consiste en una colección de datos interrelacionados y un conjunto de
programas para acceder a esos datos.
El término bases de datos corresponde a un conjunto autodescriptivo de registros
integrados. Es autodescriptivo, porque además de los datos fuentes del usuario,
contiene una descripción de su propia estructura; tal descripción es conocida como
diccionario de datos. La Base de Datos es un depósito único de datos para toda la
organización, por lo que debe ser capaz de integrar los distintos sistemas y aplicaciones,
atendiendo a las necesidades de los usuarios en los niveles: operativo, táctico y
estratégico.
El objetivo del SGBD es suministrar la interfaz entre el conjunto de los datos y los
usuarios. El SGBD también 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 jerárquicamente 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 descripción de su propia estructura que se denomina diccionario de datos
o metadatos, incluye también índices que se usan para representar las relaciones entre
los datos y para mejorar el desempeño de las aplicaciones de la base de datos, y un
último tipo de información o componente que se almacena en la base de datos son los
metadatos de aplicación; se usan para almacenar la estructura y el formato de reportes,
consultas, y otros componentes de aplicación.
Bits }
Bytes }
Campos }
Registros
}
Archivos }
Bits }
Bytes }
Campos }
Registros
}
Archivos
+
Metadatos
+
Indices
+
Metadatos de
Aplicación
Jerarquía de los elementos de datos en un sistema de procesamiento de archivos y en un sistema de bases de datos
ISI0514
Fundamentos de Bases de Datos
Página 3 de 120
Sistemas de Bases de Datos
Los sistemas de bases de datos están diseñados para gestionar grandes bloques de
información. La gestión de datos implica tanto la definición de estructuras para el
almacenamiento de la información como la provisión de mecanismos para la gestión de
la información.
Relación entre una aplicación de base de datos y un DBMS
DBMS
Aplicaciones
de B.D.
Bases de
Datos
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 específicas de procesamiento, por lo que, tanto los
lenguajes de programación como las estructuras de datos se centraban en realizar
de manera más eficiente una tarea específica.
Los sistemas informáticos 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 diseñados para una
determinada aplicación.
Mundo Real
Ficheros Individuales
Personal
Nómina
Personal
Nómina
Vehículos
Procesos:
ISI0514
Fundamentos de Bases de Datos
Vehículos
Página 4 de 120
Sistemas de Bases de Datos
Sistema orientado a procesos:
D1
F1
T1
D2
F2
T2
D3
T3
D4
F3
F6
D5
T4
F4
D6
F5
T5
D7
Datos
•
Archivo
Tratamiento
Resultados
Enfoque de base de datos: Con el fin de resolver los problemas que se
presentan con los sistemas informáticos tradicionales y con el objeto de lograr
una gestión más 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 lógicamente, una sola vez, con independencia de los
tratamientos. Por lo tanto, en los sistemas orientados a datos el análisis
comienza por formular la lógica de los datos organizacionales como un todo
independiente, para después involucrarlos con los procesos que lo utilizan.
Mundo Real
Base de Batos
Datos
Procesos:
Personal
ISI0514
Nómina
Fundamentos de Bases de Datos
Vehículos
Página 5 de 120
Sistemas de Bases de Datos
Sistema orientado a las Bases de Datos
D1
D2
Creación
Depuración
Recuperación
D3
BD
D4
Actualización
D5
D6
Tratamiento
Almacenamiento
D7
Datos
Creación y
actualización
Recuperación
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 número 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 facturación, la aplicación puede acceder a los datos
del cliente, los datos de proveedores o ambos. En caso de necesitar ambos datos,
el programador de la aplicación sólo especifica cómo deberán combinarse los
datos y el DBMS realizará las operaciones necesarias para conseguirlo.
Cuando los datos se encuentran aislados, éstos están repartidos en varios
archivos, y pueden tener diferentes formatos, lo que complica la creación 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 debía hacer la declaración completa de la estructura de este
archivo, esta declaración era sólo modificable en tiempo de edición quedando
fijada en tiempo de compilación.
Un sistema de procesamiento de bases de datos hace que los programas
dependan menos de los formatos de archivo. Los formatos de registro se
ISI0514
Fundamentos de Bases de Datos
Página 6 de 120
Sistemas de Bases de Datos
almacenan en la misma base de datos y son accedidos por el DBMS y no por los
programas de aplicación.
La independencia de programas y datos minimiza el impacto de los cambios en
el formato de los datos de los programas de aplicación. La mayoría de las veces
los programas de aplicación 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 aplicación son creados por diferente personal
durante un período 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 información que aumenta los costos de
almacenamiento y además puede llevar a inconsistencia de los datos, esto es, las
diversas copias de los mismos datos no concuerdan entre sí.
Por ejemplo, si la dirección de un empleado está registrada en un archivo que
contenga la información del Personal de la empresa y además está registrada en
el archivo con la información del Control de Asistencia, un cambio en la
dirección 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 mínimo de una cuenta corriente debe ser 100 dólares.
•
Acceso concurrente: En un entorno de multiprogramación es posible ejecutar
varias transacciones de manera concurrente, lo que significa actualizar los datos
simultáneamente, para lo cual es necesario que el sistema controle la interacción
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 están
interrelacionados y estructurados de acuerdo a un modelo que sea capaz de recoger el
máximo contenido semántico.
El concepto de bases de datos ha ido cambiando y configurándose a lo largo del tiempo.
A continuación se enuncian algunas de estas definiciones:
ISI0514
Fundamentos de Bases de Datos
Página 7 de 120
Sistemas de Bases de Datos
Definición 1:
“Colección de datos interrelacionados almacenados en conjunto, sin redundancia
perjudicial o innecesaria. Su finalidad es servir a una o más aplicaciones de la mejor
forma posible. Los datos se almacena de modo que resulten independientes de los
programas que lo usan. Se emplean métodos bien determinados para incluir nuevos
datos y para modificar o extraer los datos almacenados ¨ [Martín 1995]
Definición 2:
“Colección o depósito de datos donde los mismos se encuentran lógicamente
relacionados entre sí, tienen una definición y descripción comunes y están
estructurados de una forma particular. Una Base de Datos es también un modelo del
mundo real, y como tal, debe servir para toda una gama de usos y aplicaciones”.
[Conference des Statisticiens Europeéns, 1977]
Definición 3:
“Colección de datos interrelacionados” [Elmasri y Navathe, 1989]
Definición 4:
“Una colección o depósito 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 definición y descripción, han de estar
almacenadas junto con los mismos.
Los procedimientos de actualización y
recuperación, comunes y bien determinados, habrán 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, codificación y entrada
Los resultados
• Mayor coherencia
• Mayor valor informativo
• Mejor y más normalizada la documentación de la información
Los usuarios
• Acceso más rápido y sencillo de los usuarios finales
• Más facilidades para compartir los datos por el conjunto de
usuarios
• Mayor flexibilidad para atender a demandas cambiantes
ISI0514
Fundamentos de Bases de Datos
Página 8 de 120
Sistemas de Bases de Datos
1.6 ABSTRACCIONES DE DATOS.
Un objetivo importante de un sistema de bases de datos es proporcionar a los usuarios
una visión abstracta de los datos. Es decir, el sistema esconde ciertos detalles de cómo
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 través
de diversos niveles de abstracciones para simplificar su interacción con el sistema.
En los sistemas de información tradicionales se puede observar la existencia de dos
estructuras distintas:
-
Lógica (vista de usuario)
-
Física (forma en la que se encuentran los datos en el almacenamiento)
En las Bases de Datos aparece un nuevo nivel de abstracción que se ha denominado de
diversas maneras: nivel conceptual, estructura lógica global, etc. El nivel externo es la
visión que tiene de la base de datos cada usuario en particular, el nivel conceptual
responde al enfoque del conjunto de la empresa (visión del administrador), y el nivel
interno es la forma en la que se organizan los datos en el almacenamiento físico.
•
Nivel físico o interno: Nivel más bajo de abstracción, describe cómo se
almacenan realmente los datos. Se distinguen tres clases de aspectos:
Estrategia de almacenamiento: Incluye la asignación de espacio de
almacenamiento para el conjunto de datos, las estrategias para optimizar tiempo
y espacio en memoria secund aria, tratamiento de desbordamientos, etc.
Caminos de acceso: Incluye las especificaciones de claves primarias y
secundarias, así como la de índices o punteros.
Misceláneos: Técnicas de compresión de datos, criptografiado, optimización,
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 abstracción lo usan los administradores de bases de datos, quienes deben
decidir qué información se va a guardar en la base de datos.
En el esquema o nivel conceptual deberá incluirse la descripción de todos los
datos e interrelaciones entre éstos, las restricciones de integridad y de
confidencialidad.
•
ISI0514
Nivel de visión o externo: Es el nivel más alto de abstracción, describe un
número de vistas, cada vista describe una parte de la base de datos completa que
le interesa a un particular grupo de usuarios.
Fundamentos de Bases de Datos
Página 9 de 120
Sistemas de Bases de Datos
La interrelación entre estos tres niveles de abstracción se detalla continuación.
Vista 1
Vista n.
Nivel
conceptual
Nivel físico
Almacenamiento de
Bases de datos
Tres niveles de abstracción de datos
1.7 ESQUEMA E INSTANCIA.
La información almacenada en la base de datos, en un determinado momento en el
tiempo recibe el nombre de instancia (ejemplar), en tanto que el diseño global de la
base de datos se llama esquema. Los esquemas cambian muy rara vez o nunca.
Los sistemas de Bases de Datos tienen va rios esquemas, divididos de acuerdo con los
niveles de abstracción. En el nivel más bajo está el esquema físico; en el nivel
intermedio, el esquema conceptual; en el nivel más alto un subesquema.
1.8 USUARIOS DE UNA BASE DE DATOS
En esta sección se identifican las personas que están involucradas en el diseño, uso y
mantenimiento de una base de datos.
•
ISI0514
Administrador de una base de datos (DBA): Es el responsable del diseño,
control y administración de la base de datos, puede ser desempeñada por una
persona o por un grupo de personas dependiendo de la envergadura del proyecto.
Fundamentos de Bases de Datos
Página 10 de 120
Sistemas de Bases de Datos
Será responsabilidad del Administrador de la Base de datos (DBA):
-
La estructura de la base de datos, en el sentido de determinar qué
información va a ser necesaria almacenar en la misma, después de
haber analizado los requisitos de los distintos usuarios.
-
La descripción conceptual y lógica de la Base de datos, una vez
especificados los requisitos de la información es preciso realizar el
diseño conceptual de la base de datos para después, adecuar la
estructura conceptual a un SGBD específico.
-
La descripción física de la Base de datos, encontrando una estructura
interna que soporte el esquema lógico y los objetivos de diseño. Es
una labor que se extiende a lo largo de la vida de la base de datos, el
DBA tendrá que variar parámetros, reorganizar los datos, modificar
estructuras de almacenamiento, realizar nuevas distribuciones de los
ficheros en los soportes, etc.
-
Definición de estándares con los que se va a regir la organización.
-
Los aspectos relativos a la seguridad.
-
El control y la interacción entre la red y la base de datos.
-
Los procedimientos de explotación y uso.
-
La estrategia de transición.
•
Diseñador de la base de datos: Es responsable de identificar los datos que va n
a ser almacenados en la base de datos y escoger las estructuras apropiadas.
Define además 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 categorías de usuarios:
ISI0514
-
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
familiarizados con el DBMS.
ingenieros,
Fundamentos de Bases de Datos
analistas
que
están
Página 11 de 120
Sistemas de Bases de Datos
1.9 INDEPENDENCIA DE DATOS
Se llama independencia de datos a la capacidad para modificar una definición de
esquema en un nivel sin que afecte a una definición de esquema en el siguiente nivel
más alto. Existen dos niveles de independencia de datos:
•
Independencia física de datos : Es la capacidad de modificar el esquema físico
sin provocar que los programas de aplicación tengan que rescribirse. En algunas
ocasiones son necesarias las modificaciones en el nivel físico para mejorar el
funcionamiento
En este punto se puede encontrar cambios al tamaño de los bloques, longitud de
los registros, creación y eliminación de índices, cambios en las direcciones
relativas y absolutas de almacenamiento.
•
Independencia lógica de datos : Es la capacidad de modificar el esquema lógico
sin provocar que los programas de aplicación tengan que rescribirse. Las
modificaciones en el nivel lógico son necesarias siempre que la estructura lógica
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 colección de herramientas conceptuales para
describir datos, relaciones entre ellos, la semántica asociada a los datos, y restricciones
de consistencia. Se dividen en tres modelos:
•
Modelo lógico basado en objetos: Este modelo describe los datos a nivel
conceptual y de visión, los más conocidos son:
Modelo entidad – relación
Modelo orientado a objetos
Modelo binario
Modelo semántico de datos
•
Modelo lógico basado en registros: Los modelos lógicos basados en registros
se utilizan para describir datos en los niveles conceptual y físico.
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 número fijo de
campos y cada campo normalmente es de longitud fija.
Los modelos más conocidos son:
ISI0514
Fundamentos de Bases de Datos
Página 12 de 120
Sistemas de Bases de Datos
Modelo Relacional: Este modelo representa los datos y las relaciones entre ellos,
mediante una colección de tablas, cada una de las cuales tiene un número de
columnas con nombres únicos.
NOMBRE
Pérez
CALLE
Sucre
CIUDAD
Cuenca
NUMERO
900
Torres
Torres
Jara
Jara
Bolívar
Bolívar
Córdova
Córdova
Quito
Quito
Guayaquil
Guayaquil
556
647
801
647
NUMERO
SALDO
900
55
556
647
100000
105666
801
10533
Modelo de red: Los datos se representan mediante colección de registros y las
relaciones de datos mediante enlaces que pueden considerarse como punteros.
Modelo jerárquico: Es similar al modelo de red, la diferencia está en que los
registro están organizados como colección de árboles en vez de grafos
arbitrarios.
•
Modelo físico basado en datos: Se usa para describir datos en el nivel más
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 comunicación 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 definitión 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 compilación 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 métodos de
acceso.
ISI0514
Fundamentos de Bases de Datos
Página 13 de 120
Sistemas de Bases de Datos
Data manipulation languaje (DML). El objetivo es proporcionar una interacción
eficiente entre las personas y el sistema. Por manipulación se entiende la recuperación,
inserción, supresión y modificación de la información almacenada en la base de datos.
Tipos de DML:
No procedimentales: Los DML requieren que el usuario especifique QUÉ datos
se necesitan, sin especificar CÓMO obtenerlos. Ej: SQL.
Procedimentales: Los DML requieren que el usuario especifique QUÉ datos se
necesitan y CÓMO obtenerlos. Ej. DL/I (lenguaje propio de los ordenadores
IBM)
Representación de la acción de un lenguaje de bases de datos
Voy a crear un
nuevo archivo en
la base de datos
Quiero consultar
datos del estudiante
Nro 263
DML
DDL
GESTOR DE LA BD
(DBMS)
BASE DE
DATOS
COMUN
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 aplicación y consultas hechas al
sistema.
ISI0514
Fundamentos de Bases de Datos
Página 14 de 120
Sistemas de Bases de Datos
USUARIO
Consultas
Aplicaciones
Sistema de gestión de bases
de datos
B.D.
B.D.
B.D.
Un gestor de bases de datos es responsable de las siguientes tareas:
•
Interacción con el gestor de archivos: Es responsable del almacenamiento,
recuperación y actualización 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.
•
Implantación de la integridad: Controla que los datos almacenados en la
base de datos cumplan con ciertas restricciones de consistencia. Por ejemplo
el número máximo de horas semanales =< 40.
•
Implantación de la seguridad: No todos los usuarios de la base de datos
necesitan tener acceso a todo su contenido, es función del gestor de la base
de datos administrar estas seguridades.
•
Copias de seguridad y recuperación: 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 Gestión de la Bases de Datos (SGBD)
“Al conjunto coordinado de programas, procedimientos, lenguajes, etc., que suministra,
tanto a los usuarios no informáticos 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:
•
ISI0514
La Base de Datos.
Fundamentos de Bases de Datos
Página 15 de 120
Sistemas de Bases de Datos
•
Los sistemas de gestión de bases de datos (SGBD, DBMS), tal como el DB2,
oracle, Sybase, etc., que varían considerablemente en cuanto a características
y funciones.
Las características y funciones de un DBMS, pueden dividirse en tres
subsistemas: Herramientas de diseño, tiempo de ejecución y motor DBMS.
Subsistema de Herramientas de Diseño: Consta de un conjunto de
implementos que facilitan el diseño y la creación de la base de datos y sus
aplicaciones. Generalmente incluye herramientas para la creación de tablas,
formas, consultas y reportes. También proporcionan lenguajes e interfaces de
programación para programar con lenguajes. Por ejemplo Access tiene dos
lenguajes: un macrolenguaje que no requiere conocimientos profundos de
programación y una versión de BASIC llamada Visual Basic.
Sistema de Run Time (Tiempo de Ejecución): Procesa los componentes de
aplicación que se desarrollan al utilizar las herramientas de diseño.
(procesador de formas, de consultas).
El motor DBMS: Es el intermediario entre las herramientas de diseño y los
subsistemas run-time y los datos. El motor recibe los requerimientos de los
otros dos componentes (plantados en términos de tablas, filas y columnas) y
traduce los requerimientos a órdenes dirigidas al sistema operativo para leer
y escribir datos en medios físicos. El motor DBMS también es responsable
del manejo de transacciones, bloqueo, respaldo y recuperación de la base de
datos.
ISI0514
•
Programas de aplicación.
•
Un conjunto de usuarios.
•
Medios técnicos.
•
Programas utilitarios (generadores de informes, de interfaces, herramientas
de desarrollo, de administración, etc).
Fundamentos de Bases de Datos
Página 16 de 120
Sistemas de Bases de Datos
Una estructura completa de un sistema de bases de datos, se detalla en el siguiente
gráfico:
Usuarios
ingenuos
Interfaz de
aplicación
Programadores
de aplicaciones
Usuarios
sofisticados
Programadores
de aplicaciones
Consultas
Precompilador de
lenguaje de
manipulación de
datos
Administradores
de bases de datos
Planificación de
bases de datos
Procesador
de consultas
Compilador de
lenguaje de
definición de
datos
Código objeto
de programas
de aplicación
Gestor de bases
de datos
•
Gestor de
archivos
•
•
Control
de
concurrencia
Backup
Recovery
Archivos
Diccionario
s
ISI0514
Fundamentos de Bases de Datos
Página 17 de 120
Sistemas de Bases de Datos
CAPITULO 2
MODELO ENTIDAD - RELACIÓN
2.1 INTRODUCCIÓN
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 abstracción. Según
este nivel de abstracción 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 programación 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 descripción del mundo real de acuerdo con un modelo
altamente semántico e independiente del hardware y del SGBD en el que
posteriormente se vaya a realizar la implementación de la base de datos.
En general, los Modelos Conceptuales, por su nivel de abstracción y riqueza
semántica, constituyen una interfaz útil entre los profesionales de la
informática y los usuarios finales, en las primeras etapas del proceso de diseño
de Bases de Datos.
- Modelos Convencionales.
Se encuentran soportados por los SGBD y están orientados a describir los
datos a nivel lógico para el SGBD, por lo que sus conceptos son propios de
cada SGBD.
Estos modelos se pueden considerar como una interfaz entre el informático y
el ordenador.
Los tres modelos convencionales más extendidos en el mercado son el
Jerárquico, el de Codasyl y el Modelo Relacional.
ISI0514
Fundamentos de Bases de Datos
Página 18 de 120
Sistemas de Bases de Datos
•
Interno.
Estos modelos también conocidos como Modelos Físicos, se orientan a la
máquina.
De manera más 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 problemática del diseño 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 regirán su estructura.
La modelación de datos expresa un diseño lógico de datos de la misma manera en que
un diagrama de flujo expresa el diseño lógico de un programa.
2.2 EL DISEÑO CONCEPTUAL
DESARROLLO DE SOFTWARE.
EN
EL
PROCESO
DE
Consideremos el Ciclo de Vida Clásico de un producto de Software.
Ingeniería del
Sistema
Análisis
Diseño
Codificación
Pruebas
Mantenimiento
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 diseño. El diseño como actividad se puede
entender en distintos niveles de abstracción, separándolo en Diseño Conceptual, Diseño
lógico y Diseño Físico.
•
Diseño Conceptual.
Es de un alto nivel de abstracción, y puede confundirse inicialmente con el término
de la etapa de análisis. Este diseño no está necesariamente asociado con una
ISI0514
Fundamentos de Bases de Datos
Página 19 de 120
Sistemas de Bases de Datos
plataforma de implementación, sino es más cercano a la realidad, al problema a
solucionar.
El diseño conceptual recibe como entrada la especificación de los requerimientos y
su resultado es el esquema conceptual de la Base de datos, independiente del
software que se use para manipularlo.
•
Diseño Lógico.
Recibe como entrada el esquema conceptual y da como resultado un esquema
lógico, que es una descripción de la estructura de la Base de Datos que puede
procesar el software del Sistema de Gestión de Bases de Datos.
El diseño lógico se acerca más a la implementación del producto en una plataforma
computacional, integrando consideraciones para la plataforma en cuestión.
•
Diseño Físico:
Recibe como entrada el esquema lógico y da como resultado un esquema físico, que
es una descripción de la implementación de una Base de Datos en la memoria
secundaria del ordenador. Describe la estructura de almacenamiento y los métodos
usados para tener acceso efectivo a los datos.
Realidad
Requisitos
de datos
Diseño Conceptual
Modelo
Conceptual
Esquema conceptual
Diseño Lógico
Modelo
Lógico
Esquema Lógico
Diseño Físico
Modelo
Físico
Esquema Físico
ISI0514
Fundamentos de Bases de Datos
Página 20 de 120
Sistemas de Bases de Datos
2. 3 MODELO ENTIDAD RELACIÓN (MER):
El Modelo Entidad–Relación fue desarrollado por Peter Chen en 1976 como
metodología gráfica para el diseño de Bases de Datos, por lo que puede decirse que es
un “método de representación abstracta del mundo real centrado en las restricciones o
propiedades lógicas de una Base de Datos”.
El Modelo de datos Entidad-Relación (MER) se basa en una percepción del mundo real,
que consiste en un conjunto de objetos básicos 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 física es una persona, un carro; o puede ser un objeto con una existencia
conceptual: una compañía, 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 descripción de algo, por ejemplo un
CLIENTE.
Se define como ocurrencia de una clase de entidad, a la representación 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 características de una entidad, por ejemplo una entidad EMPLEADO,
tiene sus propiedades particulares como: nombre, edad, dirección, sueldo, actividad, etc.
Tipos de atributos:
ISI0514
•
Atómico: Los atributos que no son divisibles, por ejemplo: Nombre, Cédula
de identidad, Ciudad.
•
Compuestos: Cuando un atributo es dividido en pequeñas subpartes. Los
atributos compuestos pueden formar una jerarquía de atributos, por ejemplo:
Fundamentos de Bases de Datos
Página 21 de 120
Sistemas de Bases de Datos
dirección
Ciudad
Parroquia
Nombre
Calle
Número
Barrio
Nro.Dep.
•
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.
•
Atributo multivalor: Cuando un atributo tiene una serie de valores para
identificarse, por ejemplo el atributo color de un automóvil.
Automóvil
Color
•
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 número de la
cédula de identidad.
En algunos casos varios atributos juntos pueden formar una llave,
significando que la combinación 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 también 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 términos, Dominio de un atributo es el conjunto de
ISI0514
Fundamentos de Bases de Datos
Página 22 de 120
Sistemas de Bases de Datos
posibles valores que puede tomar un atributo. Por ejemplo, el rango de edad de los
empleados de una empresa es de 25 a 50 años; el estado civil de los empelados.
2.3.3 RELACIÓN:
2.3.3.1 CONCEPTO:
Una relación es cualquier asociación R que pueda establecerse entre entidades de la
misma clase o de clases diferentes.
Entidad
Personal
Entidad
Vehículo
Relación
Conductor
Personal
Vehículo
Conductor
Una relación puede incluir muchas entidades; la cantidad de entidades en una relación
es el grado de la relación. Por ejemplos:
Vendedor
Pedido
Relación de grado 2
ISI0514
Madre
Padre
Hijo
Relación de grado 3
Fundamentos de Bases de Datos
Página 23 de 120
Sistemas de Bases de Datos
Aunque el modelo E-R permite relaciones de cualquier grado, la mayoría de las
aplicaciones del modelo sólo consideran relaciones de grado 2 a las que se les llama
relaciones binarias. Ejemplos: Ríos 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 relación HABITACION-CON, podría definirse en la entidad ESTUDIANTE.
Estudiante
Empleado
1:N
HABITACION-CON
1:N
SUPERVISOR
Relación N-arias : La relación 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 relación: Son las funciones que desempeñan cada una de
las clases de entidades asociadas. En toda relación 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
podrían establecerse varias relaciones caracterizadas por los siguientes roles:
-
•
ISI0514
Dar clase a / Recibir clase de
Es tutor de / Es dirigido por
Es director de / es dirigido por
Cardinalidad de una relación: Expresa el número de entidades de una clase
que pueden asociarse a una entidad de la otra clase. En función de esta
propiedad, se distinguen tres tipos de relaciones:
Fundamentos de Bases de Datos
Página 24 de 120
Sistemas de Bases de Datos
P1
P2
P3
Persona
P1 P2 P3
1
Persona
1
conductor
N
1
v1 v2
Vehículo
v3
Vehículo
v1 v2 v3 v4 v5
v5
Cada persona maneja un vehículo, cada
vehículo es manejado por una persona
Una persona maneja varios vehículos, un
vehículo es manejado por una sola persona
(A) Relación 1:1
(B) Relación 1:N
P1 P2 P3 P4 P5
Persona
P1 P2 P3 P4
N
Persona
N
conductor
N
1
v1 v2
Vehículo
v3
v1 v2 v3 v4 v5
v5
Vehículo
Un vehículo puede ser manejado por algunas
personas. Una persona maneja un vehículo
solamente.
Una persona puede manejar un número de
vehículos, un vehículo puede ser manejado
por algunas personas.
(C) Relación N:1
(D) Relación N:M
Ejemplos:
Empleado
1:1
Auto
(a) Auto - Asignación
Dormitorio
1:N
Estudiante
(b) Dormitorio - Ocupante
-
ISI0514
Un Río 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
Fundamentos de Bases de Datos
Página 25 de 120
Sistemas de Bases de Datos
El número dentro del rombo en la relación, detalla la cantidad máxima de
entidades que pueden ocurrir en un lado de ella. En ocasiones, tales limitaciones
se denominan la cardinalidad máxima de la relación. En el ejemplo anterior (b)
la relación tiene una cardinalidad máxima de 1:N. Es posible que la cardinalidad
máxima sea distinta de 1 y N, por ejemplo en el caso de la relación EQUIPO DE
BASQUETBOL y JUGADOR, puede tener una cardinalidad máxima de 5.
Ejemplos de Cardinalidad (obtenido mediante el software Power Designer)
A) Relación 1 : 1
VEHICULO
PLACA
MARCA
MODELO
CONDUCTOR
PERSONA
CODIGO
NOMBRE
APELLIDO
Modelo de Datos Conceptual (CDM)
VEHICULO
PLACA
CODIGO
MARCA
MODELO
<pk>
<fk>
PERSONA
C(6)
C(5)
C(10)
C(10)
CODIGO
PLACA
NOMBRE
APELLIDO
CODIGO
PLACA
= CODIGO
= PLACA
<pk>
<fk>
C(5)
C(6)
C(15)
C(15)
Modelo de Datos Físico (FDM)
Relación 1 : N
VEHICULO
PLACA
MARCA
MODELO
CONDUCTOR
PERSONA
CODIGO
NOMBRE
APELLIDO
CDM
PERSONA
VEHICULO
PLACA
MARCA
MODELO
<pk>
C(6)
C(10)
C(10)
CODIGO
PLACA = PLACA PLACA
NOMBRE
APELLIDO
<pk>
<fk>
C(5)
C(6)
C(15)
C(15)
PDM
Relación N: 1
VEHICULO
PLACA
MARCA
MODELO
CONDUCTOR
PERSONA
CODIGO
NOMBRE
APELLIDO
CDM
VEHICULO
PLACA
CODIGO
MARCA
MODELO
<pk>
<fk>
PERSONA
C(6)
C(5)
C(10)
C(10)
CODIGO = CODIGO
CODIGO
NOMBRE
APELLIDO
<pk>
C(5)
C(15)
C(15)
PDM
ISI0514
Fundamentos de Bases de Datos
Página 26 de 120
Sistemas de Bases de Datos
Relación N : M
VEHICULO
PLACA
MARCA
MODELO
CONDUCTOR
PERSONA
CODIGO
NOMBRE
APELLIDO
CDM
VEHICULO
PLACA
MARCA
MODELO
<pk>
PERSONA
C(6)
C(10)
C(10)
CODIGO
NOMBRE
APELLIDO
<pk>
C(5)
C(15)
C(15)
CONDUCTO
CODIGO
PLACA = PLACA
PLACA
<pk,fk>
<pk,fk>
C(5)
C(6)
CODIGO = CODIGO
PDM
•
Participación de un conjunto de entidades: Especifica si todas las
entidades de una clase participan o no en la relación 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 participación es total, si cada entidad en E (conjunto de entidades)
participa en al menos una relación en R (Conjunto de relaciones).
La participación es parcial, si sólo alguna entidad en E participa en
relaciones en R.
Ejemplo:
Empleado
e1 *
e2 *
e3 *
e4 *
e5 *
e6 *
*
*
Jefes
R1
R2
R3
Departamento
D1
D2
D3
Participación parcial de Empleado y participación total de Departamento.
ISI0514
Fundamentos de Bases de Datos
Página 27 de 120
Sistemas de Bases de Datos
•
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, también se
suprime x. La entidad y se dice que es una entidad dominante y x una
entidad subordinada.
Como ejemplo, considérese el conjunto de entidades cuenta y el conjunto de
entidades Transacción, que mantiene información de todas las transacciones
hechas por cada una de las cuentas. El conjunto de entidades transacción se
describe mediante los atributos numero-transacción, fecha-transacción, e
importe-transacción. Se forma un conjunto de relaciones cuenta–transacción
(bitácora) entre estos dos conjuntos de entidades, que es uno a varios, desde
cuenta a transacción. Cada entidad transacción debe estar asociada con una
entidad cuenta. Si la entidad cuenta se borra, todas sus entidades
transacción asociadas se deben borrar también. En cambio, las entidades
transacción se pueden borrar de la Base de Datos sin afectar a ninguna
cuenta. En este caso la entidad cuenta es dominante y la entidad transacción
es subordinada.
Ejemplo:
y
x
Cuenta
Bitacora
Transacción
Edificio
Edi_num
Departamento
2.4 CLAVES
En el modelo Entidad – Relación, los atributos pueden ser o no Claves, según permitan
o no la identificación unívoca de las entidades de una clase o de las ocurrencias de una
relación. A continuación se exponen los conceptos relacionados con este tema:
Superclave: conjunto de uno o más atributos cuyos valores identifican
unívocamente cada entidad de la clase u ocurrencia de la relación.
Clave candidata: conjunto de uno a más atributos cuyos valores identifican
unívocamente cada entidad de la clase, sin que ningún subconjunto de ellos
pueda realizar esta misma función. Una clave candidata es una superclave
mínima. Una clase de entidad o relación puede tener varias claves candidatas.
Clave primaria: Clave candidata de una clase de entidad o relación que se elige
como identificador unívoco de sus entidades u ocurrencias.
ISI0514
Fundamentos de Bases de Datos
Página 28 de 120
Sistemas de Bases de Datos
2.5 DIAGRAMA ENTIDAD - RELACIÓN (E-R)
En un diagrama E-R las clases de entidades se muestran con rectángulos; las relaciones
mediante rombos, y la cardinalidad de la relación aparece dentro del rombo. El nombre
de la relación se muestra cerca del rombo.
Frecuentemente el nombre de la relación se coloca dentro o sobre el rombo, y para estos
casos la cardinalidad de la relación se detalla colocando “patas de gallo” en la línea que
conecta a las entidades en el lado muchos de la relación.
Dormitorio
- Ocupante
Dormitorio
Estudiante
Para expresar la cardinalidad mínima, podemos ilustrar colocando una línea
perpendicular a la línea de la relación, para así indicar que una entidad debe existir en la
relación, y colocar un óvalo perpendicular a la línea de la relación, señalando que puede
haber, o no, una entidad en la relación. En el siguiente ejemplo se tiene que: un
DORMITORIO debe tener una relación con un ESTUDIANTE al menos, pero que no
se requiere que un ESTUDIANTE, tenga una relación con un DORMITORIO.
En este caso, DORMITORIO posee una cardinalidad mínima de 1 y una cardinalidad
máxima de múltiples entidades ESTUDIANTE. Un ESTUDIANTE tiene una
cardinalidad mínima de cero y una cardinalidad máxima de una entidad
DORMITORIO.
Dormitorio
1:N
Estudiante
Dormitorio – Ocupante
En algunas versiones de los diagrama s E–R los atributos se representan con elipses que
se conectan con la entidad o la relación a la que pertenece. La identificación de los
atributos que forman la clave primaria en un diagrama Entidad – Relación puede
representarse, subrayando el nombre del atributo.
Elipses dobles que representan atributos multivalor, elipses discontinuas que denotan
atributos derivados, líneas dobles que indican participación total de una entidad en un
conjunto de relaciones.
ISI0514
Fundamentos de Bases de Datos
Página 29 de 120
Sistemas de Bases de Datos
Ejemplo:
Nom-Dormi
Numero de
estudiantes
Ubicación
Dormitorio
1:N
Cantidad de
Habitaciones
Renta
Estudiante
Nombre de
estudiante
Año del
estudiante
Entidades fuertes y débiles: Una entidad fuerte es aquella entidad con identificador
interno y una entidad débil 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 débiles aquellas que pueden no tener
suficientes atributos para formar una clave primaria.
Los conceptos de entidades “débil y fuerte”, están relacionados con el concepto de
dependencia de existencia. Un miembro de un conjunto de entidades fuerte es por
definición una entidad dominante, mientras que un miembro de un conjunto de
entidades débiles es una entidad subordinada. La entidad débil se puede representar con
un rectángulo de doble contorno.
2.6 REDUCCIÓN 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 colección 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
número 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 / Relación se basa en los siguientes principios:
ISI0514
•
Todo tipo de entidad se convierte en una tabla.
•
Todo tipo de relación N:M se transforma en una tabla.
•
Todo tipo de relación 1:N se traduce en el fenómeno de propagación de la
clave o bien se crea una nueva relación.
Fundamentos de Bases de Datos
Página 30 de 120
Sistemas de Bases de Datos
2.6.1 REGLAS DE TRANSFORMACIÓN:
2.6.1.1 RELACIÓN N:M
Un tipo de relación de N:M se transforma en una relación que tendrá como clave
primaria la concatenación de los identificadores de cada entidad que asocia. Cada uno
de los atributos que forman la llave primaria de una tabla derivada de una relación N:M,
son llave foráneas respecto de cada una de las tablas de las entidades que se relacionan.
Autor
N
Escribe
N
Libro
AUTOR(cod-autor, Nombre, apellido)
LIBRO(cod- libro, título)
ESCRIBE (cod-autor, cod-libro)
La tabla ESCRIBE está formada por las columnas cod-autor que es llave foránea que
referencia a la tabla AUTOR, cod- libro llave foránea que referencia a la tabla LIBRO.
2.6.1.2 RELACIÓN 1:N
Como se indicó anteriormente todo tipo de relación 1:N se traduce en el fenómeno de
propagación de la clave.
Existen casos en que es necesario transformarla en una tabla, como si se tratara de una
relación N:M, siendo conveniente en los siguientes casos:
•
El número de ocurrencias de la entidad que propaga la clave es muy
pequeño, evitando los valores nulos.
Empleado
Departamento
NOMBRE
APELLIDO
ND
Juan
Pedro
----------------Pablo
Luis
Torre
Calle
---------------------Pere z
Polo
1
1
Null
Null
Null
Null
2
3
DNO
1
2
3
NOMBRE
Técnico
Cómputo
Producción
Para evitar los valores nulos en la tabla EMPLEADO, se recomienda crear una
nueva tabla de la relación.
•
•
ISI0514
Cuando se prevé que en el futuro dicha relación se convierta en una N:M
Cuando la relación tiene atributos propios.
Fundamentos de Bases de Datos
Página 31 de 120
Sistemas de Bases de Datos
2.6.1.3 RELACIÓN 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 participación parcial en la relación, es recomendable
crear una nueva tabla de la relación, para evitar valores nulos.
1
Hombre
1
Matrimonio
Mujer
HOMBRE (cod-hombre, ………)
MUJER (cod- mujer, ………)
MATRIMONIO (cod-hombre, cod-mujer)
Para el caso en que una de las entidades tenga una participación total y la otra parcial,
conviene propagar la clave de la entidad con participación parcial.
Empleado
1
1
Jefe
Departamento
EMPLEADO (cod-empleado, nombre, ……..)
DEPARTAMENTO (dno, cod-empleado, nombre, ……………)
Si la participación es total para las dos entidades, se puede propagar la clave en
cualquiera de las dos direcciones.
2.6.1.4 ATRIBUTOS DE UNA RELACIÓN.
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 REDUCCIÓN
Num_
Fecha
Nom_cli
Num_Cta
N
CtaCli
Cliente
CI
N
1
Cuenta
Fecha
Saldo
Bitácora
N
Transacción
Calle
Cantidad
Ciudad
ISI0514
Fundamentos de Bases de Datos
Página 32 de 120
Sistemas de Bases de Datos
Num-Cta
Saldo
259
630
401
700
199
467
115
183
118
225
210
Tabla Cuenta
1000
2000
5000
500
1300
900
1200
1300
2000
2500
2200
Num-Cta
Num_tran
Fecha
Cantidad
259
5
630
11
401
22
700
69
199
103
259
6
259
53
259
104
259
7
Tabla Transacción
11-ago-97
17-ago-97
23-ago-97
28-ago-97
3-sep-97
7-sep-97
7-sep-97
13-sep-97
17-sep-97
50
70
-300
-500
900
-44
120
-200
-79
Nom-Cli
CI
Calle
Ciudad
Pablo
Antonio
Alberto
Manuel
Pedro
Juan
Andrés
654-32
890-12
456-78
369-12
246-80
121-21
135-79
Bolívar
Sucre
Boyacá
9 octubre
Talbot
Amazonas
Borrero
Cuenca
Cuenca
Guayaquil
Guayaquil
Quito
Quito
Cuenca
Tabla Clientes
CI
Num-Cta
654-32
259
654-32
630
890-12
401
456-78
700
369-12
199
246-80
467
146-80
115
121-21
183
135-79
118
135-79
225
135-79
210
Tabla CtaCli
ISI0514
Fecha
17/jun/1990
17/may/1990
23/may/1990
28/may/1990
13/jun/1990
7/jun/1990
7/jun/1990
13/jun/1990
17/jun/1990
19/jun/1990
27/jun/1990
Fundamentos de Bases de Datos
Página 33 de 120
Sistemas de Bases de Datos
2.7 AGREGACIÓN
Los conceptos analizados en los numerales anteriores, son los conceptos básicos el
modelo E – R con los que se puede modelar la mayoría de las características de las
bases de datos. Sin embargo existen ciertos aspectos de una base de datos que serán
expresados de mejor manera, mediante extensiones del modelo E – R, como es el caso
de la agregación.
En el modelo E –R no es posible expresar relaciones entre relaciones, para modelar una
situación como ésta se usa la agregación, que es una abstracción a través de la cual las
relaciones se tratan como entidades de nivel más 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
relación entre estas dos entidades la denominamos impositor. Si al par cliente - cuenta
le asignamos privilegios (solicitar sobregiro, cerrar cuenta, etc), que están definidos en
la entidad privilegios, estaríamos en el caso de modelar una relación entre relación.
Como el modelo no admite esta expresión, necesitamos crear una agregación,
generando una entidad de nivel más alto formada por la relación prestatario y las
entidades cliente y cuenta. Esta entidad de nivel más alto se trata de la misma forma que
cualquier otro conjunto de entidades.
Nombre
CI
Dirección
Cliente
Num_cue
Impositor
Importe
Cuenta
Privilegi o
codigo
Descripció
n
El modelo entidad - relación no admite relaciones entre relaciones, razón por la cual no
es posible generar el diagrama anterior, relacionando impositor con privilegio.
A continuación se muestra el diagrama E –R con el uso de agregación.
ISI0514
Fundamentos de Bases de Datos
Página 34 de 120
Sistemas de Bases de Datos
Nombre
CI
Dirección
Cliente
Importe
Num_cue
Impositor
Cuenta
Privilegi o
codigo
ISI0514
Descripció
n
Fundamentos de Bases de Datos
Página 35 de 120
Sistemas de Bases de Datos
2.7 EJEMPLOS DE MODELO E-R
2.7.1 Se requiere llevar un control de las calificaciones de los exámenes de los
estudiantes en cada una de las materias. A lo largo del curso se realizarán dos
aportes y el examen final. Los datos que se registrarán para los alumnos serán su
nombre, apellido, número de cédula, fecha de ingreso, edad y para el caso de las
materias su nombre y número de créditos.
Fecha_ingreso
Edad
N-Matricula
Apellido
Nombre
Estudiante
CI
N
Aporte-1
Calificación
Final
Aporte-2
N
Código
N_créditos
Materia
Nombre
De este modelo aparecen las siguientes tablas:
ESTUDIANTE
MATERIA
ISI0514
CI
NOMBRE
APELLIDO
FECHA_ING
N_MATRICULA
1101775849
Nelly
1234567890
Mario
Barrera
1-Oct-95
5630
Fajardo
5-Nov-98
7810
9876543210
Luis
Arias
9-Sep-99
9315
1122334455
Francisco
Cabrera
7-May-99
9148
.....
.....
.....
.....
.....
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
.....
.....
.....
Fundamentos de Bases de Datos
Página 36 de 120
Sistemas de Bases de Datos
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 podrían establecer las claves
correspondientes.
ESTUDIANTE
Superclaves:
CI, Edad
N_Matrícula, CI
N_Matrícula, Fecha_Ing. Edad
Claves Candidatas:
CI
N_Matrícula
Clave Primaria:
CI
Se considera que el Número de Matrícula es un valor único para cada estudiante, por lo
que permite identificar de forma unívoca a cada estudiante. Este atributo también
podría haberse escogido como cla ve primaria en vez de la CI. La elección de uno u otro
es indiferente en este caso.
MATERIA
Superclaves:
Código, Nombre
Código, Creditos
Claves Candidatas:
Código
Nombre
Clave Primaria:
Código
La clave primaria de una relación se forma por unión de las claves primarias de las
clases de entidades que interviene en dicha relación. Teniendo en cuanta este principio,
las claves correspondientes a la relación Calificación serían las siguientes:
ISI0514
Fundamentos de Bases de Datos
Página 37 de 120
Sistemas de Bases de Datos
CALIFICACION
Superclaves:
CI, Código, Aporte_1
CI, Código, Aporte_2
CI, Código, Final
Claves Candidatas:
CI, Código
Clave Primaria:
CI, Código
ISI0514
Fundamentos de Bases de Datos
Página 38 de 120
Sistemas de Bases de Datos
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, Líneas de investigación.
-
Profesores: Los profesores pertenecen a un departamento específico, dan
clases a uno o varios cursos, y se caracterizan por su Nombre y Apellido,
CI, Título(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 matrícula, Código, Edad,
Expediente Académico.
-
Cursos: Cada curso de una universidad es dirigido y administrado por un
solo departamento, está formado por un número 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, Ubicación.
Tip
Nombre
Universidad
1
Se compone de
Apellido
Especialida
d
N
Están
matriculados
1
N
1
Departamento
1
Nombre
N
Nombre
Alumno
CI
Profesor
N
Se compone
de
Nombre
N
Asiste a
Da clases a
N
Codigo
Fe_Na
N
N
Títulos
Curso
Id_cu
ISI0514
Pertenece a
Nro_Alumnos
Fundamentos de Bases de Datos
Página 39 de 120
Sistemas de Bases de Datos
2.7.3
Ejemplo de un modelo Entidad – Relación para una Compañía, 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 número de empleados. En el modelo se especifica
también las cargas familiares de los empleados. (Ref: Fundamentals of
DataBase Systems. Elmasri/Navathe)
Fecha_N
Número
Apellido
Nombre
Sexo
Nombre
Locales
Dirección
Trabaja
para
N
CI
Empleado
1
Departamento
Fecha_i
Num_Emp
Salario
1
1
N
1
Jefe
Supervisor
1
Horas
Controla
N
N
Trabaja _en
N
Proyecto
1
Dependen de
Num
Nombre
N
Localización
Carga_f
Nombre
Relación
Fe_Na
Sexo
ISI0514
Fundamentos de Bases de Datos
Página 40 de 120
Sistemas de Bases de Datos
Reducción del modelo E - R de la Compañía a tablas
EMPLEADO
NOMBRE APELLIDO
Juan
CI
FECHA_N
DIRECCIÓN
SEXO SALARIO
SUPERCI
DNO
Polo
123456789 3-mar-59
Sucre 7-12
M
3000 333445555
5
Humberto Pons
333445555 25-dic-60
Bolívar 5-67
M
4000 888665555
5
Irma
Vega
999887777 13-nov-50 P. Córdova 3-45
F
2500 987654321
4
Elena
Tapia
987654321 3-may-61
F
4300 888665555
4
Pablo
Castro
666884444 15-sep-55 Bolívar 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
Pérez
888665555 5-abr-57
Sangurima 8-34
M
5500
1
DEPARTAMENTO
DNOMBRE
DNUMERO
JEFECI
JEFE_FI
Investigación
5
333445555
12-may-80
Administrativo
4
987654321
05-dic-82
Compras
1
888665555
06-jun-78
LOCALIZACION DNUMERO
TRABAJA_ EN
ISI0514
Ordóñez 7-29
null
DEP_LOCA
1
Cuenca
4
Guayaquil
5
Quito
5
Manta
5
Cuenca
ECI
PNO
HORAS
123456789
1
12,5
123456789
2
15,6
666884444
3
14,7
453453453
1
10
453453453
2
10
333445555
2
20
333445555
3
10
333445555
10
10
333445555
20
10
999887777
30
30
999887777
10
5
987987987
10
15
987987987
30
17
987654321
30
10
987654321
20
12
888665555
20
NULL
Fundamentos de Bases de Datos
Página 41 de 120
Sistemas de Bases de Datos
PROYECTO
CARGA_F
ISI0514
PNOMBRE
PNUMERO
PLOCAL
DNUM
ProductoX
ProductoY
ProductoZ
Computadora
Reorganizar
Beneficios
1
2
3
10
20
30
Quito
Manta
Cuenca
Guayaquil
Cuenca
Guayaquil
5
5
5
4
1
4
ECI
DEP_NOM
SEXO
FECHAN_N
RELACION
333445555
María
F
2/02/86
hija
333445555
Teodoro
M
10/10/90
hijo
333445555
Ana
F
15/09/65
cónyuge
987654321
Alberto
M
6/07/67
cónyuge
123456789
Miguel
M
5/11/84
hijo
123456789
María
F
9/01/87
Hija
123456789
Elizabeth
F
12/12/60
Cónyuge
Fundamentos de Bases de Datos
Página 42 de 120
Sistemas de Bases de Datos
CAPITULO 3
EL MODELO RELACIONAL
“No hay que confundir un diagrama de esquema con un diagrama entidad – relación.
En particular, los diagrama E – R no muestran explícitamente los atributos llave
externa, mientras que los diagramas de esquema si”. 1
El presente capítulo está dividido en dos partes, la primera corresponde a la Estructura
de la Base de Datos Relacionales y la segunda a la dinámica 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 colección de
relaciones. Cada relación se asemeja a una tabla, en donde; cada fila de la tabla
representa una colección de datos conexos o afines. Los nombres de la tabla y de la
columna son usados para ayudar en la interpretación del significado de los valores de
cada fila de la tabla.
La relación es el elemento básico del Modelo Relacional y se representa por una tabla.
Informalmente, los términos y su equivalente son:
Relación
Tupla
Atributo
Número de tuplas
Número de atributos
Dominio
Clave primaria
Tabla
Fila
Columna
Cardinalidad
Grado
Colección de valores, de los cuales uno o más atributos obtienen
sus valores reales
Identificador único para la tabla, es decir, una columna o
combinación de columnas con la propiedad de que nunca existen
2 filas de la tabla con el mismo valor en esa columna o
combinación de columnas.
Es importante indicar que la tabla es plana en el sentido de que el cruce de un fila y una
columna sólo puede dar un valor.
3.1.2 DOMINIO y ATRIBUTO.
1
Silberschatz – Korth - Sudarshan, Fundamentos de Bases de Datos, cuarta edición, 2002
ISI0514
Fundamentos de Bases de Datos
Página 43 de 120
Sistemas de Bases de Datos
•
Dominio.
Se entiende por dominio D al conjunto finito de valores homogéneos y atómicos
V1, V2, .... Vn, caracterizados por un nombre. Homogéneo significa que los
valores son todos del mismo tipo y atómicos significa que son indivisibles, es
decir, si se descompone se perdería la semántica del dominio.
Ejemplos:
-
Dominio de Nacionalidades: Ecuatoriana, Peruana, Colombiana, etc.
-
Dominio Edad_Empleado: Posible edad de los empleados de una compañía;
un valor entre 18 y 50 años.
-
Dominio teléfono: La colección de siete números telefónicos 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 máxima de 20.
Un tipo de datos o un formato son también especificados por cada dominio. Por
ejemplo, el número telefónico podemos especificar como (d)ddd-ddd, donde d es
un número entero y el primer dígito representa un código 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,
sólo se puede comparar atrib utos definidos sobre el mismo dominio.
Dominio compuesto: Es una combinación de dominios simples que tiene un
nombre y sobre él se puede aplicar ciertas restricciones de integridad. Por
ejemplo: un usuario podría manejar además de los tres dominios Día, Mes, Año,
un dominio compuesto llamado Fecha que sería la combinación de los tres, al
que podríamos aplicar restricciones de integridad a fin de que no aparezcan
valores no válidos para la fecha.
Todos los atributos compuestos como los dominios compuestos pueden ser
tratados como piezas únicas de información, es decir, como valores atómicos.
•
Atributo.
Un atributo A es el papel que tiene un determinado dominio D en una relación.
Se dice que D es el domino de A y se denota dom(A).
El modelo relacional admite sólo atributos simples, monovalentes.
ISI0514
Fundamentos de Bases de Datos
Página 44 de 120
Sistemas de Bases de Datos
Los atributos compuestos se pueden transformar según 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:
CI
PERSONA
Dirección
Nombre
Calle
Número
Ciudad
Para la primera alternativa de transformación el esquema relacional sería:
Persona (CI, Nombre, Calle, Número, Ciudad)
Para la segunda:.
Persona (CI, Dirección)
La transformación de atributos polivalentes o multivalor requieren la
introducción de relaciones nuevas; cada atributo polivalente distinto requiere una
relación en la cua l pueda estar representado como atributo monovalente. La
nueva relación contiene el atributo polivalente más el identificador de la entidad
original; el identificador de la nueva relación es el conjunto de todos sus
atributos.
Ejemplo:
CI
PERSONA
(1,n)
ISI0514
Dirección
Fundamentos de Bases de Datos
Nombre
Calle
Número
Ciudad
Página 45 de 120
Sistemas de Bases de Datos
Esquema relacional:
Persona (CI, Nombre)
Dirección (CI, Calle,
referencia a Persona.
Número,
Ciudad) con CI como clave foránea que
3.1.3 RELACIÓN
Una relación 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 términos más precisos, de
pares de atributo-domino {(A1:D1), (A2:D2), .... ,(An:Dn)}, donde cada atributo Aj
corresponde a uno y sólo uno de los dominios Dj.
El Cuerpo está formado por un conjunto de tuplas, que varían 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 número de tuplas del conjunto.
En una relación se debe cumplir las siguientes restricciones:
-
Las celdas de la tabla deben ser de valores únicos.
-
Cada atributo sólo 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 idénticas dos tuplas.
-
No es importante el orden de las tuplas.
3.1.4 CLAVES.
Los conceptos de claves que fueron analizadas en el Capítulo 2, también son aplicables
en el modelo relacional.
•
Clave Candidata:
Es un conjunto no vacío de columnas que identifican unívoca y mínimamente
cada tupla. Toda relación siempre tendrá una clave candidata.
ISI0514
Fundamentos de Bases de Datos
Página 46 de 120
Sistemas de Bases de Datos
•
Clave Primaria:
Es aquella clave candidata que es elegida por el diseñador de la base de datos
como elemento principal para identificar las tuplas de la relación.
•
Claves Altenativas:
Son aquellas claves candidatas que no han sido escogidas como claves
primarias.
•
Clave Ajena o Foránea:
De una relación R2 es un conjunto no vacío de atributos cuyos valores han de
coincidir con los valores de la clave primaria de una relación R1. Debe tenerse
en cuenta que la clave ajena y la correspondiente clave primaria han de estar
definidas sobre el mismo dominio.
3.2 DINÁMICA DEL MODELO RELACIONAL
El componente dinámico del Modelo Relacional se divide en dos partes:
•
Álgebra relaciona y
•
Cálculo relacional.
El álgebra relacional se basa en un conjunto de operadores que operan sobre relaciones.
El cálculo relacional se basa en predicados que definen un estado objetivo de la Base de
datos. Dentro de éstos tenemos el cálculo relacional orientado a tuplas y el cálculo
relacional orientado a dominios.
3.2.1 ALGEBRA RELACIONAL
3.2.1.1 INTRODUCCIÓN.
El Algebra Relacional es una colección de operaciones que son usadas para manipular
relaciones. Estas operaciones seleccionan tuplas de relaciones individuales o combina
tuplas de varias relaciones, con el propósito de especificar una búsqueda o consulta en
la base de datos. El resultado de cada operación es una nueva relación, la misma que
puede ser también 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 matemáticas: la UNION,
INTERSECCION, DIFERENCIA, y PRODUCTO CARTESIANO. El otro grupo
conforma las operaciones desarrolladas específicamente para el manejo de bases de
datos relacionales e incluye las operaciones SELECT, PROJECT y JOIN.
ISI0514
Fundamentos de Bases de Datos
Página 47 de 120
Sistemas de Bases de Datos
3.2.1.2 OPERACIÓN SELECT.
Es utilizada para seleccionar tuplas en una relación. Estas tuplas deben satisfacer una
condición de selección.
Operación: Unaria
Formato:
σ <condición de selección>(<nombre de la relación>)
Donde: - σ Denota la operación SELECT
- <Condición de selección> expresión booleana de la forma:
<nombre atributo><comparación><valor constante>, o
<Nombre atributo><comparación><nombre atributo>.
La comparación normalmente tiene los operadores: {=,<, ≥,>,≤,≠}.
Condiciones: AND, OR, y NOT
- <nombre relación> Nombre de la relación.
Nota: Los ejemplos que se presentan en este capítulo están realizados sobre la base de la tablas del modelo E R para Compañías del Capítulo 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 más de 4000.
σ(DNO=4 AND SALARIO > 2500) OR (DNO=5 AND SALARIO > 4000)(EMPLEADO)
3.2.1.3 OPERACIÓN PROJECT.
La operación PROJECT selecciona columnas de una tabla, las otras columnas son
eliminadas. Si nos interesamos en ciertos atributos de una relación, utilizamos la
operación PROJECT.
Formato:
π <lista de atributos>(<nombre relación>)
Ejemplos:
- Crear una tabla con el sexo y salario de los empleados.
π SEXO, SALARIO (EMPLEADO).
ISI0514
Fundamentos de Bases de Datos
Página 48 de 120
Sistemas de Bases de Datos
Secuencia de operaciones:
Es posible escribir operaciones con una simple expresión del álgebra relacional.
Ejemplos:
-
Recuperar el primer nombre, el último nombre y el salario de los empleados que
trabajan en el departamento 5.
π NOMBRE,APELLIDO,SALARIO(σ DNO= 5(EMPLEADO)).
R
Renombrar atributos:
Ejemplo:
TEMP
σ DNO=5 (EMPLEADO)
R(FNAME,LNAME,SALARY)
π NOMBRE,APELLIDO,SALARIO(TEMP)
3.2.1.4 OPERACIONES TEÓRICAS.
El siguiente grupo de operaciones son las correspondientes a las operaciones de la
matemática estándar.
•
UNION: El resultado de esta operación denotada por R ∪ S, es una relación
que incluye tuplas que están en R o en S o en ambas. Las tuplas duplicadas
se eliminan.
•
INTERSECCIÓN: El resultado de esta operación denotado por R ∩ S, es
una relación que incluye todas las tuplas que están en la relación R y en la
relación S.
•
DIFERENCIA: El resultado de esta operación denotada por R-S, es una
relación que incluye todas las tuplas que están en R pero no en S.
La operación UNION e INTERSECCION son conmutativas
R ∪ S = S ∪ R, y R ∩ S = S ∩ R
También cumplen la propiedad de ser asociativas.
R ∪ (S ∪ T) = (R ∪ S) ∪ T, y
(R ∩ S) ∩ T = R ∩ (S ∩ T).
La operación DIFERENCIA no es conmutativa:
R–S≠S–R
ISI0514
Fundamentos de Bases de Datos
Página 49 de 120
Sistemas de Bases de Datos
Ejemplos:
ESTUDIANTE
(a)
(c)
(a)
(b)
(c)
(d)
NOMBRE
APELLIDO
Susana
Juan
INSTRUCTOR
FNAME
LNAME
Perez
Pablo
Medina
Reyes
Ricardo
Duran
Jaime
Torres
Susana
Perez
Freddy
Flores
Francisco
Lopez
Antonio
Gómez
Juan
Reyes
Ana
Rojas
María
Garcia
NOMBRE
APELLIDO
Susana
Juan
Jaime
Torres
Freddy
Flores
Antonio
Gómez
Ana
Rojas
María
Garcia
Pablo
Medina
Ricardo
Duran
Francisco
Lopez
NOMBRE
APELLIDO
Jaime
Freddy
(b)
NOMBRE
APELLIDO
Perez
Susana
Perez
Reyes
Juan
Reyes
NOMBRE
APELLIDO
Torres
Pablo
Medina
Flores
Ricardo
Duran
Antonio
Gómez
Francisco
Lopez
Ana
Rojas
María
Garcia
(d)
ESTUDIANTE ∪ INSTRUCTOR
ESTUDIANTE ∩ INSTRUCTOR
ESTUDIANTE – INSTRUCTOR
INSTRUCTOR – ESTUDIANTE
•
ISI0514
PRODUCTO CARTESIANO: Operación binaria representada por ⊗ . En
general, el resultado de las relaciones R ⊗ S de R(A1,A2,...,An) ⊗
S(B1,B2...Bm) es una relación Q con n * m atributos
Q(A1,A2,...,An,B1,B2,...,Bm). El resultado de la relación Q tiene un tupla de
cada combinación de tuplas, una de R y una de S.
Fundamentos de Bases de Datos
Página 50 de 120
Sistemas de Bases de Datos
Ejemplo:
Nom-cliente
Nom-banquero
Nom-cliente
Calle
Ciudad_clie
Arévalo
Torres
Pérez
Gonsález
Vélez
Arroyo
Vega
Torres
Orellana
Illescas
Perez
Sucre
Cordova
Boyaca
Larga
Gasca
Cuenca
Cuenca
Guayaquil
Cuenca
Quito
Nom-cliente
Nom-banquero
Nom-cliente
Calle
Ciudad_clie
Arévalo
Arévalo
Arévalo
Arévalo
Arévalo
Torres
Torres
Torres
Torres
Torres
Pérez
Pérez
Pérez
Pérez
Pérez
Gonzales
Gonzales
Gonzales
Gonzales
Gonzales
Velez
Velez
Velez
Velez
Velez
Arroyo
Arroyo
Arroyo
Arroyo
Arroyo
Vega
Torres
Orellana
Illescas
Pérez
Vega
Torres
Orellana
Illescas
Pérez
Vega
Torres
Orellana
Illescas
Pérez
Sucre
Córdova
Boyaca
Larga
Gasca
Sucre
Córdova
Boyaca
Larga
Gasca
Sucre
Córdova
Boyaca
Larga
Gasca
Cuenca
Cuenca
Guayaquil
Cuenca
Quito
Cuenca
Cuenca
Guayaquil
Cuenca
Quito
Cuenca
Cuenca
Guayaquil
Cuenca
Quito
3.2.1.5 OPERACIÓN JOIN
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 CONDICIÓN> S
El resultado de la operación join es una relación Q con n + m atributos
Q(A1,A2,..,An,B1,B2,...Bm); Q tiene una tupla por cada combinación de tuplas, una por
R y una por S, sin embargo, la combinación satisface la <join condición>. Esta es la
principal diferencia entre el PRODUCTO CARTESIAONA y el JOIN; En un join,
solame nte las combinaciones que satisfacen la condición aparecen en el resultado, en
tanto que en el producto cartesiano todas las combinaciones de tuplas se incluyen en el
resultado.
La <join condición> es de la forma:
<condición> AND <condición> AND....AND<condición>
ISI0514
Fundamentos de Bases de Datos
Página 51 de 120
Sistemas de Bases de Datos
donde cada condición 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
comparación {=, <, ≤, >, ≥, ≠}. Una operación join con condiciones de este tipo se lo
llama THETA JOIN.
Los más comunes join envuelven condiciones únicamente de igualdad, utilizando el
operador =. A este tipo de join se le denomina EQUIJOIN.
NATURAL JOIN : Idéntico al EQUIJOIN, excepto que los <join atributos> de R2 no
son incluidos en el resultado de la relación. Está denotada por *.
R1 * <JOIN CONDICIÓN>, o
R1 *( <join atributo>),(<join atributo2>) R2 o
R1 * R2.
Ejemplos:
-
Recuperar el nombre del jefe de cada departamento.
DEPARTAMENTO X JEFECI = CI EMPLEADO
DEPT_JEFE
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
relación DEPARTAMENTO.
Si los join atributos tienen el mismo nombre en ambas relaciones, se puede escribir
la instrucción obviando el nombre de los join atributos.
DEPT_LOCS
DEPARTAMENTO* LOCALIZACION
Nótese que el nombre de los join atributos, es el mismo DNUMERO para las dos
relaciones.
3.2.1.6 LA OPERACIÓN DIVISION.
Operación binaria representada por el símbolo ÷, se establece para aquellas consultas
que incluyen la frase “para toda”.
ISI0514
Fundamentos de Bases de Datos
Página 52 de 120
Sistemas de Bases de Datos
R A
a1
a2
a3
a4
a1
a3
B
b1
b1
b1
b1
b2
b2
S A
a1
a2
a3
a2
b3
T
a3
a4
a1
a2
a3
b3
b3
b4
b4
b4
B
b1
b4
R÷ S
T
3.2.1.7 FUNCIONES.
Consideramos las siguientes operaciones aplicadas a la colección de valores numéricos:
SUM
AVERAGE
MAXIMUN
MINIMUN
COUNT
: Suma
: Media aritmética
: Valor máximo
: Valor mínimo
: Contador.
Las funciones están denotadas por el símbolo ℑ. Su formato es:
<grupo atributos> ℑ <lista funciones>(<nombre relación>)
Donde <grupo atributos> es una lista de atributos de la relación especificada en
<nombre relación>, y <lista funciones> es una lista de pares (<función><atributo>)
Ejemplo:
-
Recuperar, para cada número de departamento, el número de empleados en el
departamento y su salario promedio.
R(DNO, N_EMPLEADOS, SALARIO_PROME)
DNO ℑ COUNT CI, AVERAGE SALARIO (EMPLEADO)
R
DNO
5
4
1
ISI0514
N_EMPLEADOS SALARIO_PROME
4
3
1
3325
3100
5500
Fundamentos de Bases de Datos
Página 53 de 120
Sistemas de Bases de Datos
Si no especificamos el <grupo atributos>, la función es aplicada a todas las tuplas de la
relación, y como resultado se obtiene una simple relación.
ℑ 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 relación R, los
nombres son aplicados desde la <función>_<atributos>.
DNO ℑ COUNT CI, AVERAGE SALARIO(EMPLEADO)
DNO
COUNT_CI
5
4
1
AVERAGE_SALARIO
4
3
1
3325
3100
5500
3.3 EJERCICIOS
3.3.1
Modelo Relacional.
Ejercicio 1.
Se desea implementar una solución de base de datos que describa las pruebas de
autocomprobación para cada una de las materias que se imparten en una universidad, de
acuerdo con los siguientes criterios:
-
Se realiza una prueba de autocomprobación para cada uno de los capítulos 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é capítulo han sido respondidas por cada alumno, de
manera que si ya ha sido respondida no se vuelvan a almacenar sus datos. Sólo es
posible que el alumno responda a un capítulo de una determinada Materia, sólo una
vez.
MATERIA (Cod_Materia, Descripción, Contenido, Duración)
CAPITULO (Cod_Materia, Cod_Capitulo, Título_Capítulo)
ISI0514
Fundamentos de Bases de Datos
Página 54 de 120
Sistemas de Bases de Datos
PREGUNTAS (Cod_Materia, Cod_Capítulo, Cod_Pregunta, Enunciado)
RESPUESTAS (Cod_Materia, Cod_Capítulo, Co d_Pregunta, Cod_Respuesta,
Texto)
PROFESORES (Cod_Profesor, Nombre, Apellidos, Dirección, Teléfono)
IMPARTEN (Cod_Materia, Cod_Profesor)
ALUMNOS (Cod_Alumno, Nombre, Apellidos, Dirección, Teléfono)
EXAMENES (Cod_Alumno, Cod_Materia, Cod_Capitulo, Fecha, Calificación )
Ejercicio 2
Deseamos diseñar una Base de Datos que recoja la organización de una universidad. Se
considera que:
-
Los departamentos pueden estar en una sola facultad o ser interfacultativos.
-
Una cátedra se encuentra en un único departamento.
-
Una cátedra pertenece a una sola facultad.
-
Un profesor está siempre asignado a un único departamento y adscrito a una o varias
cátedras, pudiendo cambiar de cátedra 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.
DEPARTAMENTOS (CodDpto, DescripcionDpto, JefeDpto, Edificio, Planta,
CodAreaCon)
FACULTADES (CodFac, DescripcionFac, Rector)
CATEDRAS (CodCat, CodDpto, CodFac)
PROFESORES (CodProf, Nombre, CodDpto, Fecha_de_admisión )
AREACONOCIMIENTO (CodAreaCon, DescripcionArea)
DPTO-FAC (CodDpto, CodFac)
PROF-CAT (CodProf, CodCat)
Ejercicio 3
Se desea diseñar una Base de datos que contenga la información relativa a las carreteras
de un país, sabiendo que:
-
En dicho país 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 términos municipales, siendo un dato de interés el
kilómetro del tramo por el que entra en dicho término municipal, y el kilómetro por
el que sale.
ISI0514
Fundamentos de Bases de Datos
Página 55 de 120
Sistemas de Bases de Datos
-
Existe una serie de áreas en la que se agrupan los tramos, cada uno de los cuales no
puede pertenecer a más de un área.
CARRETERAS (CodCarretera ; DescripcionCarr)
TRAMOS (CodTramo, DescripcionTramo, CodCarretera, CodArea )
MUNICIPIOS (CodMunicipio, DescripcionMcpio)
TRAMO-MCPIO (CodTramo, CodMunicipio, KmEntra, kMSale)
AREAS (CodArea, DescripcionArea)
3.3.2
Algebra Relacional.
1. Seleccionar las tuplas para todos los empleados que trabajan en el
departamento 1 y ganan más de $ 2000 o trabajan en el departamento 4 y
ganan más 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 más de $ 3000 o trabajan en el departamento 4 y
ganan más 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 ciudadanía 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.
ISI0514
Fundamentos de Bases de Datos
Página 56 de 120
Sistemas de Bases de Datos
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 continuación:
EMP_DEP5
NOMBRE INICIAL APELLIDO
CI
FECHA_N
DIRECCIÓN
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
Bolívar 5-67
M
4000 888665555
5
Pablo
K
Castro
666884444 15-sep-55 Bolívar 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
ISI0514
(con join)
Fundamentos de Bases de Datos
Página 57 de 120
Sistemas de Bases de Datos
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
DEP_COMP ← σ DEP_NOM = ‘Compras’ (DEPARTAMENTO)
R2 ← EMPLEADO * DNO = DEP_NUM DEP_COMP
RESULTADO ← Π NOMBRE, APELLIDO, CI (R2)
7.
Para cada empleado recuperar su nombre y apellido y el nombre y apellido
de su supervisor.
E_E
(E_NOMBRE, E_APELLIDO, E_SUPERCI) ← Π NOMBRE,
APELLIDO, SUPERCI (EMPLEADO)
E_S (S_NOMBRE, S_APELLIDO, S_SUPERCI) ← Π NOMBRE,
APELLIDO, CI (EMPLEADO)
R1 ← E_E * E_SUPERCI = S_CI E_S
RESULTADO
←
E_NOMBRE,
E_APELLIDO,
S_NOMBRE,
S_APELLIDO ( R1)
8. Listar el nombre del empleado y su número de dependientes.
R1 (CI, NUMERO_D) ← ECI τ COUNT DEP_NOM (CARGA_F)
R2 ← EMPLEADO * CI = ECI R1
RESULTADO ← Π NOMBRE, NUMERO_D (R2)
9. Listar el nombre y cédula de ciudadanía de los empleados que tienen más de
dos dependientes.
R1 (CI, NUMERO_D) ← ECI τ COUNT DEP_NOM (CARGA_F)
R2 ← σ NUMERO_D > 2 (R1)
RESULTADO ← Π NOMBRE, CI (R2 * EMPLEADO)
10. Determinar el número de horas totales trabajadas por cada empleado.
R1 (CI, TOTAL_HORAS) ← ECI τ SUM HORAS (TRABAJA_EN)
RESULTADO
← Π NOMBRE, APELLIDO, TOTAL_HORAS
(EMPLEADO * R1)
ISI0514
Fundamentos de Bases de Datos
Página 58 de 120
Sistemas de Bases de Datos
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 cálculo relacional de dominio; QUEL
está basado en el cálculo relacional de tuplas y SQL (STRUCTURE QUERY LANGUAGE)
usa una combinación de construcciones del álgebra relacional y del cálculo relacional.
En este capítulo se hace referencia al lenguaje SQL, el mismo que está compuesto por
comandos, cláusulas, 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 manipulación de datos. Existen cuatro postulados de SQL para realizar las
funciones básicas de manipulación (DML) de datos:
Comando
SELECT
INSERT
UPDATE
DELETE
Descripción
Utilizado para operaciones de lectura, es decir consultas de tuplas
de la base de datos que cumplan una condición determinada.
Se utiliza para insertar nuevas tuplas en una relación.
Modifica valores de los campos.
Elimina tuplas de una tabla.
También sirve como lenguaje de definición (DLL) de datos. Se emplea el SQL
para crear las estructuras de datos; es decir, las relaciones en las que
posteriormente se almacenarán las tuplas. Los postulados de SQL para este
propósito son:
Comando
CREATE
DROP
ALTER
Descripción
Define la estructura de una nueva tabla, campos e índices.
Elimina una tabla.
Utilizado para modificar las tablas, agregar campos o
cambiar la definición de los campos.
SQL también 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.
ISI0514
Fundamentos de Bases de Datos
Página 59 de 120
Sistemas de Bases de Datos
Comando
GRANT
REVOKE
Descripción
Otorga autoridad de acceso a los usuarios.
Suprime autoridades de acceso a los usuarios.
Conviene aclarar que, por lo general, los mecanismos de autorización en los
DBMS son muy sofisticados y suelen ir mucho más allá que la simple
autorización de acceso a datos.
•
Cláusulas
Las cláusulas son condiciones de modificación utilizadas para definir los datos
que se desea seleccionar o manipular.
Cláusula
FROM
WHERE
GROUP BY
HAVING
ORDER BY
•
Operadores Lógicos
Operador
AND
OR
NOT
•
ISI0514
Descripción
Utilizada para especificar la tabla de la cual se van a
seleccionar los registros.
Utilizada para especificar las condiciones que debe reunir los
registros que se van a seleccionar.
Utilizada para separar los registros seleccionados en grupos
específicos.
Utilizada para expresar la condición que debe satisfacer cada
grupo.
Utilizada para ordenar los registros seleccionados de acuerdo
con un orden específico.
Uso
Es el “y” lógico. Evalúa dos condiciones y devuelve un
valor de verdad sólo si ambas son ciertas.
Es el “o” lógico. Evalúa dos condiciones y devuelve un
valor de verdad si alguna de las dos es cierta.
Negación lógica.
Devuelve el valor contrario de la
expresión.
Operadores de Comparación
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 comparación de un modelo.
IN
Utilizado para especificar registros de una Base de Datos.
Fundamentos de Bases de Datos
Página 60 de 120
Sistemas de Bases de Datos
•
Funciones de Agregado
Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de
registros, para devolver un único valor que se aplica a un grupo de registros.
Función
AVG
COUNT
SUM
MAX
MIN
Descripción
Calcula el promedio de los valores de un campo determinado
Calcula el número de registros de la selección.
Calcula la suma de todos los valores de un campo
determinado.
Devuelve el valor más alto de un campo determinado.
Devuelve el valor más bajo de un campo determinado.
4.2 CONSULTAS DE UNA TABLA.
La instrucción 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 información que está registrada en forma relacional.
Formato:
SELECT [ALL, DISTINCT] <lista de atributos>
FROM
<nombre de la tabla>
WHERE <condición>
GROUP BY <nombre de la columna>
HAVING <condición de búsqueda>
ORDER BY <nombre de columna> ASC, DECS.
SQL Interactivo
SELECT AUTOR,
GENERO FROM
LIBROS
...........................
Consulta
Resultado de la consulta
AUTOR GENERO
Hugo
Teatro
Hugo
Poesía
Balzac Romana
Dumas Teatro
DBMS
BD
PROGRAMA
Consulta
SQL programado
Estructura tabular de los resultados de una consulta SQL
ISI0514
Fundamentos de Bases de Datos
Página 61 de 120
Sistemas de Bases de Datos
4.2.1 SELECCIÓN SIMPLE
•
SELECT *
El primer operando que sigue al SELECT es el carácter *. Este significa el
ensamble de columnas de la tabla, presentadas en el mismo orden que el de
la definición de la tabla al momento de la creación.
SELECT * FROM LIBROS;
AUTOR
TITULO
AÑO
GENERO
PRECIO
HUGO
HUGO
HUGO
BALZAC
BALZAC
DUMAS
DUMAS
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
HERNANI
LAS CONTEMPLACIONES
LOS MISERABLES
EUGENIA GRANDET
PAPÁ GORIOT
LOS TRES MOSQUETEROS
VEINTE AÑOS DESPUES
LA DAMA DE LAS CAMELIAS
ROJO Y NEGRO
LA CARTUJA DE PARMA
MADAME BOVARY
POEMAS SATURNIANOS
1830
1856
1862
1833
1834
1844
1845
1852
1831
1839
1857
1866
TEATRO
POESIA
ROMANA
ROMANA
ROMANA
ROMANA
ROMANA
TEATRO
ROMANA
ROMANA
ROMANA
POESIA
120.000
78.500
148.500
100.000
80.000
80.000
110.000
98.500
110.500
99.500
90.500
Tabla LIBROS
•
SELECT con expresión.
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 expresión más simple, que contiene únicamente las columnas especificadas
SELECT TITULO FROM LIBROS
SELECT AÑO, TITULO FROM LIBROS
•
SELECT con valores calculados
Esta consulta se ilustra con el siguiente ejemplo:
ISI0514
Fundamentos de Bases de Datos
Página 62 de 120
Sistemas de Bases de Datos
Listar el título 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
LAS CONTEMPLACIONES
LOS MISERABLES
EUGENIA GRANDET
PAPÁ GORIOT
LOS TRES MOSQUETEROS
VEINTE AÑOS DESPUES
LA DAMA DE LAS CAMELIAS
ROJO Y NEGRO
LA CARTUJA DE PARMA
MADAME BOVARY
POEMAS SATURNIES
Precio
Precio
Precio
Precio
Precio
Precio
Precio
Precio
Precio
Precio
Precio
Precio
:
:
:
:
:
:
:
:
:
:
:
:
144000
94200
178200
120000
0
96000
96000
132000
118200
132600
119400
108600
Sucres
Sucres
Sucres
Sucres
Sucres
Sucres
Sucres
Sucres
Sucres
Sucres
Sucres
Sucres
La opción DISTINCT, permite seleccionar un ejemplar de cada línea.
Ejemplo:
SELECT AUTOR FROM LIBROS;
SELECT DISTINCT AUTOR FROM LIBROS
Los resultados para cada una de estas consultas son los siguientes:
AUTOR
HUGO
HUGO
HUGO
BALZAC
BALZAC
DUMAS
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
AUTOR
BALZAC
DUMAS
FLAUBERT
HUGO
STENDHAL
VERLAINE
4.2.2 SELECCIÓN CONDICIONAL CON WHERE
El predicado de base es la forma más simple de una condición de búsqueda. Está
constituida de dos expresiones compatibles, separadas por un operador de comparación
(=, <=, >=, <, >, <>). 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.
ISI0514
Fundamentos de Bases de Datos
Página 63 de 120
Sistemas de Bases de Datos
Las condiciones de búsqueda atan uno a más predicados, separados por los operadores
lógicos AND, OR y NOT.
Valores de la tabla de verdad de los operadores lógicos:
X
V
V
V
F
F
F
D
D
D
Y
V
F
D
V
F
D
V
F
D
NOT X
F
F
F
V
V
V
D
D
D
X AND Y
V
F
D
F
F
F
D
F
D
X OR Y
V
V
V
V
F
D
V
D
D
SQL ofrece un conjunto de condiciones de búsqueda, permitiendo elaborar diferentes
tipos de consultas:
4.2.2.1 Test de Comparación:
Compara el valor de una expresión con el valor de otra.
Ejemplos:
-
Busque en la tabla LIBROS el título y género 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 AÑO > 1835;
-
Busque en la tabla LIBROS el título, año, género y precio de las obras en
donde el precio es menor a $ 100.000 o superior a $ 135000.
SELECT TITULO, AÑO, GENERO, PRECIO FROM LIBROS
WHERE PRECIO < 100000 OR PRECIO > 135000;
Cuando la columna de comparación es una clave primaria, el test aísla 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 expresión cae dentro de un rango específico de
valores.
ISI0514
Fundamentos de Bases de Datos
Página 64 de 120
Sistemas de Bases de Datos
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 versión 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 explícitamente por enumeración o implícitamente por una
subconsulta.
La condición: A IN (X, Y, Z ) es equivalente a:
(A = X) OR (A = Y) OR (A = Z)
Ejemplo:
-
Listar el autor, título y el año de las obras de la tabla LIBROS escritas en
1839, 1866 o 1857.
SELECT AUTOR , TITULO, AÑO
FROM LIBROS
WHERE AÑO IN (1839, 1866, 1857)
4.2.2.4 Test de correspondencia con patrón
Se utiliza para comparar una expresión de cadena, con un modelo en una
expresión SQL.
Caracteres comodines:
(%) se corresponde con cualquier secuencia de dos a más caracteres.
(_) Se corresponde con cualquier carácter simple.
Ejemplo:
ISI0514
Fundamentos de Bases de Datos
Página 65 de 120
Sistemas de Bases de Datos
-
Liste los títulos de las obras de la tabla LIBROS que compongan la cadena
“DAM” en el título.
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 título 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 opción GRO UP BY es seguida del nombre de una o varias columnas
llamadas columnas de agrupamiento. Las líneas donde el contenido de las
columnas de agrupamiento son idénticas forman un grupo.
Ejemplo:
Liste agrupados por género y autor, los datos de autor y género de la tabla
LIBROS.
SELECT AUTOR, GENERO FROM LIBROS GROUP BY AUTOR, GENERO;
Como resultado de esta consulta se obtiene los siguientes datos:
AUTOR
BALZAC
DUMAS
DUMAS
FLAUBERT
HUGO
HUGO
HUGO
STENDHAL
VERLAINE
ISI0514
GENERO
ROMANA
ROMANA
TEATRO
ROMANA
POESIA
ROMANA
TEATRO
ROMANA
POESIA
Fundamentos de Bases de Datos
Página 66 de 120
Sistemas de Bases de Datos
•
HAVING
La opción HAVING, permite aplicar una condición de búsqueda a los grupos de
datos definidos por la opción GROUP BY. No confundir las operaciones
WHERE y HAVING. WHERE permite seleccionar una línea 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 género, los datos relativos a autor y género de
obras de la tabla LIBROS, eliminando las de género poesía.
SELECT AUTOR, GENERO FROM LIBROS
GROUP BY AUTOR, GENERO
HAVING GENERO <> ‘POESIA’;
4.2.4 LA OPCIÓN ORDER BY.
Las filas de la tabla resultante pueden ser ordenadas por los valores de una o más
columnas. Podemos especificar que la secuencia sea creciente (ASC) o decreciente
(DESC).
Ejemplo:
Liste el autor, el título, y el año de las obras de la tabla LIBROS, ordenada
cronológicamente.
SELECT AUTOR, TITULO, AÑO FROM LIBROS
ORDER BY AÑO;
Es posible en la opción ORDER BY colocar el número de la posición en el
SELECT de la columna que deseamos ordenar.
SELECT AUTOR, TITULO, AÑO FROM LIBROS
ORDER BY 3;
4.3 LA OPCIÓN UNION (UNION ALL)
La operación UNION permite definir una tabla resultante a partir de la combinación de
los resultados de dos o más consultas o tablas independientes.
Restricciones:
ISI0514
•
Ambas tablas deben tener el mismo número 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.
Fundamentos de Bases de Datos
Página 67 de 120
Sistemas de Bases de Datos
•
Ninguna tabla puede estar ordenada con la sentencia ORDER BY, sin
embargo, el resultado de la consulta UNION, puede ser ordenado con la
utilización de la cláusula ORDER BY al final de la última consulta SELECT.
•
Las columnas resultado no son nombradas.
Si se utiliza la opción UNION ALL, la tabla resultante contiene todas las líneas
provenientes de cada SELECT. En la opción UNION, las líneas repetidas son
eliminadas.
Ejemplo:
AUTOR
FE_NA
LUGAR
SALA
ESTANTE
HUGO
BALZAC
DUMAS
DUMAS
STENDHAL
FLAUBERT
VERLAINE
ZOLA
RIMBAUD
SAND
1802
1799
1802
1824
1783
1821
1844
1840
1854
1804
BESANCON
TOURS
VILLERS
PARIS
GRENOBLE
ROUEN
METZ
PARIS
CHARLEVILLE
PARIS
2
1
1
1
3
1
3
3
3
3
3
1
1
1
5
2
6
6
5
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 después de 1850.
SELECT AUTOR FROM LIBROS WHERE AÑO < 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:
ISI0514
Fundamentos de Bases de Datos
Página 68 de 120
Sistemas de Bases de Datos
Tabla LIBROS
AÑO > 1835
AUTOR
HUGO
BALZAC
BALZAC
STENDHAL
UNION
Tabla AUTORES
Resultado
BALZAC
HUGO
STENDHAL
RIMBAUD
AUTOR
BALZAC
STENDHAL
RIMBAUD
FE_NA > 1850
La operación unión puede ser utilizada repetidamente para combinar tres o más
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 más tablas de la Base de Datos. Para
ilustrar con ejemplos este tipo de consultas, utilizaremos el modelo de la compañía
detallado en el capítulo 2.
ISI0514
Fundamentos de Bases de Datos
Página 69 de 120
Sistemas de Bases de Datos
Esquema de la Base de datos relacional de la COMPAÑIA
EMPLEADO
NOMBRE
APELLIDO
CI
FECHA_N
DIRECCIÓN
SEXO SALARIO
SUPERCI
DNO
DEPARTAMENTO
DNOMBRE
DNUMERO
JEFECI
JEFE_FI
LOCALIZACION
DNUMERO
DEP_LOCA
TRABAJA EN
ECI
PROYECTO
PNOMBRE
PNO
PNUMERO
HORAS
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 equicomposición.
4.4.1 CONSULTAS PADRE/HIJO
Las claves foráneas y las claves primarias crean relaciones padre/hijo en una base de
datos. Partiendo de este concepto las consultas multitabla más comunes implican a dos
tablas que tienen esta relación.
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.
ISI0514
Fundamentos de Bases de Datos
Página 70 de 120
Sistemas de Bases de Datos
La columna DNO de la tabla EMPLEADO, es una clave foránea
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 SELECCIÓN DE FILA.
La condición de búsqueda que especifica las columnas de emparejamiento en una
consulta multitabla, pueden combinarse con otras condiciones de búsqueda para
restringir aún más 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 no mbres 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 técnica que utiliza SQL para combinar dos tablas, es posible combinar
tres o más tablas.
Ejemplo:
•
Listar los nombres de los dependientes de todos los empleados que trabajan
en el departamento de investigación.
SELECT NOMBRE, APELLIDO, DEP_NOM
FROM EMPLEADOS, DEPARTAMENTO, CARGAS_F
WHERE DNOMBRE = ‘Investigación’ AND
DNUMERO = DNO AND
CI = ECI
ISI0514
Fundamentos de Bases de Datos
Página 71 de 120
Sistemas de Bases de Datos
4.4.4 OTRAS COMPOSICIONES
•
La mayor parte de consultas entre múltiples tablas se realizan en relaciones
de padre/hijo, sin embargo, SQL no exige que las columnas de
emparejamiento sean necesariamente llaves primarias o llaves foráneas.
Cualquier tipo de
columnas pueden servir como columnas de
emparejamiento, siempre que tengan tipos de datos comparables.
•
Las comparaciones más habituales son aquellas basadas en la igualdad de
dos columnas (equicomposiciones), sin embargo, SQL permite componer
tablas basándose en otros operadores de comparación.
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 ambigüedad 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 SELECCIÓN DE TODAS LAS COLUMNAS.
En una consulta multitabla, el asterisco (*) selecciona todas las columnas de todas las
tablas seleccionadas en la cláusula FROM.
Ejemplo:
• Recuperar todos los datos de los empleados que trabajan en el departamento
de Investigación, incluyendo todos los atributos del departamento.
SELECT *
FROM EMPLEADO, DEPARTAMENTO
WHERE DNO = DNUMERO AND
DNOMBRE = ‘Investigación’
•
Especificar el Producto Cartesiano de las relaciones EMPLEADO Y
DEPARTAMENTO.
SELECT *
FROM EMPLEADO, DEPARTAMENTO
ISI0514
Fundamentos de Bases de Datos
Página 72 de 120
Sistemas de Bases de Datos
4.4.7 AUTOCOMPOSICIONES.
Algunas consultas multitabla afectan a una relación que una tabla tiene consigo misma,
es decir cuando se cuenta con una relación 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 cláusula 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 combinación
de las dos.
4.5 FUNCIONES DE COLUMNA
Una función de columna reenvía un valor único dependiendo de la aplicación de la
función sobre la expresión o del contenido de la columnas que se especifica entre
paréntesis FUNCIÓN(expresión).
Si aplicamos funciones de columna en un SELECT sin la cláusula GROUP BY, el
resultado que obtendremos será una línea de valores. Si el SELECT esta conformado
por la cláusula GROUP BY, la función 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
cláusula GROUP BY se denominan Columnas de agrupación.
SQL cuenta con seis funciones de columna diferentes:
4.5.1 LA FUNCIÓN AVG()
Calcula la media aritmética de un conjunto de valores contenidos en un campo
específico de una consulta. Los datos de la columna deben ser de tipo numérico.
Su sintaxis es :
Avg(exp)
Ejemplo:
ISI0514
Fundamentos de Bases de Datos
Página 73 de 120
Sistemas de Bases de Datos
•
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
5
4
1
AVG(SALARIO)
3325
3100
5500
4.5.2 FUNCIÓN SUM()
Devuelve la suma del conjunto de valores contenido en un campo específico de una
consulta.
Su sintaxis es:
Sum(expresión)
En donde expresión representa el nombre del campo que contiene los datos que desean
sumarse o una expresión que realiza un cálculo 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
ISI0514
Fundamentos de Bases de Datos
Página 74 de 120
Sistemas de Bases de Datos
•
Calcular la suma total del salario de los empleados por departamento.
SELECT DNO, SUM(SALARIO)
FROM EMPLEADO
GROUP BY DNO
Como resultado obtenemos:
DNO
5
4
1
SUM(SALARIO)
13300
9300
5500
4.5.3 FUNCIÓN MAX Y MIN
Devuelve el máximo o el mínimo de un conjunto de valores contenidos en un campo
específico 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 cálculo.
•
Para el empleado que gana el máximo salario, mostrar su nombre y el
salario.
SELECT NOMBRE, MAX(SALARIO)
FROM EMPLEADO
Resultado:
NOMBRE
Jaime
•
MAX(SALARIO)
5500
Para cada departamento, mostrar el mínimo salario de los empleados.
SELECT DNO, MIN(SALARIO)
FROM EMPLEADO
GROUP BY DNO
4.5.4 FUNCIÓN COUNT()
Cuenta el número de valores de datos que hay en una columna.
Su sintaxis es:
Count(exp)
ISI0514
Fundamentos de Bases de Datos
Página 75 de 120
Sistemas de Bases de Datos
Donde exp contiene el nombre del campo que deseamos contar. Puede contar cualquier
tipo de dato incluso texto. Count cuenta el número 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 carácter comodín asterisco (*).
Ejemplo:
•
Calcular el número total de departamentos.
SELECT COUNT(DNUMERO)
FROM DEPARTAMENTO
•
Calcular el número total de empleados por departamento.
SELECT DNO, COUNT(CI)
FROM EMPLEADO
GROUP BY DNO
•
Determinar el número de empleados que ganan más de $ 3000.
SELECT COUNT(CI)
FROM EMPLEADO
WHERE SALARIO > 3000
4.5.5 FUNCIÓN COUNT(*)
Proporciona como resultado el número de líneas de una tabla o de un grupo de líneas
luego de aplicar una condición de selección.
Ejemplo:
•
Calcular el número de empleados de sexo masculino.
SELECT COUNT(*)
FROM EMPLEADO
WHERE SEXO = ‘M’
Resultado:
COUNT(*)
5
La siguiente instrucción generará el mismo resultado:
SELECT COUNT(CI)
FROM EMPLEADO
WHERE SEXO = ‘M’
ISI0514
Fundamentos de Bases de Datos
Página 76 de 120
Sistemas de Bases de Datos
4.5.6 FUNCIÓN DE COLUMNAS CON LA PALABRA CLAVE DISTINCT
Para eliminar valores duplicados, es necesario incluir la palabra clave DISTINCT
delante del argumento de la función de columna inmediatamente después del paréntesis
abierto.
Para aplicar DISTINCT, la expresión de la función debe ser un simple nombre de
columna.
El estándar 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 función 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 estándar de SQL especifica que los valores NULL de la columna deben ser ignorados
para las funciones de columna. Esta especificación 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 función de la tabla T, calcular la siguiente consulta.
T
ISI0514
A
3
5
2
1
4
B
1
NULL
2
1
1
Fundamentos de Bases de Datos
Página 77 de 120
Sistemas de Bases de Datos
SELECT SUM(A), SUM(B), (SUM(B) - SUM(B), SUM(A – B)
FROM T
Resultado:
SUM(A)
15
SUM(B)
5
SUM(A) – SUM(B)
10
SUM(A-B)
5
El estándar especifica las siguientes reglas para gestionar las funciones de columna con
valores NULL.
•
Si algún valor de datos de una columna es NULL, se ignora para el propósito
de calcular el valor de la función de columna.
•
Si todos los datos de una columna son NULL, las funciones SUM(), AVG(),
MIN() y MAX(), devuelven un valor NULL; la función COUNT() devuelve
cero.
•
Si no hay datos en la columna (vacía), las funciones SUM(), AVG(), MIN()
Y MAX() devuelven un valor cero.
•
La función 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 estándar.
4.5.8 CONDICIONES DE BÚSQUEDA DE GRUPOS (HAVING)
La cláusula HAVING puede ser utilizada para seleccionar y rechazar grupos de filas, es
decir, especifica una condición de búsqueda para grupos.
Ejemplo:
•
Listar la CI de los empleados que tengan más de un dependiente.
SELECT ECI
FROM CARGAS_F
GROUP BY ECI
HAVING COUNT(*) > 1
•
Para todos los empleados que han trabajado más de 30 horas, listar su cédula
de identidad, nombre y número de horas trabajadas.
SELECT ECI, NOMBRE, SUM(HORAS)
FROM TRABAJA_EN, EMPLEADOS
WHERE CI = ECI
GROUP BY ECI
HAVING SUM(HORAS) > 30
ISI0514
Fundamentos de Bases de Datos
Página 78 de 120
Sistemas de Bases de Datos
4.6 SUBCONSULTAS
SQL tiene la característica de permitir utilizar el resultado de una consulta como parte
de otra, a esta característica se lo denomina Subconsulta. Una subconsulta aparece
dentro de la cláusula WHERE o HAVING de otra sentencia SQL. Con la cláusula
WHERE se seleccionan las filas individuales que aparecen en los resultados de la
consulta, en tanto que, con la cláusula 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 selección.
•
La cláusula ORDER BY no puede ser especificada en una subconsulta.
•
Una subconsulta no puede ser la UNION de varias sentencias SELECT
diferentes; sólo 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 BÚSQUEDA EN UNA SUBCONSULTA.
SQL proporciona las siguientes condiciones de búsqueda en una subconsulta.
4.6.1.1 Test de comparación subconsulta. (=, <>, <,<=, >, >=)
Este test compara el valor de una expresión con el valor producido por una
subconsulta, y devuelve un resultado verdadero (TRUE) si la comparación es
cierta.
Formato:
------- expresión ----- operador de comparación ---- ( 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 más de una fila como resultado, SQL informa de una
condición de error.
Si la subconsulta no produce filas o produce un valor NULL, el test de
comparación devuelve NULL.
Ejemplo:
ISI0514
Fundamentos de Bases de Datos
Página 79 de 120
Sistemas de Bases de Datos
•
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
número 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 comparación es cierta.
•
Listar los nombres de los proyecto controlados por el departamento de
Investigación.
SELECT PNOMBRE
FROM PROYECTO
WHERE DNUM = (SELECT DNUMERO
FROM DEPARTAMENTO
WHERE DNOMBRE = ‘Investigación’
•
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 ningún registro de la
subconsulta que contenga un valor igual.
Ejemplo:
•
ISI0514
Recuperar el nombre de los empleados que tienen dependientes con el
mismo sexo.
Fundamentos de Bases de Datos
Página 80 de 120
Sistemas de Bases de Datos
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 algún 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 razón de que la
condición de búsqueda EXISTS no utiliza realmente los resultados de la
subconsulta. En la práctica siempre se utiliza la notación SELECT *.
El test de existencia EXISTS se utiliza sólo 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 cláusula 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 específica en la tabla FROM de la
consulta principal.
ISI0514
Fundamentos de Bases de Datos
Página 81 de 120
Sistemas de Bases de Datos
En la práctica, 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 más 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 comparación con cualquier otra fila recuperada en la subconsulta. Los
operadores de comparación 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 instrucción WHERE X < ANY (SELECT Y .......) el test puede leerse de la
siguiente manera:
“ en donde, para algún 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 condición.
WHERE X
1000
< ANY
<
Y
600
500
1200
800
Ejemplo:
•
Listar el nombre de los empleados que tienen dependiente
SELECT NOMBRE, APELLIDO
FROM EMPLEADO
WHERE CI = ANY (SELECT ECI
FROM CARGA_F)
ISI0514
Fundamentos de Bases de Datos
Página 82 de 120
Sistemas de Bases de Datos
El test ALL, se utiliza para recuperar únicamente filas de la consulta principal
que satisfacen la comparación con todas las filas recuperadas en la subconsulta.
Los operadores de comparación 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 instrucción 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 condición.
WHERE X
1000
< ALL
<
Y
600
500
1200
800
Ejemplo.
•
Listar el nombre de los empleados que por cada proyecto han trabajado más
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 más de dos niveles se las denomina Subconsultas Anidadas.
SELECT .........
WHERE ............ (SELECT.........
WHERE ............(SELECT...........
WHERE .................))
•
ISI0514
Determinar los proye ctos en donde trabajan empleados que tienen
dependientes Cónyuges.
Fundamentos de Bases de Datos
Página 83 de 120
Sistemas de Bases de Datos
SELECT PNOMBRE
FROM PROYECTO
WHERE PNUMERO IN (SELECT PNO
FROM TRABAJA_EN
WHERE ECI IN (SELECT ECI
FROM CARGAS_F
WHERE RELACIÓN = ‘Cónyuge’))
4.8
OPERACIONES DE ACTUALIZACIÓN DE LA BASE DE
DATOS.
Denominadas también como consultas de acción y son las encargadas de añadir, borrar
y modificar una fila. Las instrucciones que corresponden a estas acciones son:
INSERT, DELETE y UPDATE.
Es necesario indicar que las operaciones de actualización pueden ser el origen de errores
en la base de datos, si las tablas relacionales no son bien construidas, análisis que se
realizará en el siguiente capítulo.
4.8.1
INSERT
Agrega una fila a una tabla. Se conoce como una consulta de datos añadidos.
A una fila se le considera como la unidad de datos más pequeña que puede
añadirse a una base de datos relacional.
Esta instrucción 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 instrucción:
ISI0514
-
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 automáticamente 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.
Fundamentos de Bases de Datos
Página 84 de 120
Sistemas de Bases de Datos
Ejemplo:
•
Insertar un nuevo empleado con los siguientes datos:
Nombre:
Apellido:
CI:
Fecha de nacimiento:
Dirección:
Sexo:
Salario:
Supervisor:
Departamento:
Pedro
Torres
112233445
25/Feb/1967
Vega Muñoz 10-12
Masculino
1000
333445555
Compras
INSERT INTO
EMPLEADOS (NOMBRE, INICIAL, APELLIDO, CI, FECHA_N, DIRECCIÓN,
SEXO, SALARIO, SUPERCI, DNO)
VALUES(‘Pedro’ , ‘J’ , ’Torres’ , ’112233445’ , ’25/Feb/1967’ , ’Vega Muñoz’ , ’M’,
1000 , ’333445555’ , 5)
•
Inserta Multifilas
Para esta alternativa su sintaxis es:
INSERT INTO Tabla (campo 1, campo 2,.... , campoN)
SELECT TablaOrigen.campo2, TablaOrigen.campo2, ...................................
TablaOrigen.campoN).
FROM TablaOrigen
En este caso se seleccionarán los campos 1, 2, .... N de la TablaOrigen y se
grabarán en los campos 1, 2, .... N de la Tabla. La condición SELECT puede
incluir la cláusula 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 más de $ 2000.
INSET INTO EMPLEADO2 (NOMBRE, APELLIDO. CI, SALARIO)
SELECT (NOMBRE, APELLIDO, CI, SALARIO)
FROM EMPLEADO
WHERE SALARIO > 2000
La representación gráfica del desarrollo de esta consulta es la siguiente:
ISI0514
Fundamentos de Bases de Datos
Página 85 de 120
Sistemas de Bases de Datos
EMPLEADO
NOMBRE APELLIDO CI
CONSULTA
............. SALARIO
DNO
SELECT (NOMBRE,
APELLIDO, CI, SALARIO
FROM EMPLEADO WHERE
SALARIO > 2000
EMPLEADO2
NOMBRE APELLIDO CI
Resultado de la Consulta
SALARIO
NOMBRE APELLIDO CI
SALARIO
Restricciones (estándar SQL1)
o La consulta no puede contener una cláusula ORDER BY.
o El resultado de la consulta debe contener el mismo número de columnas que
hay en la lista de columnas de la sentencia INSERT y además los tipos de
datos deben ser compatibles columna a columna.
o La tabla destino no puede aparecer en la cláusula 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 estándar SQL
ANSI/ISO no considera esta función y suele ser suministrada como un programa
de utilidad autónomo en lugar de formar parte del lenguaje SQL. La utilidad
que cada vendedor suministra, dispone de un conjunto ligeramente diferente de
características, funciones y órdenes.
4.8.2
DELETE
La sentencia DELETE elimina las filas seleccionadas de datos de una única
tabla. La cláusula FROM especifica la tabla destino que contiene las filas. La
cláusula WHERE especifica qué filas de la tabla van a ser suprimidas. Esta
instrucción elimina las filas completas, no es posible eliminar el contenido de
algún campo en concreto.
Sus sintaxis es:
DELETE FROM tabla WHERE criterio
Ejemplos:
•
ISI0514
Eliminar a Jaime Pérez de la base de datos.
Fundamentos de Bases de Datos
Página 86 de 120
Sistemas de Bases de Datos
DELETE FROM EMPLEADO
WHERE NOMBRE = ‘Jaime’ AND APELLIDO = ‘Pérez’
•
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 instrucción las filas seleccionadas que se eliminarán, dependen de los
datos contenidos en otras tablas. La instrucción anterior presenta un error,
al especificarse más de dos tablas en la cláusula 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 instrucción cambia los valores de los campos de una tabla basándose 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 = ‘Administración’
ISI0514
Fundamentos de Bases de Datos
Página 87 de 120
Sistemas de Bases de Datos
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 propósito de preservar la
consistencia y corrección de los datos almacenados , un DBMS relacional impone una o
más 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 válido en cada fila, es decir no se permite ausencia de valor o que
contenga valores NULL.
Esta restricción de integridad se declara cuando la tabla que contiene la columna
se crea por primera vez mediante la restricción 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 números 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 años. El gestor de bases de datos puede ser
preparado para que se introduzcan datos válidos 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
restricción de integridad de entidad.
El DBMS comprueba automáticamente 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 restricción de unicidad, que se declara mediante la restricción UNIQUE
de la sentencia CREATE TABLE.
Toda columna que forma parte de una clave primaria y toda columna designada
con una restricción de unicidad deben ser declaradas NOT NULL.
4. Integridad Referencial:
“Si una tabla R2 tiene una clave foránea
correspondiente a la clave primaria de la tabla R1, todo va lor de dicha clave
foránea debe concordar con un valor de la clave primaria de R1 o ser nulo”. En
otros términos, una clave foránea en una base de datos relacional, enlaza cada
fila de la tabla hijo que contiene la clave foránea con la fila de la tabla padre que
contiene el valor de la clave primaria correspondiente.
ISI0514
Fundamentos de Bases de Datos
Página 88 de 120
Sistemas de Bases de Datos
EMPLEADO
NOMBRE APELLIDO
Juan
CI
FECHA_N
DIRECCIÓN
SEXO SALARIO
SUPERCI
DNO
Polo
123456789 3-mar-59
Sucre 7-12
M
333445555
5
Humberto Pons
333445555 25-dic-60
Bolívar 5-67
M
888665555
5
Irma
Vega
999887777 13-nov-50 P. Córdova 3-45
F
987654321
4
Elena
Tapia
987654321 3-may-61
F
888665555
4
Pablo
Castro
666884444 15-sep-55 Bolívar 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
Pérez
888665555 5-abr-57
Sangurima 8-34
M
null
1
DEPARTAMENTO
DNOMBRE
Ordóñez 7-29
DNUMERO
JEFECI
JEFE_FI
Investigación
5
333445555
12-may-80
Administrativo
4
987654321
05-dic-82
Compras
1
888665555
06-jun-78
Las columnas DNUMERO y DNO, crean una relación padre/hijo entre las tablas
DEPARTAMENTO Y EMPLEADO. Cada fila DEPARTAMENTO (padre)
tiene cero (según el caso) o más filas EMPLEADO (hijo) con nombres de
departamento coincidentes. Análogamente, cada fila EMPLEADO (hijo) tiene
exactamente una fila DEPARTAMENTO (padre) con un número de
departamento coincidente.
Si se intenta realizar la instrucción:
INSERT INTO EMPLEADO (NOMBRE, APELLIDO, CI, EDAD, SALARIO,
DNO) VALUES (´Juan´, Peréz´, 111222333, 35, 1500, 6)
Aparentemente no hay error, la base de datos mostrará que Juan Pérez trabaja en
el departamento número 6, aun cuando no existe el departamento 6 en la tabla
DEPARTAMENTO. Sin embargo, la fila recién ingresada rompe la relación
padre/hijo entre las dos tablas. Este ejemplo demuestra que necesariamente el
valor de la columna DNO debe ser forzado para que corresponda a algún valor
de los que aparecen en la columna DNUMERO. Esta regla se conoce como
restricción de Integridad Refere ncial, que asegura la integridad de las
relaciones padre/hijo creadas mediante claves foráneas y claves primarias.
Problemas de integridad referencial:
•
ISI0514
La inserción de una nueva fila hijo : Cuando se inserta una nueva fila en la
tabla EMPLEADO, su va lor de la clave foránea DNO debe coincidir con uno
de los valores de la clave primaria DNUMERO. Si el valor no coincide, la
inserción de la fila corromperá la base de datos, ya que habrá un hijo sin un
padre (un huérfano). 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.
Fundamentos de Bases de Datos
Página 89 de 120
Sistemas de Bases de Datos
•
La actualización de la clave foránea de una fila hijo : Si se modifica la
clave foránea DNO mediante la sentencia UPDATE, el nuevo valor debe
coincid ir con un valor de la clave primaria DNUMERO de la tabla padre
(DEPARTAMENTO), caso contrario la fila actualizada quedará huérfana.
•
La supresión 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 quedarán huérfanas. Si se suprime
una fila de la tabla hijo, esto no representa problema, pues el padre de esta
fila tendrá un hijo menos después de la eliminación.
Supongamos que se cierra el departamento Administrativo y deseamos
eliminar la fila correspondiente; ¿ Qué sucedería con todos los empleados
que trabajaban en este departamento?. Según el caso se podría desear:
•
-
Impedir que el departamento se elimine hasta que los empleados fueran
reasignados.
-
Suprimir automáticamente a los tres empleados de la tabla
EMPLEADO.
-
Poner la columna DNO de los tres empleados a NULL, indicando que la
asignación del departamento es desconocida.
-
Poner la columna DNO de los tres empleados a algún valor por defecto.
La actualización 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 quedarán huérfanos. En la práctica, esta restricción no
suele provocar problemas, ya que los valores de claves primarias casi nunca
se modifican.
Reglas de supresión actualización:
ISI0514
•
Operación restringida (RESTRICT): Borrar (DELETE) una fila
o modificar (UPDATE) la clave primaria de una tabla que contiene
la clave primaria referenciada, sólo se permite, si no existen filas
con dicha clave en la tabla que contiene la clave foránea. La
operación RESTRICT impide suprimir una fila o actualizar la clave
primaria de la tabla padre si la fila tiene algún hijo. Ejemplo: Para
borrar un departamento, no tendría que haber ningún empleado
asignado a dicho departamento.
•
Operación 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 foránea. CASCADE le dice al DBMS que cuando
una fila es borrada o se modifique la llave primaria de una tabla
Fundamentos de Bases de Datos
Página 90 de 120
Sistemas de Bases de Datos
padre, todas sus filas hijos también deberán ser borradas o
modificadas automáticamente. Ejemplo: Al modificar el número de
un departamento, modifica automáticamente el número de
departamento de todos los empleados asignados a ese departamento.
Para el caso de eliminación de un departamento, se suprime
automáticamente todos los empleados asignados a ese
departamento.
•
Operación 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 foránea de todas las filas hijo deben
automáticamente pasar a NULL. Ejemplo: Cuando borramos un
departamento, a los empleados que pertenecen a ese departamento
en la tabla EMPLEADOS, se indicará que la asignación del
departamento al empleado es desconocida (NULL).
•
Operación 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
foránea en todas las filas hijo deben automáticamente pasarse al
valor por defecto para esa columna particular. Ejemplo: si se
modifica el número de un departamento, automáticamente cambia la
asignación del departamento de su empleado al departamento por
defecto especificado en la definición de la tabla EMPLEADO.
Si no se especifica una regla, la regla RESTRICT, es el valor por omisión.
4.10 DEFINICIÓN 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 condición del atributo.
Formato:
CREATE TABLE nombre tabla (lista de columnas – tipo - NOT NULL,
NOT NULL WHIT DEFAULT).
Las relaciones creadas con la instrucción CREATE TABLE son llamadas tablas base.
NOT NULL: impide la introducción de valores nulos, y provoca la emisión 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 omisión, dependiendo del tipo de dato definido para la columna.
ISI0514
Fundamentos de Bases de Datos
Página 91 de 120
Sistemas de Bases de Datos
Cero para los datos numéricos.
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
APELLIDO
CI
FECHA_N
DIRECCION
SEXO
SALARIO
SUPERCI
DNO
VARCHAR(15) NOT NULL,
VARCHAR(15) NOT NULL,
CHAR(9)
NOT NULL,
CHAR(9),
VARCHAR(30),
CHAR(1),
INTEGER,
CHAR(9),
INTEGER);
CREATE TABLE DEPARTAMENTO ( DNOMBRE
DNUMERO
JEFECI
JEFE_FI
CREATE TABLE LIBROS (AUTOR
TITULO
AÑO
GENERO
PRECIO
AUTOR
HUGO
HUGO
HUGO
BALZAC
BALZAC
DUMAS
DUMAS
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
TITULO
HERNANI
LAS CONTEMPLACIONES
LOS MISERABLES
EUGENIA GRANDET
PAPÁ GORIOT
LOS TRES MOSQUETEROS
VEINTE AÑOS DESPUÉS
LA DAMA DE LAS CAMELIAS
ROJO Y NEGRO
LA CARTUJA DE PARMA
MADAME BOVARY
POEMAS SATURNIANOS
VARCHAR(15) NOT NULL,
INTEGER
NOT NULL,
CHAR(9),
CHAR(9));
CHARACTER(8)
NOT NULL,
CHARACTER(24)
NOT NULL,
SMALLINT,
CHAR(8) NOT NULL WHIT DEFAULT,
DECIMAL(5,2));
AÑO
1830
1856
1862
1833
1834
1844
1845
1852
1831
1839
1857
1866
GENERO
TEATRO
POESIA
ROMANA
ROMANA
ROMANA
ROMANA
ROMANA
TEATRO
ROMANA
ROMANA
ROMANA
POESIA
PRECIO
120.000
78.500
148.500
100.000
80.000
80.000
110.000
98.500
110.500
99.500
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;
ISI0514
Fundamentos de Bases de Datos
Página 92 de 120
Sistemas de Bases de Datos
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 después que el comando es ejecutado.
Ejemplo:
ALTER TABLE EMPLEADO ADD JOB VARCHAR(12);
4. 11 EJEMPLOS
1. Recuperar la fecha de nacimiento y dirección 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 información de los empleados que trabajan en el
departamento 5.
SELECT *
FROM EMPLEADO
WHERE DNO = 5
4. Seleccionar toda la información de los empleados que trabajan en el
departamento de investigación.
SELECT *
FROM EMPLEADO
WHERE DNOMBRE = ‘Investigación’ AND
DNUMERO = DNO
5. Listar los diferentes tipos de salarios de los empleados.
SELECT DISTINCT SALARIO
FROM EMPLEADO
ISI0514
Fundamentos de Bases de Datos
Página 93 de 120
Sistemas de Bases de Datos
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 cédula de identidad de todos los empleados que
trabajan en el departamento de investigación y ganan mas de $ 2500.
SELECT NOMBRE. APELLIDO, SALARIO
FROM EMPLEADO, DEPARTAMENTO
WHERE DNOMBRE = ‘Investigación’ AND
SALARIO > 2500 AND
DNO = DNUMERO
8. Recuperar el nombre, dirección 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 número de proyecto, el
número de departamento que lo controla, incluyendo el apellido del jefe, la
dirección 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 localización.
SELECT DNOMBRE, DEP_LOCA
FROM DEPARTAMENTO, LOCALIZACIÓN
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.
ISI0514
Fundamentos de Bases de Datos
Página 94 de 120
Sistemas de Bases de Datos
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 cédula de identidad y el apellido de todos los empleados que ganan más
de $ 2500 o han trabajado más 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 números 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 cédula de identidad de todos los empleados cuyos
apellidos están comprendidos entre los apellidos Mora y Vega.
SELECT NOMBRE, APELLIDO, CI
FROM EMPLEADO
WHERE APELLIDO BETWEEN ‘Mora’ AND ‘Vega’
ISI0514
Fundamentos de Bases de Datos
Página 95 de 120
Sistemas de Bases de Datos
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 número 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 alfabético 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 investigación.
SELECT NOMBRE
FROM EMPLEADO
WHERE CI IN (SELECT ECI
FROM DEPARTAMENTO, PROYECTO, TRABAJA_EN
WHERE DNOMBRE = ‘Investigación’ 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
ISI0514
Fundamentos de Bases de Datos
Página 96 de 120
Sistemas de Bases de Datos
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 máximo y mínimo de los empleados, el salario total, su
promedio y el número total de empleados.
SELECT MAX(SALARIO), MIN(SALARIO), SUM(SALARI0),
AVG(SALARIO), COUNT(CI)
FROM EMPLEADO
25. Para el departamento de Investigación, calcular el salario máximo y mínimo de
los empleados, el salario total y su promedio y el número total de empleados.
SELECT MAX(SALARIO), MIN(SALARIO), SUM(SALARI0),
AVG(SALARIO), COUNT(CI)
FROM EMPLEADO, DEPARTAMENTO
ISI0514
Fundamentos de Bases de Datos
Página 97 de 120
Sistemas de Bases de Datos
WHERE DNUMERO = DNO AND
DNOMBRE = ‘Investigación’
26. Para cada departamento calcular el salario máximo y mínimo de los empleados,
el salario total y su promedio y el número 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 máximo y mínimo de los empleados,
el salario total y su promedio, y el número total de empleados. Siempre que el
departamento tenga más 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 número 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 número 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 número de dependientes de cada empleado.
SELECT APELLIDO, COUNT(ECI)
FROM EMPLEADO, CARGA_F
WHERE CI = ECI
GROUP BY ECI
31. Determinar el número de salarios diferentes de los empleados.
SELECT COUNT (DISTINCT SALARIO)
FROM EMPLEADO
ISI0514
Fundamentos de Bases de Datos
Página 98 de 120
Sistemas de Bases de Datos
32. Listar el nombre de los empleados que tienen 2 o más dependientes.
SELECT NOMBRE, APELLIDO
FROM EMPLEADO, CARGA_F
WHERE CI = ECI
GROUP BY ECI
HAVING COUNT(ECI) > 2
33. Para cada proyecto con más de dos empleados, recuperar el nombre y número 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, número 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 compañía.
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 instrucción tal como está concebida se ejecutará siempre y cuando exista
un sólo dependiente de nombre Miguel).
ISI0514
Fundamentos de Bases de Datos
Página 99 de 120
Sistemas de Bases de Datos
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 más el examen final).
SELECT ESTUDIANTE.NOMBRE, APELLIDO, MATERIA.NOMBRE,
(APORTE1 + APORTE2)/2 + FINAL
FROM CALIFICACIÓN, ESTUDIANTE, MATERIA
WHERE ESTUDIANTE.CI = CALIFICACIÓN.CI AND
MATERIA.CODIGO = CALIFICACIÓN.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 CALIFICACIÓN, ESTUDIANTE, MATERIA
WHERE ESTUDIANTE.CI = CALIFICACIÓN.CI AND
MATERIA.CODIGO = CALIFICACIÓN.CODIGO AND
(APORTE1 + APORTE2)/2 + FINAL < 14
40. Listar el total de créditos aprobados por el estudiante Barrera con cédula de
identidad 1101775849.
SELECT SUM(N_CREDITOS)
FROM MATERIA, CALIFICACIÓN
WHERE CI = ‘1101775849’ AND
(APORTE1 + APORTE2)/2 + FINAL >= 14 AND
MATERIA.CODIGO = CALIFICACIÓN.CODIGO
41. Determinar el número de alumnos que estudian la materia de Sistemas Expertos.
SELECT COUNT (CALIFICACIÓN.CODIGO)
FROM CALIFICACIÓN, MATERIA
WHERE NOMBRE = 'Bases de Datos' AND MATERIA.CODIGO =
CALIFICACION.CODIGO
ISI0514
Fundamentos de Bases de Datos
Página 100 de 120
Sistemas de Bases de Datos
42. Calcular el promedio de las notas de cada una de las materias.
SELECT MATERIA.NOMBRE, AVG(APORTE1), AVG(APORTE2),
AVG(FINAL)
FROM CALIFICACIÓN, MATERIA
WHERE MATERIA.CODIGO = CALIFICACIÓN.CODIGO
GROUP BY MATERIA.CODIGO
43. Calcular el promedio de notas de cada uno de los estud iantes.
SELECT NOMBRE, APELLIDO, AVG(APORTE1), AVG(APORTE2),
AVG(FINAL)
FROM ESTUDIANTE, CALIFICACIÓN
WHERE ESTUDIANTE.CI = CALIFICACIÓN.CI
GROUP BY CALIFICACIÓN.CI
ISI0514
Fundamentos de Bases de Datos
Página 101 de 120
Sistemas de Bases de Datos
CAPITULO 5
DEPENDENCIA FUNCIONAL Y NORMALIZACION DE BASES
DE DATOS RELACIONALES
En este capítulo 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 normalización de tablas y que aportan
las tres primeras formas normales.
5.1 EJEMPLOS DE ANOMALÍAS EN LA ACTUALIZACIÓN.
Para ilustrar las operaciones de actualización 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 año de
nacimiento), el título 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
HUGO
HUGO
HUGO
BALZAC
BALZAC
DUMAS
DUMAS
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
ISI0514
TITULO
HERNANI
LAS CONTEMPACIONES
LOS MISERABLES
EUGENIA GRANDET
PAPÁ GORIOT
LOS TRES MOSQUETEROS
VEINTE AÑOS DESPUES
LA DAMA DE LAS CAMELIAS
ROJO Y NEGRO
LA CARTUJA DE PARMA
MADAME BOVARY
POEMAS SATURNIANOS
Tabla: LIBROS
AÑO
1830
1856
1862
1833
1834
1844
1845
1852
1831
1839
1857
1866
GENERO
TEATRO
POESIA
ROMANA
ROMANA
ROMANA
ROMANA
ROMANA
TEATRO
ROMANA
ROMANA
ROMANA
POESIA
Fundamentos de Bases de Datos
PRECIO
120,000
78,500
148,500
100,000
80,000
80,000
110,000
98,500
110,500
99,500
90,500
Página 102 de 120
Sistemas de Bases de Datos
AUTOR
HUGO
BALZAC
DUMAS
DUMAS
STENDHAL
FLAUBERT
VERLAINE
ZOLA
RIMBAUD
SAND
FE_NA
1802
1799
1802
1824
1783
1821
1844
1840
1854
1804
LUGAR
BESANCON
TOURS
VILLERS
PARIS
GRENOBLE
ROUEN
METZ
PARIS
CHARLEVILLE
PARIS
SALA
2
1
1
1
3
1
3
3
3
3
ESTANTE
3
1
1
1
5
2
6
6
5
5
Tabla: AUTORES
En los ejemplos que se desarrollan a continuación, se detallan las diferentes anomalías
que pueden presentarse al utilizar los comandos de actualización de datos.
5.1.1
INSERT
Se ha visto que la instrucción INSERT permite insertar información en una tabla
previamente creada, por medio de la opción VALUES. Es igualmente posible incluir un
subselect en la instrucción 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 vacía) a partir de la tabla LIBROS y
listar la tabla después de inicializar.
INSERT INTO OBRAS (AUTOR, TITULO)
SELECT AUTOR, TITULO, FROM LIBROS;
SELECT * FROM OBRAS;
AUTOR
TITULO
FE_NA
SALA
ESTANTE
HUGO
HUGO
HUGO
BALZAC
BALZAC
DUMAS
DUMAS
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
HERNANI
LAS CONTEMPLACIONES
LOS MISERABLES
EUGENIA GRANDET
PAPÁ GORIOT
LOS TRES MOSQUETEROS
VEINTE AÑOS DESPUES
LA DAMA DE LAS CAMELIAS
ROJO Y NEGRO
LA CARTUJA DE PARMA
MADAME BOVARY
POEMAS SATURNIANOS
0
0
0
0
0
0
0
0
0
0
0
0
-------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
ISI0514
Fundamentos de Bases de Datos
Página 103 de 120
Sistemas de Bases de Datos
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 números de sala y estante son puestos en
NULL.
Ejemplo 5.2:
Inicializar la tabla OBRAS (considerada como vacía) a partir de la tabla AUTORES y
listar después de la inicialización.
INSERT INTO OBRAS (AUTOR, FE_NA, SALA, ESTANTE)
SELECT AUTOR, FE_NA, SALA, ESTANTE FROM AUTORES;
SELECT * FROM OBRAS;
AUTOR
HUGO
BALZAC
DUMAS
DUMAS
STENDHAL
FLAUBERT
VERLAINE
ZOLA
RIMBAUD
SAND
TITULO
FE_NA
1802
1799
1802
1824
1783
1821
1844
1840
1854
1804
SALA
2
1
1
1
3
1
3
3
3
3
ESTANTE
3
1
1
1
5
2
6
6
5
5
Los títulos no figuran en la orden INSERT; el contenido de la columna TITULO es
blanco en cada línea, puesto que, se indica la opción 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 instrucción UPDATE modifica el valor de los datos de las columnas de una o varias
líneas de una tabla.
Ejemplo 5.3:
Actualizar la tabla OBRAS obtenida en el ejemplo 1, reemplazando el año de
nacimiento por la constante 1800.
UPDATE OBRAS
SET FE_NA = 1800;
SELECT *FROM OBRAS;
ISI0514
Fundamentos de Bases de Datos
Página 104 de 120
Sistemas de Bases de Datos
AUTOR
HUGO
HUGO
HUGO
BALZAC
BALZAC
DUMAS
DUMAS
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
TITULO
HERNANI
LAS CONTEMPLACIONES
LOS MISERABLES
EUGENIA GRANDET
PAPÁ GORIOT
LOS TRES MOSQUETEROS
VEINTE AÑOS DESPUES
LA DAMA DE LAS CAMELIAS
ROJO Y NEGRO
LA CARTUJA DE PARMA
MADAME BOVARY
POEMAS SATURNIANOS
FE_NA
1800
1800
1800
1800
1800
1800
1800
1800
1800
1800
1800
1800
SALA
ESTANTE
------------ ----------------------- ----------------------- ----------------------- ----------------------- ----------------------- ----------------------- ----------------------- ----------------------- ----------------------- ----------------------- ----------------------- ------------
Ejemplo 5.4:
Actualizar la tabla OBRAS obtenida en el ejercicio 3, reemplazando el año de
nacimiento de Victor Hugo por 1802 y colocando para la SALA y ESTANTE sus
valores correspondientes.
UPDATE OBRAS
SET FE_NA
SALA
ESTANTE
WHERE AUTOR
= 1802,
= 2,
= 3
= 'HUGO';
SELECT * FROM OBRAS;
AUTOR
TITULO
FE_NA
SALA
ESTANTE
HUGO
HUGO
HUGO
BALZAC
BALZAC
DUMAS
DUMAS
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
HERNANI
LAS CONTEMPLACIONES
LOS MISERABLES
EUGENIA GRANDET
PAPÁ GORIOT
LOS TRES MOSQUETEROS
VEINTE AÑOS DESPUES
LA DAMA DE LAS CAMELIAS
ROJO Y NEGRO
LA CARTUJA DE PARMA
MADAME BOVARY
POEMAS SATURNIANOS
1802
1802
1802
1800
1800
1800
1800
1800
1800
1800
1800
1800
2
2
2
----------------------------------------------------------------------------------------------------
3
3
3
----------------------------------------------------------------------------------------------------
Ejemplo 5.5:
Actualizar la tabla OBRAS obtenida en el ejemplo 4, reemplazando el año de
nacimiento, la sala y el estante por los valores 1799, 1 y 1 respectivamente, de los
autores comprendidos entre BALZAC y DUMAS.
ISI0514
Fundamentos de Bases de Datos
Página 105 de 120
Sistemas de Bases de Datos
UPDATE OBRAS
SET FE_NA
= 1799,
SALA
= 1,
ESTANTE = 1
WHERE AUTOR BETWEEN 'BALZAC' AND 'DUMAS';
AUTOR
HUGO
HUGO
HUGO
BALZAC
BALZAC
DUMAS
DUMAS
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
TITULO
HERNANI
LAS CONTEMPLACIONES
LOS MISERABLES
EUGENIA GRANDET
PAPÁ GORIOT
LOS TRES MOSQUETEROS
VEINTE AÑOS DESPUES
LA DAMA DE LAS CAMELIAS
ROJO Y NEGRO
LA CARTUJA DE PARMA
MADAME BOVARY
POEMAS SATURNIANOS
FE_NA
1802
1802
1802
1799
1799
1799
1799
1799
1800
1800
1800
1800
SALA
ESTANTE
2
3
2
3
2
3
1
1
1
1
1
1
1
1
1
1
------------ ----------------------- ----------------------- ----------------------- ------------
En este último ejemplo se puede apreciar lo siguiente:
1. Si los datos de la SALA y ESTANTE son correctos para BALZAC y DUMAS, sólo
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 actualización, 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 operación de actualización no asegura implícitamente 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';
ISI0514
Fundamentos de Bases de Datos
Página 106 de 120
Sistemas de Bases de Datos
UPDATE OBRAS
SET AUTOR = 'DUMAS P' , FE_NA = 1802
WHERE AUTOR = 'DUMAS' ;
AUTOR
HUGO
HUGO
HUGO
BALZAC
BALZAC
DUMAS P
DUMAS P
DUMAS H
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
5.1.3
TITULO
HERNANI
LAS CONTEMPLACIONES
LOS MISERABLES
EUGENIA GRANDET
PAPÁ GORIOT
LOS TRES MOSQUETEROS
VEINTE AÑOS DESPUES
LA DAMA DE LAS CAMELIAS
ROJO Y NEGRO
LA CARTUJA DE PARMA
MADAME BOVARY
POEMAS SATURNIANOS
FE_NA
1802
1802
1802
1799
1799
1802
1802
1824
1800
1800
1800
1800
SALA
ESTANTE
2
3
2
3
2
3
1
1
1
1
1
1
1
1
1
1
------------ ----------------------- ----------------------- ----------------------- ------------
DELETE
La instrucción DELETE permite suprimir líneas de una tabla. Su formato general es:
Ejemplo 5.7:
Anular, en la tabla OBRAS obtenida en el ejemplo 6, las líneas correspondientes a los
autores con fecha de nacimientos de 1800.
DELETE FROM OBRAS
WHERE FE_NA = 1800;
AUTOR
HUGO
HUGO
HUGO
BALZAC
BALZAC
DUMAS P
DUMAS P
DUMAS F
TITULO
HERNANI
LAS CONTEMPLACIONES
LOS MISERABLES
EUGENIA GRANDET
PAPÁ GORIOT
LOS TRES MOSQUETEROS
VEINTE AÑOS DESPUES
LA DAMA DE LAS CAMELIAS
FE_NA
1802
1802
1802
1799
1799
1802
1802
1824
SALA
2
2
2
1
1
1
1
1
ESTANTE
3
3
3
1
1
1
1
1
Ejemplo 5.8:
Anular en la tabla OBRAS obtenida en el ejemplo 7, las líneas correspondientes a
DUMAS padre e hijo.
ISI0514
Fundamentos de Bases de Datos
Página 107 de 120
Sistemas de Bases de Datos
DELETE FROM OBRAS
WHERE AUTOR LIKE 'DUMAS%';
AUTOR
HUGO
HUGO
HUGO
BALZAC
BALZAC
TITULO
HERNANI
LAS CONTEMPLACIONES
LOS MISERABLES
EUGENIA GRANDET
PAPÁ GORIOT
FE_NA
1802
1802
1802
1799
1799
SALA
2
2
2
1
1
ESTANTE
3
3
3
1
1
5.2 DEPENDENCIAS FUNCIONALES
La teoría de la normalización se basa en restricciones definidas sobre los atributos de
una relación 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 à Título, el código del libro determina el título. El cod_libro es el
implicante y título es el implicado. Siempre el implicado es un hecho (una info rmación)
acerca del implicante.
Una dependencia funcional es una relación entre uno a más 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 NúmeroDeCuentaDeCliente, se puede hallar el valor de
EstadoDeCuentaDeCliente. Si esto es cierto, se puede decir que
EstadoDeCuenctaDeCliente
es
funcionalmente
dependiente
de
NúmeroDeCuentaDeCliente. 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
artículo y la cantidad de artículos comprados, se puede calcular el precio total de esos
artículos.
PrecioTotal = PrecioDelArtículo * Cantidad
En este caso se puede decir que PrecioTotal es dependiente del PrecioDelArtículo y
Cantidad.
Las dependencias funcionales entre atributos de una tabla no involucran ecuaciones.
ISI0514
Fundamentos de Bases de Datos
Página 108 de 120
Sistemas de Bases de Datos
A continuación, mediante un ejemplo se comenta la definición de dependencia
funcional.
La identificación de un estudiante es su cédula de identidad (CI) y suponemos que cada
alumno tiene una y sólo 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 notación:
CI à Especialidad.
La expresión 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 sólo con un valor de
Especialidad. En sentido inverso, un valor de Especialidad puede hacer pareja con uno
o más valores diferentes de CI.
CI
0123456789
9876543210
1122334455
9988776655
4445556666
8888999911
ESPECIALIDAD
Contabilidad
Economía
Informática
Contabilidad
Informática
Contabilidad
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
número 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 además con los
estudiantes que tienen la CI número: 9988776655 y 8888999911.
Se puede decir que la relación de CI con Especialidad es muchos a uno (N:1). En
general se dice que si A determina a B, la relación de los valores de A a B es de N:1.
La dependencia funcional puede involucrar grupos de atributos. Considere la tabla
CALIFICACIÓN (CI, Materia, calificación). La combinación de una CI y una materia
determinan una calificación, una dependencia funcional que se escribe así:
(CI, materia)
Calificación
Consideremos los dos siguientes casos:
Ø Si X à (Y , Z) entonces X à Y y X à Z
ISI0514
Fundamentos de Bases de Datos
Página 109 de 120
Sistemas de Bases de Datos
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) à Calificación, entonces CI por si mismo no
puede determinar Calificación.
5.2.2
DEPENDENCIA FUNCIONAL TRANSITIVA
El atributo Y de la relación R tiene una dependencia transitiva del atributo X de R a
través 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. País)
La dependencia entre codlibro y país es transitiva, a través de editorial. Intuitivamente
se interpreta como que PAIS es una información del libro, pero indirectamente, ya que
es una información de EDITORIAL y ésta a su vez de LIBRO.
5.3 NORMALIZACIÓN 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 concepción de la tabla.
En los ejemplos anteriores se pudo poner en evidencia las anomalías que se presentan en
el mantenimiento de las tablas. En este capítulo veremos los procedimientos de
normalización de tablas, los mismos que permiten evitar estas anomalías y obtener
actualizaciones coherentes.
La normalización es un proceso de optimización del diseño de la estructura de una Base
de Datos, que tiene por objeto reducir al mínimo las duplicaciones de datos
innecesarios, de modo que las únicas duplicaciones existentes sean las debidas al uso de
Claves Foráneas. La normalización se realiza a través de Formas Normales, e implican
la descomposición de una relación o tabla en un conjunto de tablas equivalentes, que
carezcan de las anomalías que presentaba la inicial y contenga la misma información.
Por Formas Normales se entie nde un conjunto de reglas o criterios cuyo cumplimiento
garantiza un diseño correcto de la Base de Datos, y la no existencia de duplicaciones
ISI0514
Fundamentos de Bases de Datos
Página 110 de 120
Sistemas de Bases de Datos
innecesarias. Una tabla está en una determinada forma normal si satisface un cierto
conjunto de restricciones.
Las anomalías en una relación se producen en proceso de actualización y no en procesos
de consulta. La normalización penaliza las consultas, al disminuir la eficiencia, ya que
la normalización aumenta el número 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 normalización 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 recuperación 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 normalización, partiremos de la tabla OBRAS que
fue creada en el apartado 5.1 con los siguientes datos:
AUTOR
HUGO
HUGO
HUGO
BALZAC
BALZAC
DUMAS
DUMAS
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
ZOLA
RIMBAUD
SAND
TITULO
FE_NA SALA ESTANTE
HERNANI
1802
2
3
LAS CONTEMPLACIONES
1802
2
3
LOS MISERABLES
1802
2
3
EUGENIA GRANDET
1799
1
1
PAPÁ GORIOT
1799
1
1
LOS TRES MOSQUETEROS
1802
1
1
VEINTE AÑOS DESPUES
1802
1
1
LA DAMA DE LAS CAMELIAS
1824
1
1
ROJO Y NEGRO
1783
3
5
LA CARTUJA DE PARMA
1783
3
5
MADAME BOVARY
1821
1
2
POEMAS SATURNIANOS
1844
3
6
GERMINAL
1840
3
6
UNA ESTANCIA EN EL INFIERNO 1854
3
5
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 línea, es decir, para cada línea el valor
almacenado para cada columna es único (atómico).
ISI0514
Fundamentos de Bases de Datos
Página 111 de 120
Sistemas de Bases de Datos
La primera forma normal se alcanza cuando se quitan todos los grupos de datos de
repetición, es decir, la aparición repetida de un dato o grupos de datos dentro de un
registro.
De acuerdo a esta definición, la tabla OBRAS se encuentra en Primera Forma Normal.
Sin embargo, esta tabla no ofrece todas las garantías de integridad cuando se realizan
diversas operaciones de actualización, como se ilustran en los diferentes casos de
anomalías que se detalla a continuación.
•
Anomalía con DELETE.
Ejemplo 5.9:
Anular, en la tabla OBRAS, las líneas relativas a las obras escritas por el autor HUGO.
DELETE FROM OBRAS WHERE AUTOR = 'HUGO'
AUTOR
TITULO
FE_NA
BALZAC
BALZAC
DUMAS
DUMAS
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
ZOLA
RIMBAUD
SAND
EUGENIA GRANDET
PAPÁ GORIOT
LOS TRES MOSQUETEROS
VEINTE AÑOS DESPUES
LA DAMA DE LAS CAMELIAS
ROJO Y NEGRO
LA CARTUJA DE PARMA
MADAME BOVARY
POEMAS SATURNIANOS
GERMINAL
UNA ESTANCIA EN EL INFIERNO
LA CHARCA DEL DIABLO
1799
1799
1802
1802
1824
1783
1783
1821
1844
1840
1854
1804
SALA ESTANTE
1
1
1
1
1
3
3
1
3
3
3
3
1
1
1
1
1
5
5
2
6
6
5
5
Anulando la información relativa a las obras escritas por Victo HUGO, se pierde
además la fecha de nacimiento de este autor, información que es independiente de las
obras.
•
Anomalías 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 ' );
ISI0514
Fundamentos de Bases de Datos
Página 112 de 120
Sistemas de Bases de Datos
AUTOR
BALZAC
BALZAC
DUMAS
DUMAS
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
ZOLA
RIMBAUD
SAND
BALZAC
TITULO
FE_NA
EUGENIA GRANDET
1799
PAPÁ GORIOT
1799
LOS TRES MOSQUETEROS
1802
VEINTE AÑOS DESPUES
1802
LA DAMA DE LAS CAMELIAS
1824
ROJO Y NEGRO
1783
LA CARTUJA DE PARMA
1783
MADAME BOVARY
1821
POEMAS SATURNIANOS
1844
GERMINAL
1840
UNA ESTANCIA EN EL INFIERNO 1854
LA CHARCA DEL DIABLO
1804
EL CORONEL CHABERT
0
SALA
1
1
1
1
1
3
3
1
3
3
3
3
---------
ESTANTE
1
1
1
1
1
5
5
2
6
6
5
5
----------
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 ubicación de las obras de este autor en los atributos
sala y estante.
•
Anomalías 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
BALZAC
BALZAC
DUMAS
DUMAS
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
ZOLA
RIMBAUD
SAND
BALZAC
ISI0514
TITULO
FE_NA SALA ESTANTE
EUGENIA GRANDET
1799
1
1
PAPÁ GORIOT
1799
1
1
LOS TRES MOSQUETEROS
1802
1
1
VEINTE AÑOS DESPUES
1802
1
1
LA DAMA DE LAS CAMELIAS
1824
1
1
ROJO Y NEGRO
1783
3
5
LA CARTUJA DE PARMA
1783
3
5
MADAME BOVARY
1821
1
2
POEMAS SATURNIANOS
1844
3
6
GERMINAL
1840
3
6
UNA ESTANCIA EN EL INFIERNO 1854
3
5
LA CHARCA DEL DIABLO
1804
3
5
EL CORONEL CHABERT
1800
2
2
Fundamentos de Bases de Datos
Página 113 de 120
Sistemas de Bases de Datos
En este ejemplo, se introduce voluntariamente valores erróneos en una línea. La
instrucción UPDATE no controla la presencia de datos relativos a BALZAC que se
encuentran en otra línea de la tabla.
Para corregir el error, podemos realizar la siguiente instrucción:
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 anomalías ?. Por que la tabla tal como está, no es mas que una
yuxtaposición de columnas. Analizando el contenido de la tabla OBRAS, podemos
concluir lo siguiente:
o Existen datos que están relacionados únicamente a los autores (AUTOR, FE-NA,
SALA, ESTANTE), considerando que las obras se guardan por autor.
o Existen datos que están relacionados únicamente a las obras (AUTOR, TITULO).
Además, 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;
ISI0514
Fundamentos de Bases de Datos
Página 114 de 120
Sistemas de Bases de Datos
AUTOR
HUGO
HUGO
HUGO
BALZAC
BALZAC
DUMAS P
DUMAS P
DUMAS F
STENDHAL
STENDHAL
FLAUBERT
VERLAINE
ZOLA
RIMBAUD
SAND
TITULO
HERNANI
LAS CONTEMPLACIONES
LOS MISERABLES
EUGENIA GRANDET
PAPÁ GORIOT
LOS TRES MOSQUETEROS
VEINTE AÑOS DESPUES
LA DAMA DE LAS CAMELIAS
ROJO Y NEGRO
LA CARTUJA DE PARMA
MADAME BOVARY
POEMAS SATURNIANOS
GERMINAL
UNA ESTANCIA EN EL INFIERNO
LA CHARCA DEL DIABLO
Tabla: LIBROS1
La tabla LIBROS1 es una proyección obtenida a partir de la tabla OBRAS, donde cada
libro es identificado de una manera única por su título.
Ejemplo 5.13
A partir de la tabla OBRAS, crear una tabla AUTORES1 que contenga los datos
relacionados con los autores.
CREATE TABLE
(AUTOR
FE_NE
SALA
ESTANTE
AUTORES1
CHAR (8)
INT
INT
INT
NOT NULL;
NOT NULL;
NOT NULL;
NOT NULL);
INSERT INTO AUTOR1 (AUTOR, FE_NE, SALA, ESTANTE)
SELECT DISTINCT AUTOR, FE_NE, SALA, ESTANTE FROM OBRAS;
AUTOR
HUGO
BALZAC
DUMAS P
DUMAS H
STENDHAL
FLAUBERT
VERLAINE
ZOLA
RIMBAUD
SAND
FE_NA
1802
1799
1802
1824
1783
1821
1844
1840
1854
1804
SALA
2
1
1
1
3
1
3
3
3
3
ESTANTE
3
1
1
1
5
2
6
6
5
5
Tabla: AUTORES1
ISI0514
Fundamentos de Bases de Datos
Página 115 de 120
Sistemas de Bases de Datos
5.3.2 SEGUNDA FORMA NORMAL (FN2)
Una relación 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 definición, cada tabla que tiene un atributo único como clave, está en
segunda forma normal.
La tabla LIBROS1 no contiene más 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 anomalías pueden todavía ocurrir al momento de realizar el
mantenimiento de la tabla AUTORES1, puesto que, existe también 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 través del estante.
•
Anomalías con DELETE
Anular de la tabla AUTORES1 las obras escritas por el autor HUGO.
DELETE FROM
AUTORES1 WHERE AUTOR = 'HUGO' ;
Ocasionamos la pérdida de información: La sala 2 contiene el estante 3, información
independiente del autor HUGO.
•
Anomalías con INSERT
No podemos crear una nueva sala y un nuevo estante si no tenemos un autor a registrar.
•
Anomalías con UPDATE
La instrucción:
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 solución a los problemas de la tabla AUTORES1 que se encuentra en segunda forma
normal, es crear dos tablas a partir de AUTORES1:
ISI0514
Fundamentos de Bases de Datos
Página 116 de 120
Sistemas de Bases de Datos
-
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 están 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 anomalías de
una tabla en segunda forma normal, es necesario quitar la dependencia transitiva.
La tercera forma normal es la mínima requerida para asegurar la coherencia lógica de
los datos al momento de la concepción de una tabla.
Otra definición, presentada por Boyce y Codd, no hace referencia a las dos primeras
formas normales, ésta introduce una forma más 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 definición:
Una relación 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
112
112
203
ASIGNADO
VUELO
112
112
203
DIA
NUMPILOTO NOMBRE
Jun-06
31174 TORRES
Jun-07
30046 PEREZ
Jun-09
31174 TORRES
DIA
NUMPILOTO
Jun-06
31174
Jun-07
30046
Jun-09
31174
PILOTO NUMPILOTO NOMBRE
31174 TORRES
30046 PEREZ
ISI0514
HRS_VUELO
7250
15412
7250
HRS_VUELO
7250
15412
Fundamentos de Bases de Datos
Página 117 de 120
Sistemas de Bases de Datos
5.4.2
ALMACEN DEPART
1
1
7
ARTICULO
Computadora
Monitor
Teclado
JEFE
Perez
Perez
Aguilar
CANTIDAD
15
20
13
7
2
3
3
3
Monitor
Raton
Impresora
Computadora
Tarjera
Aguilar
Torres
Suarez
Suarez
Suarez
25
40
35
10
50
ALMACEN1
DEPART
1
2
3
7
JEFE
Perez
Torres
Suarez
Aguilar
ALMACEN2
DEPART
1
1
7
7
2
3
3
3
ARTICULO
Computadora
Monitor
Teclado
Monitor
Raton
Impresora
Computadora
Tarjera
CANTIDAD
15
20
13
25
40
35
10
50
5.4.3
ESCRIBE
ISI0514
AUTOR
Date, C.
Date, C.
Date, C.
Cood, E
NACIONALIDAD COD_LIBRO TITULO
Norteamericana
98987
Database
Norteamericana
97777
SQL Stan
Norteamericana
98987
Guide for
Norteamericana
7890
Relational
EDITORIAL
Addison
Addison, W.
Addison, W.
Addison, W.
AÑO
1990
1986
1988
1990
Gardain
Gardain
Valduriez
Kim, W.
Lochovsky
Francesa
Francesa
Francesa
Norteamericana
Canadiense
Paraninfo
Eyrolles
Eyrolles
ACM
ACM
1986
1984
1984
1989
1989
12345
67890
67890
11223
11223
Basi Dati
Comp DB
Comp DB
BD OO
BD OO
Fundamentos de Bases de Datos
Página 118 de 120
Sistemas de Bases de Datos
LIBRO
Cod_libro
Titulo
AUTOR
Nombre
Nacionalidad
ESCRIBE
Cod_libro
Nombre
ISI0514
Editorial
Fundamentos de Bases de Datos
Año
Página 119 de 120
Sistemas de Bases de Datos
BIBLIOGRAFÍA
1. [Adad y otros 1993] Rubén 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, Guía Lan Times de
SQL. McGraw- Hill.
4. [Korth y Silberchatz 2002] Henry F. Korth y Abraham Silberschatz,
Fundamentos de Bases de Datos. 4ta Edición. McGraw-Hill.
5. [Korth y Silberchatz 1998] Henry F. Korth y Abraham Silberschatz,
Fundamentos de Bases de Datos. 3ra Edición. McGraw-Hill.
6. [Kroenke 2003] David M. Kroenke, Procesamiento de Bases de Datos,
Fundamentos Diseño e Instrumentación. Octava Edición. Prentice-Hall
Hispanoamericana, S.A.
7. [Koutchouk 1992]. Michel Koutchouk, SQL et DB2 le relationnel et sa pratique.
2da Edición. Masson, Paris.
8. [Moreno y otros 2002] Pilar Moreno, Iñigo Molina, Santiago Ormeño, Curso de
Fundamentos de sistemas de información geográfico, Universidad Politécnica de
Madrid, Cepade.
9. [O’Brien 2001] James A. O’Brien, Sistemas de Información Gerencial,
MacGraw – Hill.
10. [Piattini y otros 1996] Mario Piattini, José Antonio Calvo, Joaquín Cervera,
Luis Fernando Sanz, Análisis y diseño detallado de aplicaciones informáticas de
gestión. Ra-Ma.
11. [Ramos 2002] Humberto Ramos, Curso de Gestión de Bases de Datos,
Universidad Politécnica de Madrid, Cepade.
ISI0514
Fundamentos de Bases de Datos
Página 120 de 120
Descargar