Sunteți pe pagina 1din 127

Sistemas de Bases de Datos

UDA Fundamentos de Bases de Datos Pgina 1 de 127




BASES DE DATOS





Ingeniera de Sistemas y Telemtica





Contenido: Fundamentos de Bases de Datos



Profesor: Oswaldo MERCHAN








Abril / 2012



Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 2 de 127
INTRODUCCIN



El presente documento recopila informacin de las obras bibliogrficas especializadas
en los fundamentos de Bases de Datos, incluye adems ejemplos prcticos que se
encuentran desarrollados para que puedan ser revisados y analizados por el alumno.
Los resmenes y extractos obtenidos, han sido organizados para que el documento sirva
como gua para los estudiantes que cursan la materia de Bases de Datos

El captulo 1 presenta en forma general las caractersticas de un sistema de Bases de
Datos, sus componentes y ventajas en comparacin con los sistemas tradicionales
orientados a procesos.

En el captulo 2 se describe el modelo entidad - relacin que se emplea para interpretar,
especificar y documentar los requerimientos para sistemas de procesamiento de Bases
de Datos, siendo muy til este modelo para el diseo que parte de lo general a lo
particular.

El captulo 3 presenta lo principios del Modelo Relacional y los aspectos de los
fundamentos matemticos (lgebra Relacional)

El objetivo del captulo 4 es el de presentar de manera prctica los conceptos del
lenguaje SQL. Se describe el manejo de datos que se realiza mediante las instrucciones
de consulta, insercin, actualizacin y eliminacin; comprende tambin la teora de la
integridad de datos. Al final del captulo se incluye una serie de ejemplos de consultas a
las tablas generadas en el captulos 2.

En el captulo 5 se expone un tema que complementa al modelo relacional, la teora de
Normalizacin, metodologa que es empleada para validar la adecuada construccin de
una relacin. Se incluyen los conceptos necesarios de Dependencias Funcionales que
servir para definir las Formas Normales















Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 3 de 127
CAPITULO 1

SISTEMAS DE BASES DE DATOS

1.1 INTRODUCCIN.

Un sistema de gestin de bases de datos SGBD (DBMS Data Base Management
System) consiste en una coleccin de datos interrelacionados y un conjunto de
programas para acceder a esos datos.

El trmino bases de datos corresponde a un conjunto autodescriptivo de registros
integrados. Es autodescriptivo, porque adems de los datos fuentes del usuario,
contiene una descripcin de su propia estructura; tal descripcin es conocida como
diccionario de datos. La Base de Datos es un depsito nico de datos para toda la
organizacin, por lo que debe ser capaz de integrar los distintos sistemas y aplicaciones,
atendiendo a las necesidades de los usuarios en los niveles: operativo, tctico y
estratgico.

El objetivo del SGBD es suministrar la interfaz entre el conjunto de los datos y los
usuarios. El SGBD tambin debe proporcionar a los otros usuarios (analistas,
programadores, administradores) las correspondientes herramientas que les permitan un
adecuado desarrollo de sus funciones.

Una Base de Datos es un conjunto de registros integrados que jerrquicamente est
caracterizada de la siguiente manera: los bits conforman los bytes o caracteres; los
caracteres constituyen campos; los campos integran registros y los registros componen
archivos. Una base de datos contiene cuatro componentes: archivos de datos del
usuario, una descripcin de su propia estructura que se denomina diccionario de datos
o metadatos, incluye tambin ndices que se usan para representar las relaciones entre
los datos y para mejorar el desempeo de las aplicaciones de la base de datos, y un
ltimo tipo de informacin o componente que se almacena en la base de datos son los
metadatos de aplicacin; se usan para almacenar la estructura y el formato de reportes,
consultas, y otros componentes de aplicacin.

Bits } Bytes} Campos } Registros } Archivos }

Bits } Bytes} Campos } Registros } Archivos
+
Metadatos
+
Indices
+
Metadatos de
Aplicacin

Jerarqua de los elementos de datos en un sistema de procesamiento de archivos y en un sistema de bases de datos

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 4 de 127
Los sistemas de bases de datos estn diseados para gestionar grandes bloques de
informacin. La gestin de datos implica tanto la definicin de estructuras para el
almacenamiento de la informacin, los mecanismos para la gestin de la informacin,
garantizar la fiabilidad de la informacin almacenada, evitando el acceso de usuarios no
autorizados y evitando que se genere resultado anmalos

Relacin entre una aplicacin de base de datos y un DBMS




1.2 GESTION DE LOS DATOS

- Enfoque tradicional: En las primeras etapas del procesamiento de datos, las
aplicaciones que se desarrollaban en las organizaciones estaban orientadas a
cubrir necesidades muy especficas de procesamiento, por lo que, tanto los
lenguajes de programacin como las estructuras de datos se centraban en realizar
de manera ms eficiente una tarea especfica.

Los sistemas informticos tradicionales se denominan sistemas orientados
hacia procesos, debido a que en ellos se pone nfasis en los tratamientos que
reciben los datos, los cuales se almacena en ficheros que son diseados para una
determinada aplicacin.


Mundo Real




Ficheros Individuales





Procesos:




Aplicaciones
de B.D.
DBMS
Bases de
Datos
Personal Nmina Vehculos
Personal Nmina Vehculos
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 5 de 127
Sistema orientado a procesos:














Datos Archivo Tratamiento Resultados

- Enfoque de base de datos: Con el fin de resolver los problemas que se
presentan con los sistemas informticos tradicionales y con el objeto de lograr
una gestin ms racional del conjunto de datos, surge un nuevo enfoque que se
apoya sobre una Base de Datos en la cual los datos son recogidos y
almacenados, al menos lgicamente, una sola vez, con independencia de los
tratamientos. Por lo tanto, en los sistemas orientados a datos el anlisis
comienza por formular la lgica de los datos organizacionales como un todo
independiente, para despus involucrarlos con los procesos que lo utilizan.



Mundo Real




Base de Batos





Procesos:



Datos
Personal Nmina Vehculos
D1
D2
D3

D1

D1

D4
D5
D6
D7
F1
F2
F3
F4
F5
T1
T2
T3
T4
T5
F6
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 6 de 127
Sistema orientado a las Bases de Datos














Datos Creacin y Recuperacin
actualizacin y Tratamiento

1.3 OBJETIVOS DE LOS SISTEMAS DE BASES DE DATOS

Un sistema de procesamiento de archivos apoyado por un sistema operativo
convencional, tiene un nmero de desventajas importantes que tienen que ser evitadas
por un sistema de bases de datos:

- Datos integrados: En un sistema de bases de datos, todos los datos de las
aplicaciones se almacenan en un medio sencillo llamado Bases de Datos. Por
ejemplo, en un programa de facturacin, la aplicacin puede acceder a los datos
del cliente, los datos de proveedores o ambos. En caso de necesitar ambos datos,
el programador de la aplicacin slo especifica cmo debern combinarse los
datos y el DBMS realizar las operaciones necesarias para conseguirlo.

Cuando los datos se encuentran aislados, stos estn repartidos en varios
archivos, y pueden tener diferentes formatos, lo que complica la creacin de
nuevos programas para obtener los datos apropiados.

- Independencia programa / datos: Una de las principales ventajas que brinda
una Base de Datos es la independencia entre los datos y los tratamientos que se
hacen de ellos, a diferencia de los Sistemas Orientados a Procesos, en los cuales
los datos eran sumamente dependientes de los programas. De hecho, para que
un proceso pudiera utilizar un determinado dato que se encontraba almacenado
en un archivo deba hacer la declaracin completa de la estructura de este
archivo, esta declaracin era slo modificable en tiempo de edicin quedando
fijada en tiempo de compilacin.

Un sistema de procesamiento de bases de datos hace que los programas
dependan menos de los formatos de archivo. Los formatos de registro se
D1
D2
D3
D4
D5
D6
D7
Creacin


Depuracin




Actualizacin



Almacenamiento
BD






Recuperacin




Tratamiento
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 7 de 127
almacenan en la misma base de datos y son accedidos por el DBMS y no por los
programas de aplicacin.

La independencia de programas y datos minimiza el impacto de los cambios en
el formato de los datos de los programas de aplicacin. La mayora de las veces
los programas de aplicacin no se enteran de que el formato de los datos ha
cambiado.

- Redundancia e inconsistencia de datos: En un sistema de procesamiento de
archivos, stos y los programas de aplicacin son creados por diferente personal
durante un perodo largo de tiempo, en donde, probablemente los archivos
tengan diferentes formatos y puedan estar duplicados en varios sitios. Esto
puede causar la redundancia de la informacin que aumenta los costos de
almacenamiento y adems puede llevar a inconsistencia de los datos, esto es, las
diversas copias de los mismos datos no concuerdan entre s.

Por ejemplo, si la direccin de un empleado est registrada en un archivo que
contenga la informacin del Personal de la empresa y adems est registrada en
el archivo con la informacin del Control de Asistencia, un cambio en la
direccin del empleado puede estar reflejada en el registro del Personal, pero no
estarlo en el registro del control de asistencia, produciendo una inconsistencia de
los datos lo que implica dudas en la credibilidad de los datos almacenados.

- Problemas de integridad: Los valores de datos almacenados en la base de
datos deben satisfacer ciertos tipos de restricciones de consistencia. Por
ejemplo, el saldo mnimo de una cuenta corriente debe ser 100 dlares.

- Acceso concurrente: En un entorno de multiprogramacin es posible ejecutar
varias transacciones de manera concurrente, lo que significa actualizar los datos
simultneamente, para lo cual es necesario que el sistema controle la interaccin
entre las transacciones concurrentes para evitar que se destruya la consistencia
de la base de datos.

- Control de seguridad: No todos los usuarios del sistema de bases de datos
pueden acceder a todos los datos.


1.4 CONCEPTO DE BASES DE DATOS:

Las definiciones de Bases de Datos son numerosas, aunque todas coinciden en que es un
conjunto de datos almacenados en un soporte de acceso directo. Los datos estn
interrelacionados y estructurados de acuerdo a un modelo que sea capaz de recoger el
mximo contenido semntico.

El concepto de bases de datos ha ido cambiando y configurndose a lo largo del tiempo.

A continuacin se enuncian algunas de estas definiciones:

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 8 de 127
Definicin 1:

Coleccin de datos interrelacionados almacenados en conjunto, sin redundancia
perjudicial o innecesaria. Su finalidad es servir a una o ms aplicaciones de la mejor
forma posible. Los datos se almacena de modo que resulten independientes de los
programas que lo usan. Se emplean mtodos bien determinados para incluir nuevos
datos y para modificar o extraer los datos almacenados [Martn 1995]

Definicin 2:

Coleccin o depsito de datos donde los mismos se encuentran lgicamente
relacionados entre s, tienen una definicin y descripcin comunes y estn
estructurados de una forma particular. Una Base de Datos es tambin un modelo del
mundo real, y como tal, debe servir para toda una gama de usos y aplicaciones.
[Conference des Statisticiens Europens, 1977]

Definicin 3:

Coleccin de datos interrelacionados [Elmasri y Navathe, 1989]

Definicin 4:

Una coleccin o depsito de datos integrados, con redundancia controlada y con una
estructura que refleje las interrelaciones y restricciones existentes en el mundo real.
Los datos, que han de ser compartidos por diferentes usuarios y aplicaciones, deben
mantenerse independientes de stas, y su definicin y descripcin, han de estar
almacenadas junto con los mismos. Los procedimientos de actualizacin y
recuperacin, comunes y bien determinados, habrn de ser capaces de conservar la
seguridad (integridad, confiabilidad y disponibilidad) del conjunto de datos [De
Miguel y Piattini, 1993]


1.5 VENTAJAS DE LAS BASES DE DATOS.

CUADRO RESUMEN DE LAS VENTAJAS DE LAS BASES DE DATOS
Referido a: Ventajas:
Los datos - Independencia de los datos respecto a los tratamientos y
viceversa
- Mejor disponibilidad de los mismos
- Mayor eficiencia en la recogida, codificacin y entrada
Los resultados - Mayor coherencia
- Mayor valor informativo
- Mejor y ms normalizada la documentacin de la informacin
Los usuarios - Acceso ms rpido y sencillo de los usuarios finales
- Ms facilidades para compartir los datos por el conjunto de
usuarios
- Mayor flexibilidad para atender a demandas cambiantes
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 9 de 127

1.6 ABSTRACCIONES DE DATOS.

Un objetivo importante de un sistema de bases de datos es proporcionar a los usuarios
una visin abstracta de los datos. Es decir, el sistema esconde ciertos detalles de cmo
se almacenan y mantienen los datos. Puesto que, muchos usuarios de sistemas de bases
de datos no tienen experiencia en computadoras, se les esconde la complejidad a travs
de diversos niveles de abstracciones para simplificar su interaccin con el sistema.

En los sistemas de informacin tradicionales se puede observar la existencia de dos
estructuras distintas:

- Lgica (vista de usuario)

- Fsica (forma en la que se encuentran los datos en el almacenamiento)

En las Bases de Datos aparece un nuevo nivel de abstraccin que se ha denominado de
diversas maneras: nivel conceptual, estructura lgica global, etc. El nivel externo es la
visin que tiene de la base de datos cada usuario en particular, el nivel conceptual
responde al enfoque del conjunto de la empresa (visin del administrador), y el nivel
interno es la forma en la que se organizan los datos en el almacenamiento fsico.

- Nivel fsico o interno: Nivel ms bajo de abstraccin, describe cmo se
almacenan realmente los datos. Se distinguen tres clases de aspectos:

Estrategia de almacenamiento: Incluye la asignacin de espacio de
almacenamiento para el conjunto de datos, las estrategias para optimizar tiempo
y espacio en memoria secundaria, tratamiento de desbordamientos, etc.

Caminos de acceso: Incluye las especificaciones de claves primarias y
secundarias, as como la de ndices o punteros.

Miscelneos: Tcnicas de compresin de datos, criptografiado, optimizacin,
etc.

Nivel conceptual: Este nivel describe qu datos son realmente almacenados en
la base de datos y las relaciones que existen entre los datos. El nivel conceptual
de abstraccin lo usan los administradores de bases de datos, quienes deben
decidir qu informacin se va a guardar en la base de datos.

En el esquema o nivel conceptual deber incluirse la descripcin de todos los
datos e interrelaciones entre stos, las restricciones de integridad y de
confidencialidad.

- Nivel de visin o externo: Es el nivel ms alto de abstraccin, describe un
nmero de vistas, cada vista describe una parte de la base de datos completa que
le interesa a un particular grupo de usuarios.

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 10 de 127
La interrelacin entre estos tres niveles de abstraccin se detalla continuacin.





















Almacenamiento de
Bases de datos

Tres niveles de abstraccin de datos


1.7 ESQUEMA E INSTANCIA.

La informacin almacenada en la base de datos, en un determinado momento en el
tiempo recibe el nombre de instancia (ejemplar), en tanto que el diseo global de la
base de datos se llama esquema. Los esquemas cambian muy rara vez o nunca.

Los sistemas de Bases de Datos tienen varios esquemas, divididos de acuerdo con los
niveles de abstraccin. En el nivel ms bajo est el esquema fsico; en el nivel
intermedio, el esquema conceptual; en el nivel ms alto un subesquema.


1.8 USUARIOS DE UNA BASE DE DATOS

En esta seccin se identifican las personas que estn involucradas en el diseo, uso y
mantenimiento de una base de datos.

- Administrador de una base de datos (DBA): Es el responsable del diseo,
control y administracin de la base de datos, puede ser desempeada por una
persona o por un grupo de personas dependiendo de la envergadura del proyecto.
Vista 1 Vista n.
Nivel
conceptual
Nivel fsico
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 11 de 127

Ser responsabilidad del Administrador de la Base de datos (DBA):

- La estructura de la base de datos, en el sentido de determinar qu
informacin va a ser necesaria almacenar en la misma, despus de
haber analizado los requisitos de los distintos usuarios.

- La descripcin conceptual y lgica de la Base de datos, una vez
especificados los requisitos de la informacin es preciso realizar el
diseo conceptual de la base de datos para despus, adecuar la
estructura conceptual a un SGBD especfico.

- La descripcin fsica de la Base de datos, encontrando una estructura
interna que soporte el esquema lgico y los objetivos de diseo. Es
una labor que se extiende a lo largo de la vida de la base de datos, el
DBA tendr que variar parmetros, reorganizar los datos, modificar
estructuras de almacenamiento, realizar nuevas distribuciones de los
ficheros en los soportes, etc.

- Definicin de estndares con los que se va a regir la organizacin.

- Los aspectos relativos a la seguridad.

- El control y la interaccin entre la red y la base de datos.

- Los procedimientos de explotacin y uso.

- La estrategia de transicin.

- Diseador de la base de datos: Es responsable de identificar los datos que van
a ser almacenados en la base de datos y escoger las estructuras apropiadas.
Define adems los requerimientos del usuario o grupos de usuarios.

- Usuarios finales: Son las personas que en su trabajo requieren el acceso a la
base de datos para realizar consultas, actualizaciones y generar reportes. Existen
tres categoras de usuarios:

- Usuario casual: Usuarios que hacen consultas a la base de datos.

- Usuarios especializados: Realizan consultas y modificaciones a la base de
datos.

- Usuarios sofisticados: Incluyen ingenieros, analistas que estn
familiarizados con el DBMS.




Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 12 de 127
1.9 INDEPENDENCIA DE DATOS

Se llama independencia de datos a la capacidad para modificar una definicin de
esquema en un nivel sin que afecte a una definicin de esquema en el siguiente nivel
ms alto. Existen dos niveles de independencia de datos:

- Independencia fsica de datos: Es la capacidad de modificar el esquema fsico
sin provocar que los programas de aplicacin tengan que rescribirse. En algunas
ocasiones son necesarias las modificaciones en el nivel fsico para mejorar el
funcionamiento

En este punto se puede encontrar cambios al tamao de los bloques, longitud de
los registros, creacin y eliminacin de ndices, cambios en las direcciones
relativas y absolutas de almacenamiento.

- Independencia lgica de datos: Es la capacidad de modificar el esquema lgico
sin provocar que los programas de aplicacin tengan que rescribirse. Las
modificaciones en el nivel lgico son necesarias siempre que la estructura lgica
de la base de datos se altere. Los cambios pueden realizarse en los campos
(nombre, tipo, etc) o en los registros (cambio de nombre, introducir nuevos
campos, borrado de los mismos, etc).


1.10 MODELOS DE DATOS

Un modelo de datos consiste en una coleccin de herramientas conceptuales para
describir datos, relaciones entre ellos, la semntica asociada a los datos, y restricciones
de consistencia. Se dividen en tres modelos:

- Modelo lgico basado en objetos: Este modelo describe los datos a nivel
conceptual y de visin, los ms conocidos son:

Modelo entidad relacin
Modelo orientado a objetos
Modelo binario
Modelo semntico de datos

- Modelo lgico basado en registros: Los modelos lgicos basados en registros
se utilizan para describir datos en los niveles conceptual y fsico.

La base de datos de un modelo basado en registros est estructurada en registros
de formato fijo de varios tipos. Cada tipo de registro define un nmero fijo de
campos y cada campo normalmente es de longitud fija.

Los modelos ms conocidos son:

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 13 de 127
Modelo Relacional: Este modelo representa los datos y las relaciones entre ellos,
mediante una coleccin de tablas, cada una de las cuales tiene un nmero de
columnas con nombres nicos.

NOMBRE CALLE CIUDAD NUMERO
Prez Sucre Cuenca 900
Torres Bolvar Quito 556
Torres Bolvar Quito 647
Jara Crdova Guayaquil 801
Jara Crdova Guayaquil 647


NUMERO SALDO
900 55
556 100000
647 105666
801 10533

Modelo de red: Los datos se representan mediante coleccin de registros y las
relaciones de datos mediante enlaces que pueden considerarse como punteros.

Modelo jerrquico: Es similar al modelo de red, la diferencia est en que los
registro estn organizados como coleccin de rboles en vez de grafos
arbitrarios.

- Modelo fsico basado en datos: Se usa para describir datos en el nivel ms
bajo.

1.11 LENGUAJES DE BASES DE DATOS.

Para llevar a cabo las distintas funciones que cumple un SGBD, se hace necesario
contar con diferentes lenguajes y procedimientos que permitan la comunicacin con la
Base de datos. Un sistema de bases de datos proporciona dos tipos de lenguaje
diferentes: uno para especificar el esquema de la base de datos y el otro para expresar
las consultas y actualizaciones de la base de datos.

Data definitin language (DDL): Lenguaje especial basado en un conjunto de
definiciones, que sirve para especificar el esquema de una base de datos. El resultado de
la compilacin de sentencias de DDL es un conjunto de tablas que se almacenan en un
archivo llamado Diccionario de Datos (DD).

Storage definition lenguaje (SDL) y View definition languaje (VDL). Son lenguajes
que nos sirven para especificar la estructura de almacenamiento y los mtodos de
acceso.

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 14 de 127
Data manipulation languaje (DML). El objetivo es proporcionar una interaccin
eficiente entre las personas y el sistema. Por manipulacin se entiende la recuperacin,
insercin, supresin y modificacin de la informacin almacenada en la base de datos.

Tipos de DML:

No procedimentales: (tambin conocidos como declarativos), requieren que el
usuario especifique QU datos se necesitan, sin especificar CMO obtenerlos.
Ej: SQL.

Procedimentales: (tambin conocidos como declarativos), Los DML requieren
que el usuario especifique QU datos se necesitan y CMO obtenerlos. Ej. DL/I
(lenguaje propio de los ordenadores IBM)


Representacin de la accin de un lenguaje de bases de datos



























1.12 GESTOR DE BASE DE DATOS.

Es un modelo de programa que proporciona el interfaz entre los datos de bajo nivel
almacenados en la base de datos y los programas de aplicacin y consultas hechas al
sistema.
Quiero consultar
datos del estudiante
Nro 263
Voy a crear un
nuevo archivo en
la base de datos
DDL DML
GESTOR DE LA BD
(DBMS)
BASE DE
DATOS
COMUN
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 15 de 127

USUARIO









Un gestor de bases de datos es responsable de las siguientes tareas:

- Interaccin con el gestor de archivos: Es responsable del almacenamiento,
recuperacin y actualizacin de los datos en la base de datos. El gestor de
bases de datos traduce las sentencias DML a comandos del sistema de
archivos de bajo nivel, para procesar los datos almacenados en el disco.

- Implantacin de la integridad: Controla que los datos almacenados en la
base de datos cumplan con ciertas restricciones de consistencia. Por ejemplo
el nmero mximo de horas semanales =< 40.

- Implantacin de la seguridad: No todos los usuarios de la base de datos
necesitan tener acceso a todo su contenido, es funcin del gestor de la base
de datos administrar estas seguridades.

- Copias de seguridad y recuperacin: Es responsabilidad del gestor de
bases de datos detectar las fallas ocasionadas por hardware o software, y
restaurar la base de datos al estado en el que se encontraba antes de ocurrir el
fallo.

- Control de concurrencia: Es responsabilidad del gestor de bases de datos
conservar la consistencia de los datos, cuando varios usuarios actualizan la
base de datos concurrentemente.

En resumen se puede definir como un Sistema de Gestin de la Bases de Datos (SGBD)
Al conjunto coordinado de programas, procedimientos, lenguajes, etc., que suministra,
tanto a los usuarios no informticos como a los analistas, programadores, o al
administrador, los medios necesarios para describir, recuperar y manipular los datos
almacenados en la base, manteniendo su seguridad. [DE MIGUEL y PIATTINI,
1993]

1.13 COMPONENTES DE UN SISTEMA DE BASES DE DATOS

Un sistema de base de datos contempla los siguientes componentes:

- La Base de Datos.

B.D.
Sistema de gestin de bases
de datos
Consultas Aplicaciones
B.D. B.D.
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 16 de 127
- Los sistemas de gestin de bases de datos (SGBD, DBMS), tal como el DB2,
oracle, Sybase, etc., que varan considerablemente en cuanto a caractersticas
y funciones.

Las caractersticas y funciones de un DBMS, pueden dividirse en tres
subsistemas: Herramientas de diseo, tiempo de ejecucin y motor DBMS.

Subsistema de Herramientas de Diseo: Consta de un conjunto de
implementos que facilitan el diseo y la creacin de la base de datos y sus
aplicaciones. Generalmente incluye herramientas para la creacin de tablas,
formas, consultas y reportes. Tambin proporcionan lenguajes e interfaces de
programacin para programar con lenguajes. Por ejemplo Access tiene dos
lenguajes: un macrolenguaje que no requiere conocimientos profundos de
programacin y una versin de BASIC llamada Visual Basic.

Sistema de Run Time (Tiempo de Ejecucin): Procesa los componentes de
aplicacin que se desarrollan al utilizar las herramientas de diseo.
(procesador de formas, de consultas).

El motor DBMS: Es el intermediario entre las herramientas de diseo y los
subsistemas run-time y los datos. El motor recibe los requerimientos de los
otros dos componentes (plantados en trminos de tablas, filas y columnas) y
traduce los requerimientos a rdenes dirigidas al sistema operativo para leer
y escribir datos en medios fsicos. El motor DBMS tambin es responsable
del manejo de transacciones, bloqueo, respaldo y recuperacin de la base de
datos.

- Programas de aplicacin.

- Un conjunto de usuarios.

- Medios tcnicos.

- Programas utilitarios (generadores de informes, de interfaces, herramientas
de desarrollo, de administracin, etc).













Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 17 de 127
Una estructura completa de un sistema de bases de datos, se detalla en el siguiente
grfico:

Usuarios Programadores Usuarios Administradores
ingenuos de aplicaciones sofisticados de bases de datos











































Interfaz de
aplicacin
Programadores
de aplicaciones
Consultas Planificacin de
bases de datos
Cdigo objeto
de programas
de aplicacin
Precompilador de
lenguaje de
manipulacin de
datos
Procesador
de consultas
Compilador de
lenguaje de
definicin de
datos
Gestor de bases
de datos
Gestor de
archivos
Archivos
Diccionario
s
- Control de
concurrencia
- Backup
- Recovery
Recovery

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 18 de 127
CAPITULO 2


MODELO ENTIDAD - RELACIN


2.1 INTRODUCCIN

Podemos definir un Modelo de Datos como un conjunto de conceptos que permiten
describir la estructura de una Base de Datos a diferentes niveles de abstraccin. Segn
este nivel de abstraccin podemos clasificar a los modelos de datos como:

- Externo.

Permite presentar los datos que necesita cada usuario en particular, con las
estructuras propias del lenguaje de programacin que va a emplear.

- Global.

Estos modelos ayudan a describir los datos para el conjunto de usuarios . Los
mismos se clasifican en:


- Modelo Conceptual o de alto nivel.

Se refiere a la descripcin del mundo real de acuerdo con un modelo
altamente semntico e independiente del hardware y del SGBD en el que
posteriormente se vaya a realizar la implementacin de la base de datos.

En general, los Modelos Conceptuales, por su nivel de abstraccin y riqueza
semntica, constituyen una interfaz til entre los profesionales de la
informtica y los usuarios finales, en las primeras etapas del proceso de diseo
de Bases de Datos.


- Modelos Convencionales.

Se encuentran soportados por los SGBD y estn orientados a describir los
datos a nivel lgico para el SGBD, por lo que sus conceptos son propios de
cada SGBD.

Estos modelos se pueden considerar como una interfaz entre el informtico y
el ordenador.

Los tres modelos convencionales ms extendidos en el mercado son el
Jerrquico, el de Codasyl y el Modelo Relacional.

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 19 de 127
- Interno.

Estos modelos tambin conocidos como Modelos Fsicos, se orientan a la
mquina.

De manera ms precisa se puede definir a un Modelo de Datos como un conjunto de
conceptos, reglas y convenciones que nos permiten describir y manipular los datos del
mundo real y que deseamos almacenar en la Base de Datos.

Dentro de la problemtica del diseo de Bases de Datos, los modelos de datos cumplen
un papel muy importante, ya que son las herramientas que nos permiten generar los
esquemas de Bases de Datos que regirn su estructura.

La modelacin de datos expresa un diseo lgico de datos de la misma manera en que
un diagrama de flujo expresa el diseo lgico de un programa.

2.2 EL DISEO CONCEPTUAL EN EL PROCESO DE
DESARROLLO DE SOFTWARE.

Consideremos el Ciclo de Vida Clsico de un producto de Software.















En el desarrollo de software, las primeras etapas son las que cobran mayor importancia,
ya que en ellas se debe centrar la mayor cantidad de esfuerzo para asegurar una mayor
calidad del producto.

Dentro de estas etapas, se encuentra el diseo. El diseo como actividad se puede
entender en distintos niveles de abstraccin, separndolo en Diseo Conceptual, Diseo
lgico y Diseo Fsico.

- Diseo Conceptual.

Es de un alto nivel de abstraccin, y puede confundirse inicialmente con el trmino
de la etapa de anlisis. Este diseo no est necesariamente asociado con una
Ingeniera del
Sistema
Anlisis
Diseo
Codificacin
Pruebas
Mantenimiento
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 20 de 127
plataforma de implementacin, sino es ms cercano a la realidad, al problema a
solucionar.

El diseo conceptual recibe como entrada la especificacin de los requerimientos y
su resultado es el esquema conceptual de la Base de datos, independiente del
software que se use para manipularlo.

- Diseo Lgico.

Recibe como entrada el esquema conceptual y da como resultado un esquema
lgico, que es una descripcin de la estructura de la Base de Datos que puede
procesar el software del Sistema de Gestin de Bases de Datos.

El diseo lgico se acerca ms a la implementacin del producto en una plataforma
computacional, integrando consideraciones para la plataforma en cuestin.

- Diseo Fsico:

Recibe como entrada el esquema lgico y da como resultado un esquema fsico, que
es una descripcin de la implementacin de una Base de Datos en la memoria
secundaria del ordenador. Describe la estructura de almacenamiento y los mtodos
usados para tener acceso efectivo a los datos.










Esquema conceptual





Esquema Lgico




Esquema Fsico

Realidad
Requisitos
de datos
Modelo
Conceptual
Modelo
Lgico
Modelo
Fsico
Diseo Conceptual
Diseo Lgico
Diseo Fsico
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 21 de 127
2. 3 MODELO ENTIDAD RELACIN (MER):


El Modelo EntidadRelacin fue desarrollado por Peter Chen en 1976 como
metodologa grfica para el diseo de Bases de Datos, por lo que puede decirse que es
un mtodo de representacin abstracta del mundo real centrado en las restricciones o
propiedades lgicas de una Base de Datos.

El Modelo de datos Entidad-Relacin (MER) se basa en una percepcin del mundo real,
que consiste en un conjunto de objetos bsicos llamados entidades y de relaciones entre
estos objetos. Se emplea para interpretar, especificar y documentar los requerimientos
para sistemas de procesamiento de bases de datos.


2.3.1 ENTIDADES:

Una entidad es algo que puede identificarse en el ambiente de trabajo de los usuarios,
debe ser un objeto que existe y es distinguible de otros objetos. Una entidad con una
existencia fsica es una persona, un carro; o puede ser un objeto con una existencia
conceptual: una compaa, un trabajo o un curso de universidad.

Las entidades se agrupan en clases de entidades o conjunto de entidades del mismo tipo,
una clase de entidad es la forma general o descripcin de algo, por ejemplo un
CLIENTE.

Se define como ocurrencia de una clase de entidad, a la representacin de una entidad
particular, tal como CLIENTE 23456.

Cada entidad tiene propiedades particulares llamadas atributos.


2.3.2 ATRIBUTOS:

Las entidades tienen atributos o como se les llama en ocasiones, propiedades, que
describen las caractersticas de una entidad, por ejemplo una entidad EMPLEADO,
tiene sus propiedades particulares como: nombre, edad, direccin, sueldo, actividad, etc.

Tipos de atributos:

- Atmico: Los atributos que no son divisibles, por ejemplo: Nombre, Cdula
de identidad, Ciudad.

- Compuestos: Cuando un atributo es dividido en pequeas subpartes. Los
atributos compuestos pueden formar una jerarqua de atributos, por ejemplo:




Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 22 de 127












- 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 automvil.








- Atributos derivados: Cuando los valores de un atributo son afines, y el
valor para este tipo de atributo se puede derivar de los valores de otros
atributos. Por ejemplo, la edad y la fecha de nacimiento de una persona; si
conocemos la fecha de nacimiento, podemos determinar su edad, en este
caso decimos que la edad es derivada de la fecha de nacimiento.

- Atributo llave: Una entidad usualmente tiene un atributo sobre el cual los
valores son distintos para cada entidad individual, sta nos permite
identificar de forma nica a una entidad en el conjunto de entidades, por
ejemplo, en la entidad PERSONAL el atributo puede ser el nmero de la
cdula de identidad.

En algunos casos varios atributos juntos pueden formar una llave,
significando que la combinacin de los valores de los atributos debe ser
distinta para cada entidad individual.

- Atributos Nulos: Un valor nulo se usa cuando una entidad no tiene valor
para un atributo. Nulo puede tambin indicar que el valor de un atributo es
desconocido.

Cada atributo simple de una entidad es asociado con un set de valores al que llamamos
Dominio de un atributo. En otros trminos, Dominio de un atributo es el conjunto de
direccin
Ciudad Parroquia Calle Barrio
Nombre Nmero Nro.Dep.
Automvil
Color
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 23 de 127
posibles valores que puede tomar un atributo. Por ejemplo, el rango de edad de los
empleados de una empresa es de 25 a 50 aos; el estado civil de los empelados.

2.3.3 RELACIN:

2.3.3.1 CONCEPTO:

Una relacin es cualquier asociacin R que pueda establecerse entre entidades de la
misma clase o de clases diferentes.


Entidad Entidad
Personal Vehculo
Relacin
Conductor






Una relacin puede incluir muchas entidades; la cantidad de entidades en una relacin
es el grado de la relacin. Por ejemplos:











Relacin de grado 2 Relacin de grado 3

Personal Vehculo
Conductor
Vendedor
Pedido
Madre Padre
Hijo
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 24 de 127
Aunque el modelo E-R permite relaciones de cualquier grado, la mayora de las
aplicaciones del modelo slo consideran relaciones de grado 2 a las que se les llama
relaciones binarias. Ejemplos: Ros atraviesan Provincias, Empleados trabajan para
Departamentos, Autor escribe Documentos.

Relaciones unitarias (Recursivas): Se establece entre entidades de la misma clase. Por
ejemplo, Personas son hijos de Personas.

La relacin HABITACION-CON, podra definirse en la entidad ESTUDIANTE.



HABITACION-CON






SUPERVISOR




Relacin N-arias: La relacin se establece entre N clases de entidades, siendo N > 2.
Este tipo de relaciones tienen limitaciones, por lo que cada una de ellas suele ser
sustituida por un conjunto de relaciones binarias.

2.3.3.2 PROPIEDADES DE LAS RELACIONES:

- Los roles de una relacin: Son las funciones que desempean cada una de
las clases de entidades asociadas. En toda relacin existen dos roles
diferentes correspondientes a las entidades de cada una de las clases
relacionadas. Suponiendo que A representa la clase de entidad formada por
todos los profesores de un centro de estudios universitario, y B la formada
por todos los alumnos de dicho centro, entre las entidades de estas dos clases
podran establecerse varias relaciones caracterizadas por los siguientes roles:

- Dar clase a / Recibir clase de
- Es tutor de / Es dirigido por
- Es director de / es dirigido por

- Cardinalidad de una relacin: Expresa el nmero de entidades de una clase
que pueden asociarse a una entidad de la otra clase. En funcin de esta
propiedad, se distinguen tres tipos de relaciones:



Estudiante
1:N
Empleado
1:N
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 25 de 127



1 1


N
1



Cada persona maneja un vehculo, cada Una persona maneja varios vehculos, un
vehculo es manejado por una persona vehculo es manejado por una sola persona
(A) Relacin 1:1 (B) Relacin 1:N




N N


N
1



Un vehculo puede ser manejado por algunas Una persona puede manejar un nmero de
personas. Una persona maneja un vehculo vehculos, un vehculo puede ser manejado
solamente. por algunas personas.
(C) Relacin N:1 (D) Relacin N:M

Ejemplos:




(a) Auto - Asignacin




(b) Dormitorio - Ocupante

- Un Ro y su desembocadura
- Las manzanas y las parcelas catastrales
- Los empleados y su departamento
- Un departamento y su jefe
- Un empleado y sus cargas familiares

P1 P2 P3
v1 v2 v3
Persona
Vehculo
conductor
P1 P2 P3
v1 v2 v3 v4 v5
v5
Persona
Vehculo
Empleado Auto 1:1
Dormitorio
Estudiante
1:N
P1 P2 P3 P4 P5

v1 v2 v3
Persona
Vehculo
conductor
P1 P2 P3 P4
v1 v2 v3 v4 v5
v5
Persona
Vehculo
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 26 de 127
El nmero dentro del rombo en la relacin, detalla la cantidad mxima de
entidades que pueden ocurrir en un lado de ella. En ocasiones, tales limitaciones
se denominan la cardinalidad mxima de la relacin. En el ejemplo anterior (b)
la relacin tiene una cardinalidad mxima de 1:N. Es posible que la cardinalidad
mxima sea distinta de 1 y N, por ejemplo en el caso de la relacin EQUIPO DE
BASQUETBOL y JUGADOR, puede tener una cardinalidad mxima de 5.

Ejemplos de Cardinalidad (obtenido mediante el software Power Designer)

A) Relacin 1 : 1





Modelo de Datos Conceptual (CDM)





Modelo de Datos Fsico (FDM)

Relacin 1 : N




CDM




PDM

Relacin N: 1





CDM




PDM
CODIGO = CODIGO PLACA = PLACA
VEHICULO
PLACA <pk> C(6)
CODIGO <fk> C(5)
MARCA C(10)
MODELO C(10)
PERSONA
CODIGO <pk> C(5)
PLACA <fk> C(6)
NOMBRE C(15)
APELLIDO C(15)
CONDUCTOR
VEHICULO
PLACA
MARCA
MODELO
PERSONA
CODIGO
NOMBRE
APELLIDO
CONDUCTOR
VEHICULO
PLACA
MARCA
MODELO
PERSONA
CODIGO
NOMBRE
APELLIDO
PLACA = PLACA
VEHICULO
PLACA <pk> C(6)
MARCA C(10)
MODELO C(10)
PERSONA
CODIGO <pk> C(5)
PLACA <fk> C(6)
NOMBRE C(15)
APELLIDO C(15)
CONDUCTOR
VEHICULO
PLACA
MARCA
MODELO
PERSONA
CODIGO
NOMBRE
APELLIDO
CODIGO = CODIGO
VEHICULO
PLACA <pk> C(6)
CODIGO <fk> C(5)
MARCA C(10)
MODELO C(10)
PERSONA
CODIGO <pk> C(5)
NOMBRE C(15)
APELLIDO C(15)
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 27 de 127

Relacin N : M





CDM










PDM

- Participacin de un conjunto de entidades: Especifica si todas las
entidades de una clase participan o no en la relacin establecida con otra(s)
clase(s) de entidad(es), es decir, indica si todas las entidades de una clase se
relacionan necesariamente con entidades de otra clase asociada.

Una participacin es total, si cada entidad en E (conjunto de entidades)
participa en al menos una relacin en R (Conjunto de relaciones).

La participacin es parcial, si slo alguna entidad en E participa en
relaciones en R.

Ejemplo:

Empleado Jefes Departamento










Participacin parcial de Empleado y participacin total de Departamento.

CONDUCTOR
VEHICULO
PLACA
MARCA
MODELO
PERSONA
CODIGO
NOMBRE
APELLIDO
PLACA = PLACA CODIGO = CODIGO
VEHICULO
PLACA <pk> C(6)
MARCA C(10)
MODELO C(10)
PERSONA
CODIGO <pk> C(5)
NOMBRE C(15)
APELLIDO C(15)
CONDUCTO
CODIGO <pk,fk> C(5)
PLACA <pk,fk> C(6)
e1 *
e2 *
e3 *
e4 *
e5 *
e6 *
*
*

R1
R2
R3

D1

D2

D3
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 28 de 127
- Dependencia de existencia: Si la existencia de la entidad x depende de la
existencia de la entidad y, entonces se dice que x es dependiente por
existencia de y. Operativamente eso significa que si se suprime y, tambin se
suprime x. La entidad y se dice que es una entidad dominante y x una
entidad subordinada.

Como ejemplo, considrese el conjunto de entidades cuenta y el conjunto de
entidades Transaccin, que mantiene informacin de todas las transacciones
hechas por cada una de las cuentas. El conjunto de entidades transaccin se
describe mediante los atributos numero-transaccin, fecha-transaccin, e
importe-transaccin. Se forma un conjunto de relaciones cuentatransaccin
(bitcora) entre estos dos conjuntos de entidades, que es uno a varios, desde
cuenta a transaccin. Cada entidad transaccin debe estar asociada con una
entidad cuenta. Si la entidad cuenta se borra, todas sus entidades
transaccin asociadas se deben borrar tambin. En cambio, las entidades
transaccin se pueden borrar de la Base de Datos sin afectar a ninguna
cuenta. En este caso la entidad cuenta es dominante y la entidad transaccin
es subordinada.

Ejemplo:
y x








2.4 CLAVES

En el modelo Entidad Relacin, los atributos pueden ser o no Claves, segn permitan
o no la identificacin unvoca de las entidades de una clase o de las ocurrencias de una
relacin. A continuacin se exponen los conceptos relacionados con este tema:

Superclave: conjunto de uno o ms atributos cuyos valores identifican
unvocamente cada entidad de la clase u ocurrencia de la relacin.

Clave candidata: conjunto de uno a ms atributos cuyos valores identifican
unvocamente cada entidad de la clase, sin que ningn subconjunto de ellos
pueda realizar esta misma funcin. Una clave candidata es una superclave
mnima. Una clase de entidad o relacin puede tener varias claves candidatas.

Clave primaria: Clave candidata de una clase de entidad o relacin que se elige
como identificador unvoco de sus entidades u ocurrencias.



Cuenta Transaccin
Bitacora
Edificio Departamento
Edi_num
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 29 de 127
2.5 DIAGRAMA ENTIDAD - RELACIN (E-R)

En un diagrama E-R las clases de entidades se muestran con rectngulos; las relaciones
mediante rombos, y la cardinalidad de la relacin aparece dentro del rombo. El nombre
de la relacin se muestra cerca del rombo.

Frecuentemente el nombre de la relacin se coloca dentro o sobre el rombo, y para estos
casos la cardinalidad de la relacin se detalla colocando patas de gallo en la lnea que
conecta a las entidades en el lado muchos de la relacin.







Para expresar la cardinalidad mnima, podemos ilustrar colocando una lnea
perpendicular a la lnea de la relacin, para as indicar que una entidad debe existir en la
relacin, y colocar un valo perpendicular a la lnea de la relacin, sealando que puede
haber, o no, una entidad en la relacin. En el siguiente ejemplo se tiene que: un
DORMITORIO debe tener una relacin con un ESTUDIANTE al menos, pero que no
se requiere que un ESTUDIANTE, tenga una relacin con un DORMITORIO.

En este caso, DORMITORIO posee una cardinalidad mnima de 1 y una cardinalidad
mxima de mltiples entidades ESTUDIANTE. Un ESTUDIANTE tiene una
cardinalidad mnima de cero y una cardinalidad mxima de una entidad
DORMITORIO.





Dormitorio Ocupante

En algunas versiones de los diagramas ER los atributos se representan con elipses que
se conectan con la entidad o la relacin a la que pertenece. La identificacin de los
atributos que forman la clave primaria en un diagrama Entidad Relacin puede
representarse, subrayando el nombre del atributo.

Elipses dobles que representan atributos multivalor, elipses discontinuas que denotan
atributos derivados, lneas dobles que indican participacin total de una entidad en un
conjunto de relaciones.






Dormitorio
Estudiante
Dormitorio
- Ocupante
Dormitorio
Estudiante
1:N
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 30 de 127

Ejemplo:














Entidades fuertes y dbiles: Una entidad fuerte es aquella entidad con identificador
interno y una entidad dbil es aquella con identificador externo o mixto. En otras
palabras un conjunto de entidades que tiene una clave primaria se denomina conjunto de
entidades fuertes, y se llama conjunto de entidades dbiles aquellas que pueden no tener
suficientes atributos para formar una clave primaria.

Los conceptos de entidades dbil y fuerte, estn relacionados con el concepto de
dependencia de existencia. Un miembro de un conjunto de entidades fuerte es por
definicin una entidad dominante, mientras que un miembro de un conjunto de
entidades dbiles es una entidad subordinada. La entidad dbil se puede representar con
un rectngulo de doble contorno.

2.6 REDUCCIN DE LOS DIAGRAMAS E-R A TABLAS

Una base de datos que se ajusta a un diagrama E-R puede representarse por medio de
una coleccin de tablas. Para cada conjunto de entidades, y para cada conjunto de
relaciones en la base de datos, existe una tabla nica a la que se asigna el nombre del
conjunto de entidades o del conjunto de relaciones correspondiente. Cada tabla tiene un
nmero de columnas que, a su vez, tienen nombres nicos.

En esta etapa transformaremos el esquema conceptual (MER) a un esquema relacional.
Este esquema sigue siendo independiente del SGBD que se utilizar en las siguientes
etapas del desarrollo de software.

El paso del esquema Entidad / Relacin se basa en los siguientes principios:

- Todo tipo de entidad se convierte en una tabla.

- Todo tipo de relacin N:M se transforma en una tabla.

- Todo tipo de relacin 1:N se traduce en el fenmeno de propagacin de la
clave o bien se crea una nueva relacin.
Dormitorio Estudiante
1:N
Ubicacin
Nom-Dormi
Cantidad de
Habitaciones
Renta
Numero de
estudiantes
Nombre de
estudiante
Ao del
estudiante
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 31 de 127
2.6.1 REGLAS DE TRANSFORMACIN:

2.6.1.1 RELACIN N:M

Un tipo de relacin de N:M se transforma en una relacin que tendr como clave
primaria la concatenacin de los identificadores de cada entidad que asocia. Cada uno
de los atributos que forman la llave primaria de una tabla derivada de una relacin N:M,
son llave forneas respecto de cada una de las tablas de las entidades que se relacionan.

N N


AUTOR(cod-autor, Nombre, apellido)
LIBRO(cod-libro, ttulo)
ESCRIBE (cod-autor, cod-libro)

La tabla ESCRIBE est formada por las columnas cod-autor que es llave fornea que
referencia a la tabla AUTOR, cod-libro llave fornea que referencia a la tabla LIBRO.

2.6.1.2 RELACIN 1:N

Como se indic anteriormente todo tipo de relacin 1:N se traduce en el fenmeno de
propagacin de la clave.

Existen casos en que es necesario transformarla en una tabla, como si se tratara de una
relacin N:M, siendo conveniente en los siguientes casos:

- El nmero de ocurrencias de la entidad que propaga la clave es muy
pequeo, evitando los valores nulos.

Empleado Departamento
NOMBRE APELLIDO ND
Juan Torre 1
Pedro Calle 1
----- ------- Null
----- ------ Null
----- ------ Null
----- ------ Null
Pablo Perez 2
Luis Polo 3

Para evitar los valores nulos en la tabla EMPLEADO, se recomienda crear una
nueva tabla de la relacin.

- Cuando se prev que en el futuro dicha relacin se convierta en una N:M
- Cuando la relacin tiene atributos propios.



DNO NOMBRE
1 Tcnico
2 Cmputo
3 Produccin
Escribe
Libro Autor
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 32 de 127
2.6.1.3 RELACIN 1:1

Son casos en donde se puede crear una tabla o bien propagar la clave. Esto ltimo
puede ser en ambas direcciones

Si ambas entidades tienen una participacin parcial en la relacin, es recomendable
crear una nueva tabla de la relacin, para evitar valores nulos.


1 1


HOMBRE (cod-hombre, )
MUJER (cod-mujer, )
MATRIMONIO (cod-hombre, cod-mujer)

Para el caso en que una de las entidades tenga una participacin total y la otra parcial,
conviene propagar la clave de la entidad con participacin parcial.

1 1


EMPLEADO (cod-empleado, nombre, ..)
DEPARTAMENTO (dno, cod-empleado, nombre, )

Si la participacin es total para las dos entidades, se puede propagar la clave en
cualquiera de las dos direcciones.

2.6.1.4 ATRIBUTOS DE UNA RELACIN.

Es conveniente que aquellas relaciones que contiene atributos propios se transformen en
una tabla, en donde aquellos atributos pasan a se columnas de dicha tabla.

2.6.2 EJEMPLO DE REDUCCIN





N N 1 N








Cliente
CtaCli
Cuenta Transaccin
Nom_cli
CI Calle
Ciudad
Fecha
Num_Cta
Saldo
Num_tran
Cantidad
Fecha
Matrimonio
Bitcora
Mujer Hombre
Cliente
Empleado Departamento
Jefe
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 33 de 127

Num-Cta Saldo
259 1000
630 2000
401 5000
700 500
199 1300
467 900
115 1200
183 1300
118 2000
225 2500
210 2200
Tabla Cuenta

Num-Cta Num_tran Fecha Cantidad
259 5 11-ago-97 50
630 11 17-ago-97 70
401 22 23-ago-97 -300
700 69 28-ago-97 -500
199 103 3-sep-97 900
259 6 7-sep-97 -44
259 53 7-sep-97 120
259 104 13-sep-97 -200
259 7 17-sep-97 -79
Tabla Transaccin

Nom-Cli CI Calle Ciudad
Pablo 654-32 Bolvar Cuenca
Antonio 890-12 Sucre Cuenca
Alberto 456-78 Boyac Guayaquil
Manuel 369-12 9 octubre Guayaquil
Pedro 246-80 Talbot Quito
Juan 121-21 Amazonas Quito
Andrs 135-79 Borrero Cuenca
Tabla Clientes

CI Num-Cta Fecha
654-32 259 17/jun/1990
654-32 630 17/may/1990
890-12 401 23/may/1990
456-78 700 28/may/1990
369-12 199 13/jun/1990
246-80 467 7/jun/1990
146-80 115 7/jun/1990
121-21 183 13/jun/1990
135-79 118 17/jun/1990
135-79 225 19/jun/1990
135-79 210 27/jun/1990
Tabla CtaCli

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 34 de 127
2.7 AGREGACIN

Los conceptos analizados en los numerales anteriores, son los conceptos bsicos el
modelo E R con los que se puede modelar la mayora de las caractersticas de las
bases de datos. Sin embargo existen ciertos aspectos de una base de datos que sern
expresados de mejor manera, mediante extensiones del modelo E R, como es el caso
de la agregacin.

En el modelo E R no es posible expresar relaciones entre relaciones, para modelar una
situacin como sta se usa la agregacin, que es una abstraccin a travs de la cual las
relaciones se tratan como entidades de nivel ms alto.

Ejemplo:

Consideremos las entidades cliente y cuenta, cada cliente puede tener una o varias
cuentas, y de igual manera una cuenta corriente puede pertenecer a varios clientes; la
relacin entre estas dos entidades la denominamos impositor. Si al par cliente - cuenta
le asignamos privilegios (solicitar sobregiro, cerrar cuenta, etc), que estn definidos en
la entidad privilegios, estaramos en el caso de modelar una relacin entre relacin.
Como el modelo no admite esta expresin, necesitamos crear una agregacin,
generando una entidad de nivel ms alto formada por la relacin prestatario y las
entidades cliente y cuenta. Esta entidad de nivel ms alto se trata de la misma forma que
cualquier otro conjunto de entidades.







El modelo entidad - relacin no admite relaciones entre relaciones, razn por la cual no
es posible generar el diagrama anterior, relacionando impositor con privilegio.

A continuacin se muestra el diagrama E R con el uso de agregacin.



Cliente
Cuenta
Nombre Direccin CI
Num_cue Importe
Impositor
Privilegio
codigo Descripci
n
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 35 de 127































Cliente
Cuenta
Nombre Direccin CI
Num_cue Importe
Impositor
Privilegio
codigo Descripci
n
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 36 de 127
2.7 EJEMPLOS DE MODELO E-R


2.7.1 Se requiere llevar un control de las calificaciones de los exmenes de los
estudiantes en cada una de las materias. A lo largo del curso se realizarn dos
aportes y el examen final. Los datos que se registrarn para los alumnos sern su
nombre, apellido, nmero de cdula, fecha de ingreso, edad y para el caso de las
materias su nombre y nmero de crditos.









N



N







De este modelo aparecen las siguientes tablas:

ESTUDIANTE CI NOMBRE APELLIDO FECHA_ING N_MATRICULA
1101775849 Nelly Barrera 1-Oct-95 5630
1234567890 Mario Fajardo 5-Nov-98 7810
9876543210 Luis Arias 9-Sep-99 9315
1122334455 Francisco Cabrera 7-May-99 9148
..... ..... ..... ..... .....




MATERIA CODIGO NOMBRE N_CREDITOS
ISI515 Bases de Datos 5
ISI213 Lenguajes I 6
ISI 432 Estructura de Datos 3
ISI 313 Lenguaje II 6
ISI 712 Sistemas Expertos 4
..... ..... .....



Estudiante
Nombre
N-Matricula
Fecha_ingreso
Edad
CI
Apellido
Calificacin
Materia
Cdigo N_crditos
Nombre
Final
Aporte-1
Aporte-2
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 37 de 127
CALIFICACION CI CODIGO APORTE-1 APORTE-2 FINAL
1101775849 ISI515 8 6 7
1234567890 ISI515 9 7 7
9876543210 ISI712 7 4 8
1122334455 ISI213 6 9 6
1101775849 ISI432 6 8 7
1101775849 ISI712 5 6 9
1234567890 ISI313 9 8 8
..... ..... ..... ..... .....


Analizando los atributos de las dos clases de entidades, se podran establecer las claves
correspondientes.


ESTUDIANTE
Superclaves:
CI, Edad
N_Matrcula, CI
N_Matrcula, Fecha_Ing. Edad
Claves Candidatas:
CI
N_Matrcula
Clave Primaria:
CI


Se considera que el Nmero de Matrcula es un valor nico para cada estudiante, por lo
que permite identificar de forma unvoca a cada estudiante. Este atributo tambin
podra haberse escogido como clave primaria en vez de la CI. La eleccin de uno u otro
es indiferente en este caso.


MATERIA
Superclaves:
Cdigo, Nombre
Cdigo, Creditos
Claves Candidatas:
Cdigo
Nombre
Clave Primaria:
Cdigo


La clave primaria de una relacin se forma por unin de las claves primarias de las
clases de entidades que interviene en dicha relacin. Teniendo en cuanta este principio,
las claves correspondientes a la relacin Calificacin seran las siguientes:
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 38 de 127


CALIFICACION
Superclaves:
CI, Cdigo, Aporte_1
CI, Cdigo, Aporte_2
CI, Cdigo, Final
Claves Candidatas:
CI, Cdigo
Clave Primaria:
CI, Cdigo





































Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 39 de 127
2.7.2 Suponemos un modelo formado por las siguientes clases de entidades, atributos
y relaciones.

- Universidades: Se caracterizan por su Nombre, Tipo (privada, estatal,
etc), Nro. de carreras universitarias.

- Departamentos: Cada universidad tiene una serie de departamentos
caracterizados por su Nombre, Especialidad, Lneas de investigacin.

- Profesores: Los profesores pertenecen a un departamento especfico, dan
clases a uno o varios cursos, y se caracterizan por su Nombre y Apellido,
CI, Ttulo(s) universitarios, Especialidad, Asignaturas que imparte.

- Alumnos: Los alumnos de cada universidad pertenecen a un solo
departamento, pueden estar matriculados en uno o varios cursos, y se
caracterizan por su Nombre y Apellido, Nro de matrcula, Cdigo, Edad,
Expediente Acadmico.

- Cursos: Cada curso de una universidad es dirigido y administrado por un
solo departamento, est formado por un nmero indeterminado de
alumnos, y pueden dar clase en l uno o varios profesores del
departamento al que pertenecen. Se caracteriza por su identificador, Nro
de alumno, Ubicacin.






1


N

1 1

N 1 N

N
N

N N N








Universidad
Nombre
Tipo
Se compone de
Departamento
Nombre
Especialida
d
Se compone
de
Curso
Nro_Alumnos
Id_curso
Alumno
Nombre
Codigo
Fe_Na
Estn
matriculados
Asiste a
Profesor
Da clases a
Pertenece a
Nombre
CI
Ttulos
Apellido
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 40 de 127
2.7.3 Ejemplo de un modelo Entidad Relacin para una Compaa, en la que los
empleados trabajan en diferentes departamentos y en diferentes proyectos. Estos
proyectos son controlados por un departamento. Un empleado es jefe de un
departamento y un departamento tiene varias localizaciones.

Del listado de empleados existen supervisores, quines son los encargados de
supervisar a un determinado nmero de empleados. En el modelo se especifica
tambin las cargas familiares de los empleados. (Ref: Fundamentals of
DataBase Systems. Elmasri/Navathe)








1
N


1 1
1 N
1

N
N
N

1


N

















Empleado
Departamento
Proyecto
Carga_f
Trabaja
para
Supervisor
Dependen de
Trabaja _en
Jefe
CI
Salario
Sexo
Apellido
Nombre
Fecha_N
Direccin
Fecha_i
Horas
Nombre Numero
Localizacin
Sexo
Fe_Na
Relacin
Nombre
Controla
Nombre
Nmero
Locales
Num_Emp
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 41 de 127


Reduccin del modelo E - R de la Compaa a tablas

EMPLEADO
NOMBRE APELLIDO CI FECHA_N DIRECCIN SEXO SALARIO SUPERCI DNO
Juan Polo 123456789 3-mar-59 Sucre 7-12 M 3000 333445555 5
Humberto Pons 333445555 25-dic-60 Bolvar 5-67 M 4000 888665555 5
Irma Vega 999887777 13-nov-50 P. Crdova 3-45 F 2500 987654321 4
Elena Tapia 987654321 3-may-61 Ordez 7-29 F 4300 888665555 4
Pablo Castro 666884444 15-sep-55 Bolvar 1-50 M 3800 333445555 5
Marcia Mora 453453453 29-mar-60 Colombia 4-23 F 2500 333445555 5
Manuel Bonilla 987987987 16-jul-58 B. Malo 1-10 M 2500 987654321 4
Jaime Prez 888665555 5-abr-57 Sangurima 8-34 M 5500 null 1


DEPARTAMENTO DNOMBRE DNUMERO JEFECI JEFE_FI
Investigacin 5 333445555 12-may-80
Administrativo 4 987654321 05-dic-82
Compras 1 888665555 06-jun-78


LOCALIZACION DNUMERO DEP_LOCA
1 Cuenca
4 Guayaquil
5 Quito
5 Manta
5 Cuenca


TRABAJA_ EN 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


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 42 de 127


PROYECTO PNOMBRE PNUMERO PLOCAL DNUM
ProductoX 1 Quito 5
ProductoY 2 Manta 5
ProductoZ 3 Cuenca 5
Computadora 10 Guayaquil 4
Reorganizar 20 Cuenca 1
Beneficios 30 Guayaquil 4

CARGA_F ECI DEP_NOM SEXO FECHAN_N RELACION
333445555 Mara F 2/02/86 Hija
333445555 Teodoro M 10/10/90 Hijo
333445555 Ana F 15/09/65 Cnyuge
987654321 Alberto M 6/07/67 Cnyuge
123456789 Miguel M 5/11/84 Hijo
123456789 Mara F 9/01/87 Hija

123456789 Elizabeth F 12/12/60 Cnyuge


2.8 EJERCICIOS DE MODELO E-R


2.8.1 Estudio de caso: Compaa

La Compaa mediante un sistema de informacin, requiere llevar el control de los
empleados, departamentos y proyectos, para lo cual es necesario disear la base de
datos que almacenar los datos que son requeridos por la empresa.

La compaa est organizada en departamentos. Cada departamento tiene un nombre
nico, un nmero nico, y un empleado en particular que es el jefe del departamento. Se
llevar el registro de la fecha en la que el empleado fue designado como jefe del
departamento. Un departamento puede estar ubicado en varias localidades.

En cuanto a los proyectos, cada uno tiene un nmero nico y un nombre nico, y se
ejecuta en un solo lugar. Cada departamento controla un cierto nmero de proyectos. No
necesariamente todos los departamentos controlan proyectos.

Los datos que se registrarn para los empleados son los siguientes: nombre, apellido,
cdula, fecha de nacimiento, direccin, sexo y salario. Los empleados trabajan en un
departamento en particular, pero pueden trabajar en varios proyectos, los que no estn
necesariamente controlados por su mismo departamento. Para cada empleado se
registrar adems el nmero de horas semanales que trabaja en cada proyecto. Tambin
llevaremos el registro del supervisor directo de cada empleado.

De los empleados se tiene que registrar los datos de sus dependientes (cargas
familiares), se almacenar el nombre de cada persona dependiente, su sexo, fecha de
nacimiento, y su parentesco con el empleado.
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 43 de 127

(Referencia: Elmasri/Navathe , Fundamentals of Database Systems)


2.8.2 Estudio de caso: Distribuidora

Elabora un modelo entidad relacin para el procesamiento de pedidos de una pequea
empresa de distribucin que lo denominaremos como Distribuidora.

La Distribuidora cuenta con n oficinas de venta que estn ubicadas en las n ciudades
ms importantes del pas (una oficina por ciudad). Cada oficina tiene asignado un
director, que es un vendedor de la Distribuidora. Cada oficina tiene un objetivo de
ventas y se debe registrar adems el valor vendido por cada una. A ms de la ciudad
donde est ubicada la oficina se tendr que llevar el registro de la regin.

Los clientes son empresas que adquieren los productos en la distribuidora, cada cliente
tiene asignado un nmero nico, un vendedor como representante y un lmite mximo
de crdito.

La Distribuidora cuenta con vendedores, debiendo registrarse para cada uno de ellos la
fecha en la que fueron contratados, la edad, titulo, nombre, las ventas que tiene que
alcanzar (cuota) y el monto de ventas que ha realizado. Los vendedores trabajan en una
nica oficina.

Los productos disponibles para la venta cuentan con su nmero de producto y el
fabricante que lo elabor, Un producto siempre tendr el mismo nmero, pero ser
diferenciado por el fabricante que lo construy. Por ejemplo: El producto Platina de
1/2 tiene el nmero 123, pero puede ser construido por diferentes fabricantes A, B, C,
etc. No se necesita llevar informacin de los fabricantes.

En los pedidos, que son tomados por los vendedores y solicitados por los clientes, se
registrar el producto solicitado, la cantidad, el importe del pedido y la fecha. Por
simplicidad, suponemos que cada pedido se refiere a un solo producto.

Un vendedor puede ser controlador de otros vendedores.

(Referencia: Groff / Weinberg, Guia de SQL)

2.8.3 Estudio de caso: Ferretera

Elaborar un modelo entidad - relacin para el manejo de la informacin de los proceso
de facturacin de una ferretera.

La informacin a ser registrada en la base de datos corresponde a la siguiente:

Para los artculos, se debe registrar su cdigo, descripcin, precio, unidad, stock,
existencia mxima y mnima.

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 44 de 127
Almacenamos los siguientes datos para los vendedores: cdigo, nombre, apellido,
telfono, fecha en la que fueron contratados y el objetivo de ventas.

La informacin que se manejar de los clientes de la ferretera ser: Nombre, cdula de
ciudadana o ruc, direccin, telfono o telfonos, y su lmite de crdito asignado.

En la factura que va a ser pedida por un cliente y elaborada por un vendedor, deber
registrarse: su nmero, fecha, las cantidades de artculos vendidos, los subtotales por
cada artculo vendido, el porcentaje del iva y su valor calculado, el porcentaje de
descuento y su valor calculado, y el total.

Cada cliente tiene asignado un vendedor como representante, esto no significa que
nicamente sea el vendedor asignado quien elabore la facturacin a su cliente.

2.8.4 Estudio de caso: Banco

Se desea informatizar un banco para el manejo de los estados de cuentas de los clientes,
con los siguientes supuestos:

El banco tiene distintas sucursales que se identifican por su cdigo.

Cada sucursal tiene una serie de cuentas corrientes asignadas a ella, que se identifican
por un cdigo distinto para cada cuenta

Una cuenta corriente pertenece a uno o varios clientes. Es posible, sin embargo, que las
operaciones que puede realizar cada uno de estos clientes con la cuenta no sean las
mismas.

Por ejemplo, si la cuenta 110245 pertenece al cliente Pablo Prez y Paula Surez es
posible que el privilegio de cerrar la cuenta slo lo tenga Pablo Prez y no Paula.

Por otra parte, cada cliente, que se identifica con su cdula, puede tener varias cuentas,
y por su puesto, unos privilegios distintos en cada una de ellas.

De entre los empleados del Banco, existen los denominados con el cargo de Oficiales
de Cuenta quienes son asignados a cada una de las cuentas de los clientes. Los
empleados del banco son fijos para cada sucursal

El banco maneja adems cuantas de Ahorro, una cuenta de ahorros pertenecer a un
solo cliente.

Un cliente puede tener varias cuentas corrientes, pero una sola de ahorro.

Los clientes pueden tener otorgados prstamos. Para que un cliente tenga un prstamo
necesariamente debe tener una cuenta corriente. Cada prstamo se otorga a nombre de
uno o varios clientes, y a un cliente se le puede otorgan un solo prstamo.


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 45 de 127
2.8.5 Estudio de caso: Hoteles

Se requiere realizar un sistema computarizado para el manejo de la informacin de los
diferentes hoteles, hostales y hosteras (en lo que va del documento se denominar
nicamente hoteles) que operan en la provincia del Azuay.

Como parte de la informacin que debe almacenarse en la base de datos se puede
considerar:

Para los hoteles: su nombre, ubicacin, direccin, telfonos, nombre de su
administrador o representante legal, categora, nmero de habitaciones por tipo, nmero
de empleados.

Para cada una de las habitaciones del hotel, a ms del tipo se incluir su tamao y los
servicios que tiene, como por ejemplo: bao, nmero de camas, telfono, TV, etc.

Con relacin a los restaurantes que tiene cada hotel, se llevar informacin del nombre
del restaurante, su capacidad y horas de atencin.

Existen ciertos hoteles que cuentan con salas de eventos por lo que es necesario llevar
informacin de la superficie y su capacidad segn su tipo de uso que entre otras puede
ser para: banquetes, cctel, teatro, montajes en U, etc.

Se detallar adicionalmente que tipo de actividades tursticas ofrece cada hotel, la hora y
fecha que se realizan durante la semana.

Adicionalmente incluir si el hotel cuenta con piscinas, gimnasios, bares, etc.

Manejar las reservaciones de habitaciones de los hoteles y de la sala de eventos que
podrn ser realizadas por el cliente.

2.8.6 Estudio de caso: Eliminatorias de ftbol

Elaborar el modelo entidad - relacin y las tablas para el manejo de la informacin del
desarrollo de las eliminatorias sudamericanas del campeonato mundial de ftbol.

Para cada equipo de ftbol (Pas), se requiere saber: el nombre de los jugadores, el
nombre del entrenador, los colores de su uniforme (camiseta, pantaloneta y medias)
tanto el uniforme principal como del alterno (un color por cada prenda), es necesario
contar con una entidad Color.

De cada jugador es necesario registrar: su fecha de nacimiento, edad, ciudad donde
naci y su ubicacin como jugador en el campo de juego (arquero, defensa, medio
campo o delantero). y su ubicacin en el partido.

Se registrar las tarjetas amarillas y rojas del jugador, el minuto y el partido.

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 46 de 127
Se supone que el equipo paro todos los partido siempre contar con los mismos 16
jugadores.

Adicionalmente se tiene que registrar los goles anotados por cada equipo, con la
siguiente informacin: nombre del jugador que marco, fecha del partido, a qu minuto
se marco, y el nombre del equipo contrario.

Del entrenador se requiere registrar: su nombre, edad y nacionalidad.

2.8.7 Estudio de caso: Librera

Elaborar un modelo entidad relacin y las tablas, para el manejo de le informacin y
procesos de una librera. Se tendr que manejar informacin propia del libro como: la
fecha, el ttulo, la edicin, los idiomas a los que est traducido, quien realiz la
traduccin, el o los autores del libro. Para los autores se tendr que registrar el nombre y
nacionalidad. Para la editorial del libro, se registrar el nombre, su direccin y el URL.
Un mismo libro puede ser editado por varias editoriales.

La librera cuenta con varios almacenes de los cuales se tiene que manejar informacin
de su direccin, telfono los libros almacenados y el nmero de ejemplares de cada uno.

La librera tiene que manejar para sus registros, las notas de venta que realizan a cada
cliente, en las que deber registrarse el nmero de la nota de venta, el nombre de los
libros, la cantidad de unidades vendidas, el precio del libro, el subtotal por libro y el
total de la nota de venta. No existir el IVA por tratarse de un producto que est exento
del mismo. Se registrar adems el nombre del almacn en donde se vendi y el nombre
del empleado que trabaja como vendedor. Los vendedores son asignados
exclusivamente a un solo almacn. La librera en el sistema computarizado de nmina
cuenta con la informacin de los empleados y sus cargos.

Se registrar la informacin de todos los clientes y sus recomendados si es que lo tiene

2.8.8 Estudio de caso: Secretaria

La secretara de la Universidad requiere llevar un registro de las notas de los aportes
(ms de uno), el examen final y examen supletorio de cada una de las materias que
sigue cada estudiante. Todos los aportes son presentados en grupo de 5 estudiantes en
dnde uno de ellos es el coordinador, adems la nota asignada por el profesor es al
grupo.

Se requiere adems saber, en que facultad y escuela son dictadas las materias, cul es su
profesor, a qu nivel corresponde y su nmero de crditos en cada escuela.

Las tablas deben ser estructuradas de tal manera que se posible obtener informacin de
los coordinadores, de los profesores, integrantes del grupo, numero de grupos por
materia, etc.


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 47 de 127

CAPITULO 3

EL MODELO RELACIONAL

No hay que confundir un diagrama de esquema con un diagrama entidad relacin.
En particular, los diagrama E R no muestran explcitamente los atributos llave
externa, mientras que los diagramas de esquema si.
1


El presente captulo est dividido en dos partes, la primera corresponde a la Estructura
de la Base de Datos Relacionales y la segunda a la dinmica del Modelo Relacional.

3.1 ESTRUCTURA DEL MODELO RELACIONAL.

3.1.1 CONCEPTO DEL MODELO RELACIONAL.

El modelo relacional representa los datos en una base de datos como una coleccin de
relaciones. Cada relacin se asemeja a una tabla, en donde; cada fila de la tabla
representa una coleccin de datos conexos o afines. Los nombres de la tabla y de la
columna son usados para ayudar en la interpretacin del significado de los valores de
cada fila de la tabla.

La relacin es el elemento bsico del Modelo Relacional y se representa por una tabla.

Informalmente, los trminos y su equivalente son:

Relacin Tabla
Tupla Fila
Atributo Columna
Nmero de tuplas Cardinalidad
Nmero de atributos Grado
Dominio Coleccin de valores, de los cuales uno o ms atributos obtienen
sus valores reales
Clave primaria Identificador nico para la tabla, es decir, una columna o
combinacin de columnas con la propiedad de que nunca existen
2 filas de la tabla con el mismo valor en esa columna o
combinacin de columnas.

Es importante indicar que la tabla es plana en el sentido de que el cruce de un fila y una
columna slo puede dar un valor.






1
Silberschatz Korth - Sudarshan, Fundamentos de Bases de Datos, cuarta edicin, 2002
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 48 de 127
3.1.2 DOMINIO y ATRIBUTO.

- Dominio.

Se entiende por dominio D al conjunto finito de valores homogneos y atmicos
V1, V2, .... Vn, caracterizados por un nombre. Homogneo significa que los
valores son todos del mismo tipo y atmicos significa que son indivisibles, es
decir, si se descompone se perdera la semntica del dominio.

Ejemplos:

- Dominio de Nacionalidades: Ecuatoriana, Peruana, Colombiana, etc.

- Dominio Edad_Empleado: Posible edad de los empleados de una compaa;
un valor entre 18 y 50 aos.

- Dominio telfono: La coleccin de siete nmeros telefnicos de una
provincia en particular.

Todo dominio tiene un nombre y un tipo de dato, en el primer ejemplo, el tipo de
datos es un conjunto de caracteres de longitud mxima de 20.

Un tipo de datos o un formato son tambin especificados por cada dominio. Por
ejemplo, el nmero telefnico podemos especificar como (d)ddd-ddd, donde d es
un nmero entero y el primer dgito representa un cdigo para una provincia
determinada.

Se considera que los dominios no incluyen nulos, ya que nulo (null) no es un
valor.

La importancia de los dominios es que restringen las comparaciones, es decir,
slo se puede comparar atributos definidos sobre el mismo dominio.

Dominio compuesto: Es una combinacin de dominios simples que tiene un
nombre y sobre l se puede aplicar ciertas restricciones de integridad. Por
ejemplo: un usuario podra manejar adems de los tres dominios Da, Mes, Ao,
un dominio compuesto llamado Fecha que sera la combinacin de los tres, al
que podramos aplicar restricciones de integridad a fin de que no aparezcan
valores no vlidos para la fecha.

Todos los atributos compuestos como los dominios compuestos pueden ser
tratados como piezas nicas de informacin, es decir, como valores atmicos.

- Atributo.

Un atributo A es el papel que tiene un determinado dominio D en una relacin.
Se dice que D es el domino de A y se denota dom(A).

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 49 de 127
El modelo relacional admite slo atributos simples, monovalentes.

Los atributos compuestos se pueden transformar segn las siguientes dos
alternativas:

1. Eliminar el atributo compuesto considerando todos sus componentes como
un atributo individual, o;

2. Eliminar los componentes individuales y considerar el atributo compuesto
entero como un solo atributo.



Ejemplo:


Nombre
Calle
Nmero
Ciudad


Para la primera alternativa de transformacin el esquema relacional sera:

Persona (CI, Nombre, Calle, Nmero, Ciudad)

Para la segunda:.

Persona (CI, Direccin)

La transformacin de atributos polivalentes o multivalor requieren la
introduccin de relaciones nuevas; cada atributo polivalente distinto requiere una
relacin en la cual pueda estar representado como atributo monovalente. La
nueva relacin contiene el atributo polivalente ms el identificador de la entidad
original; el identificador de la nueva relacin es el conjunto de todos sus
atributos.

Ejemplo:



Nombre
Calle
Nmero
(1,n) Ciudad




PERSONA

CI
Direccin

PERSONA

CI
Direccin
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 50 de 127
Esquema relacional:

Persona (CI, Nombre)

Direccin (CI, Calle, Nmero, Ciudad) con CI como clave fornea que
referencia a Persona.

3.1.3 RELACIN

Una relacin R sobre un conjunto de dominios D1, D2, ... Dn, (no necesariamente
distintos), se compone de dos partes: una cabecera y un cuerpo.

La Cabecera est formada por un conjunto de atributos o, en trminos ms precisos, de
pares de atributo-domino {(A1:D1), (A2:D2), .... ,(An:Dn)}, donde cada atributo Aj
corresponde a uno y slo uno de los dominios Dj.

El Cuerpo est formado por un conjunto de tuplas, que varan en el tiempo. Cada tupla
est formada por pares de atributo valor {(A1:vi1), (A2,vi2), .... (An:vin)}, (i = 1,2,...,
m), donde m es el nmero de tuplas del conjunto.

En una relacin se debe cumplir las siguientes restricciones:

- Las celdas de la tabla deben ser de valores nicos.

- Cada atributo slo puede tomar un nico valor del dominio, no se admiten
por lo tanto los grupos repetitivos ni arreglos como valores.

- Todos los ingresos en cualquier atributo deben ser del mismo tipo.

- Cada atributo posee un nombre nico.

- El orden de las columnas no es significativo.

- En una tabla no pueden ser idnticas dos tuplas.

- No es importante el orden de las tuplas.

3.1.4 CLAVES.

Los conceptos de claves que fueron analizadas en el Captulo 2, tambin son aplicables
en el modelo relacional.

- Clave Candidata:

Es un conjunto no vaco de columnas que identifican unvoca y mnimamente
cada tupla. Toda relacin siempre tendr una clave candidata.

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 51 de 127
- Clave Primaria:

Es aquella clave candidata que es elegida por el diseador de la base de datos
como elemento principal para identificar las tuplas de la relacin.

- Claves Altenativas:

Son aquellas claves candidatas que no han sido escogidas como claves
primarias.

- Clave Ajena o Fornea:

De una relacin R2 es un conjunto no vaco de atributos cuyos valores han de
coincidir con los valores de la clave primaria de una relacin R1. Debe tenerse
en cuenta que la clave ajena y la correspondiente clave primaria han de estar
definidas sobre el mismo dominio.


3.2 DINMICA DEL MODELO RELACIONAL

El componente dinmico del Modelo Relacional se divide en dos partes:

- lgebra relaciona y

- Clculo relacional.

El lgebra relacional se basa en un conjunto de operadores que operan sobre relaciones.

El clculo relacional se basa en predicados que definen un estado objetivo de la Base de
datos. Dentro de stos tenemos el clculo relacional orientado a tuplas y el clculo
relacional orientado a dominios.

3.2.1 ALGEBRA RELACIONAL

3.2.1.1 INTRODUCCIN.

El Algebra Relacional es una coleccin de operaciones que son usadas para manipular
relaciones. Estas operaciones seleccionan tuplas de relaciones individuales o combina
tuplas de varias relaciones, con el propsito de especificar una bsqueda o consulta en
la base de datos. El resultado de cada operacin es una nueva relacin, la misma que
puede ser tambin manipulada por las operaciones del lgebra relacional.

Las operaciones del lgebra relacional son divididas en dos grupos. El primer grupo
incluye las operaciones que son definidas de las matemticas: la UNION,
INTERSECCION, DIFERENCIA, y PRODUCTO CARTESIANO. El otro grupo
conforma las operaciones desarrolladas especficamente para el manejo de bases de
datos relacionales e incluye las operaciones SELECT, PROJECT y JOIN.
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 52 de 127

3.2.1.2 OPERACIN SELECT.

Es utilizada para seleccionar tuplas en una relacin. Estas tuplas deben satisfacer una
condicin de seleccin.

Operacin: Unaria
Formato: o<condicin de seleccin>(<nombre de la relacin>)
Donde: - o Denota la operacin SELECT

- <Condicin de seleccin> expresin booleana de la forma:
<nombre atributo><comparacin><valor constante>, o
<Nombre atributo><comparacin><nombre atributo>.

La comparacin normalmente tiene los operadores: {=,<, >,>,s,=}.
Condiciones: AND, OR, y NOT

- <nombre relacin> Nombre de la relacin.

Nota: Los ejemplos que se presentan en este captulo estn realizados sobre la base de la tablas del modelo E -
R para Compaas del Captulo 2.

Ejemplos.

- Seleccione los empleados que trabajan en el departamento 4
oDNO=4(EMPLEADO)

- Seleccionar los empleados con salario mayor a 2500
oSALARIO > 2500(EMPLEADO)

- Lista de empleados que trabajan en el departamento 4, con un salario mayor a 2500
o empleados que trabajan en el departamento 5 y ganan ms de 4000.
o(DNO=4 AND SALARIO > 2500) OR (DNO=5 AND SALARIO > 4000)(EMPLEADO)

3.2.1.3 OPERACIN PROJECT.

La operacin PROJECT selecciona columnas de una tabla, las otras columnas son
eliminadas. Si nos interesamos en ciertos atributos de una relacin, utilizamos la
operacin PROJECT.

Formato: t<lista de atributos>(<nombre relacin>)

Ejemplos:
- Crear una tabla con el sexo y salario de los empleados.
t SEXO, SALARIO(EMPLEADO).
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 53 de 127

Secuencia de operaciones:

Es posible escribir operaciones con una simple expresin del lgebra relacional.

Ejemplos:

- Recuperar el primer nombre, el ltimo nombre y el salario de los empleados que
trabajan en el departamento 5.

R t NOMBRE,APELLIDO,SALARIO(oDNO= 5(EMPLEADO)).

Renombrar atributos:

Ejemplo:
TEMP oDNO=5(EMPLEADO)
R(FNAME,LNAME,SALARY) tNOMBRE,APELLIDO,SALARIO(TEMP)

3.2.1.4 OPERACIONES TERICAS.

El siguiente grupo de operaciones son las correspondientes a las operaciones de la
matemtica estndar.

- UNION: El resultado de esta operacin denotada por R S, es una relacin
que incluye tuplas que estn en R o en S o en ambas. Las tuplas duplicadas
se eliminan.

- INTERSECCIN: El resultado de esta operacin denotado por R S, es
una relacin que incluye todas las tuplas que estn en la relacin R y en la
relacin S.

- DIFERENCIA: El resultado de esta operacin denotada por R-S, es una
relacin que incluye todas las tuplas que estn en R pero no en S.

La operacin UNION e INTERSECCION son conmutativas

R S = S R, y R S = S R

Tambin cumplen la propiedad de ser asociativas.

R (S T) = (R S) T, y
(R S) T = R (S T).

La operacin DIFERENCIA no es conmutativa:

R S = S R
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 54 de 127

Ejemplos:


ESTUDIANTE NOMBRE APELLIDO INSTRUCTOR FNAME LNAME
Susana Perez Pablo Medina
Juan Reyes Ricardo Duran
Jaime Torres Susana Perez
Freddy Flores Francisco Lopez
Antonio Gmez Juan Reyes
Ana Rojas
Mara Garcia




(a) NOMBRE APELLIDO (b) NOMBRE APELLIDO
Susana Perez Susana Perez
Juan Reyes Juan Reyes
Jaime Torres
Freddy Flores
Antonio Gmez
Ana Rojas
Mara Garcia
Pablo Medina
Ricardo Duran
Francisco Lopez







(c) NOMBRE APELLIDO (d) NOMBRE APELLIDO
Jaime Torres Pablo Medina
Freddy Flores Ricardo Duran
Antonio Gmez Francisco Lopez
Ana Rojas
Mara Garcia


(a) ESTUDIANTE INSTRUCTOR
(b) ESTUDIANTE INSTRUCTOR
(c) ESTUDIANTE INSTRUCTOR
(d) INSTRUCTOR ESTUDIANTE

- PRODUCTO CARTESIANO: Operacin binaria representada por . En
general, el resultado de las relaciones R S de R(A1,A2,...,An)
S(B1,B2...Bm) es una relacin Q con n * m atributos
Q(A1,A2,...,An,B1,B2,...,Bm). El resultado de la relacin Q tiene un tupla de
cada combinacin de tuplas, una de R y una de S.


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 55 de 127

Ejemplo:

Nom-cliente Nom-banquero Nom-cliente Calle Ciudad_clie
Arvalo Gonslez Vega Sucre Cuenca
Torres Vlez Torres Cordova Cuenca
Prez Arroyo Orellana Boyaca Guayaquil
Illescas Larga Cuenca
Perez Gasca Quito


Nom-cliente Nom-banquero Nom-cliente Calle Ciudad_clie
Arvalo Gonzales Vega Sucre Cuenca
Arvalo Gonzales Torres Crdova Cuenca
Arvalo Gonzales Orellana Boyaca Guayaquil
Arvalo Gonzales Illescas Larga Cuenca
Arvalo Gonzales Prez Gasca Quito
Torres Velez Vega Sucre Cuenca
Torres Velez Torres Crdova Cuenca
Torres Velez Orellana Boyaca Guayaquil
Torres Velez Illescas Larga Cuenca
Torres Velez Prez Gasca Quito
Prez Arroyo Vega Sucre Cuenca
Prez Arroyo Torres Crdova Cuenca
Prez Arroyo Orellana Boyaca Guayaquil
Prez Arroyo Illescas Larga Cuenca
Prez Arroyo Prez Gasca Quito


3.2.1.5 OPERACIN 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 X <JOIN CONDICIN> S

El resultado de la operacin join es una relacin Q con n + m atributos
Q(A1,A2,..,An,B1,B2,...Bm); Q tiene una tupla por cada combinacin de tuplas, una por
R y una por S, sin embargo, la combinacin satisface la <join condicin>. Esta es la
principal diferencia entre el PRODUCTO CARTESIAONA y el JOIN; En un join,
solamente las combinaciones que satisfacen la condicin aparecen en el resultado, en
tanto que en el producto cartesiano todas las combinaciones de tuplas se incluyen en el
resultado.

La <join condicin> es de la forma:

<condicin> AND <condicin> AND....AND<condicin>
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 56 de 127

donde cada condicin es de la forma Ai u Bj, Ai es un atributo de R, Bj es un atributo
de S, Ai y Bj tienen el mismo dominio, y u es uno de los siguientes operadores de
comparacin {=, <, s, >, >, =}. Una operacin join con condiciones de este tipo se lo
llama THETA JOIN.

Los ms comunes join envuelven condiciones nicamente de igualdad, utilizando el
operador =. A este tipo de join se le denomina EQUIJOIN.

NATURAL JOIN: Idntico al EQUIJOIN, excepto que los <join atributos> de R2 no
son incluidos en el resultado de la relacin. Est denotada por *.

R1 * <JOIN CONDICIN>, o
R1 *(<join atributo>),(<join atributo2>)R2 o
R1 * R2.


Ejemplos:

- Recuperar el nombre del jefe de cada departamento.

DEPT_JEFE DEPARTAMENTO X JEFECI = CI EMPLEADO
RESULT t DNUMERO, NOMBRE, APELLIDO (DEPT_JEFE)

- Natural join.

PROY_DEPT PROYECTO * DNUM = DNUMERO DEPARTAMENTO

En este caso en la tabla PROY_DEPT no se repite el atributo DNUMERO de la
relacin DEPARTAMENTO.

Si los join atributos tienen el mismo nombre en ambas relaciones, se puede escribir
la instruccin obviando el nombre de los join atributos.

DEPT_LOCS DEPARTAMENTO* LOCALIZACION

Ntese que el nombre de los join atributos, es el mismo DNUMERO para las dos
relaciones.

3.2.1.6 LA OPERACIN DIVISION.

Operacin binaria representada por el smbolo , se establece para aquellas consultas
que incluyen la frase para toda.




Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 57 de 127
R A B S A
a1 b1 a1
a2 b1 a2
a3 b1 a3
a4 b1
a1 b2
a3 b2
a2 b3 T B
a3 b3 b1
a4 b3 b4
a1 b4
a2 b4
a3 b4

T R S


3.2.1.7 FUNCIONES.

Consideramos las siguientes operaciones aplicadas a la coleccin de valores numricos:

SUM : Suma
AVERAGE : Media aritmtica
MAXIMUN : Valor mximo
MINIMUN : Valor mnimo
COUNT : Contador.

Las funciones estn denotadas por el smbolo . Su formato es:

<grupo atributos> <lista funciones>(<nombre relacin>)

Donde <grupo atributos> es una lista de atributos de la relacin especificada en
<nombre relacin>, y <lista funciones> es una lista de pares (<funcin><atributo>)

Ejemplo:

- Recuperar, para cada nmero de departamento, el nmero de empleados en el
departamento y su salario promedio.

R(DNO, N_EMPLEADOS, SALARIO_PROME)
DNO COUNT CI, AVERAGE SALARIO(EMPLEADO)


R DNO N_EMPLEADOS SALARIO_PROME
5 4 3325
4 3 3100
1 1 5500
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 58 de 127

Si no especificamos el <grupo atributos>, la funcin es aplicada a todas las tuplas de la
relacin, y como resultado se obtiene una simple relacin.

COUNT CI, AVERAGE SALARIO(EMPLEADO)

CONUT_CI AVERAGE_SALARIO
8 3512.5

Si no se especifica los nombres de los atributos en el resultado de la relacin R, los
nombres son aplicados desde la <funcin>_<atributos>.

DNO COUNT CI, AVERAGE SALARIO(EMPLEADO)


DNO COUNT_CI AVERAGE_SALARIO
5 4 3325
4 3 3100
1 1 5500


3.3 EJERCICIOS

3.3.1 Modelo Relacional.

Ejercicio 1.

Se desea implementar una solucin de base de datos que describa las pruebas de
autocomprobacin para cada una de las materias que se imparten en una universidad, de
acuerdo con los siguientes criterios:

- Se realiza una prueba de autocomprobacin para cada uno de los captulos que
definen a una Materia.

- Una prueba contiene una o varias preguntas, las que a su vez pueden tener una o
varias respuestas posibles.

- Se desea identificar qu profesores imparten cada materia. Una materia puede ser
impartida por mas de un profesor.

- Se debe tener constancia de qu captulo han sido respondidas por cada alumno, de
manera que si ya ha sido respondida no se vuelvan a almacenar sus datos. Slo es
posible que el alumno responda a un captulo de una determinada Materia, slo una
vez.


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 59 de 127
MATERIA (Cod_Materia, Descripcin, Contenido, Duracin)
CAPITULO (Cod_Materia, Cod_Capitulo, Ttulo_Captulo)
PREGUNTAS (Cod_Materia, Cod_Captulo, Cod_Pregunta, Enunciado)
RESPUESTAS (Cod_Materia, Cod_Captulo, Cod_Pregunta, Cod_Respuesta,
Texto)
PROFESORES (Cod_Profesor, Nombre, Apellidos, Direccin, Telfono)
IMPARTEN (Cod_Materia, Cod_Profesor)
ALUMNOS (Cod_Alumno, Nombre, Apellidos, Direccin, Telfono)
EXAMENES (Cod_Alumno, Cod_Materia, Cod_Capitulo, Fecha, Calificacin )

Ejercicio 2

Deseamos disear una Base de Datos que recoja la organizacin de una universidad. Se
considera que:

- Los departamentos pueden estar en una sola facultad o ser interfacultativos.

- Una ctedra se encuentra en un nico departamento.

- Una ctedra pertenece a una sola facultad.

- Un profesor est siempre asignado a un nico departamento y adscrito a una o varias
ctedras, pudiendo cambiar de ctedra pero no de departamento; interesa la fecha en
la que un profesor es adscrito a un departamento.

- Existen varias reas de conocimiento, y todo departamento tendr una nica rea de
conocimiento.

DEPARTAMENTOS (CodDpto, DescripcionDpto, JefeDpto, Edificio, Planta,
CodAreaCon)
FACULTADES (CodFac, DescripcionFac, Rector)
CATEDRAS (CodCat, CodDpto, CodFac)
PROFESORES (CodProf, Nombre, CodDpto, Fecha_de_admisin )
AREACONOCIMIENTO (CodAreaCon, DescripcionArea)
DPTO-FAC (CodDpto, CodFac)
PROF-CAT (CodProf, CodCat)

Ejercicio 3

Se desea disear una Base de datos que contenga la informacin relativa a las carreteras
de un pas, sabiendo que:

- En dicho pas las carreteras se encuentran divididas en tramos.

- Un tramo siempre pertenece a una carretera, y no puede cambiar de carretera.

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 60 de 127
- Un tramo puede pasar por varios trminos municipales, siendo un dato de inters el
kilmetro del tramo por el que entra en dicho trmino municipal, y el kilmetro por
el que sale.

- Existe una serie de reas en la que se agrupan los tramos, cada uno de los cuales no
puede pertenecer a ms de un rea. (Humberto Ramos, Curso de Gestin de Bases de Datos,
Universidad Politcnica de Madrid

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 ms de $ 2000 o trabajan en el departamento 4 y
ganan ms de $ 1000.

R o(DNO=1 AND SALARIO>1000) OR ( DNO=4 AND SALARIO>1000)
(EMPLEADO)

2. Listar el nombre, apellido y salario de todos los empleados que trabajan en el
departamento 1 y ganan ms de $ 3000 o trabajan en el departamento 4 y
ganan ms de $ 1000.

Alternativa 1.

R H NOMBRE, APELLIDO, SALARIO(o(DNO=1 AND SALARIO>3000)
OR ( DNO=4 AND SALARIO>1000) (EMPLEADO))

Alternativa 2.

TEMP o(DNO=1 AND SALARIO>3000) OR ( DNO=4 AND SALARIO>1000)
(EMPLEADO)
R H 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 o(SEXO = M AND SALARIO > 1500)(EMPLEADO)
R(FNAME, LNAME, SALARY) H NOMBRE, APELLIDO,
SALARIO(TEMP)
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 61 de 127

4. Recuperar la cedula de ciudadana de todos los empleados que cumplan
cualquiera de las dos condiciones, trabajar en el departamento 5 o ser
directamente supervisor de un empleado que trabaja en el departamento 5.

EMP_DEP5 o DNO = 5 (EMPLEADO)
CONDICION1 H CI(EMP_DEP5)
CONDICION2 (CI) H SUPERCI(EMP_DEP5)
RESULTADO CONDICION1 CONDICION2

El desarrollo de este ejemplo se detalla a continuacin:

EMP_DEP5
NOMBRE INICIAL APELLIDO CI FECHA_N DIRECCIN SEXO SALARIO SUPERCI DNO
Juan B Polo 123456789 3-mar-59 Sucre 7-12 M 3000 333445555 5
Humberto t Pons 333445555 25-dic-60 Bolvar 5-67 M 4000 888665555 5
Pablo K Castro 666884444 15-sep-55 Bolvar 1-50 M 3800 333445555 5
Marcia A Mora 453453453 29-mar-60 Colombia 4-23 F 2500 333445555 5

CONDICION1 CI
123456789
333445555
666884444
453453453

CONDICION2 CI
333445555
888665555

RESULTADO CI
123456789
333445555
666884444
453453453
888665555

5. Para cada empleado de sexo masculino, recuperar su nombre, apellido y el
nombre de su dependiente.

Alternativa 1 (con producto cartesiano)

NOM_EMP H NOMBRE, APELLIDO, CI (o SEXO = M
(EMPLEADO))
EMP_DEP NOM_EMP CARGA_F
RESULTADO1 o CI = ECI (EMP_DEP)
RESULTADO H NOMBRE, APELLIDO, DEP_NOM(RESULTADO1)
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 62 de 127

Alternativa 2 (con join)

NOM_EMP H NOMBRE, APELLIDO, CI (o SEXO = M (EMPLEADO))
RESULTADO1 NOM_EMP * CI = ECI CARGA_F
RESUTADO H COMBRE, APELLIDO, DEP_NOM(RESULTADO1)

6. Listar el nombre, apellido y CI de los empleados que trabajan en el
departamento de compras

DEP_COMP o DEP_NOM = Compras (DEPARTAMENTO)
R2 EMPLEADO * DNO = DEP_NUM DEP_COMP
RESULTADO H 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) H NOMBRE,
APELLIDO, SUPERCI (EMPLEADO)
E_S (S_NOMBRE, S_APELLIDO, S_SUPERCI) H 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 nmero de dependientes.

R1 (CI, NUMERO_D) ECI t COUNT DEP_NOM (CARGA_F)
R2 EMPLEADO * CI = ECI R1
RESULTADO H NOMBRE, NUMERO_D (R2)

9. Listar el nombre y cdula de ciudadana de los empleados que tienen ms de
dos dependientes.

R1 (CI, NUMERO_D) ECI t COUNT DEP_NOM (CARGA_F)
R2 o NUMERO_D > 2 (R1)
RESULTADO H NOMBRE, CI (R2 * EMPLEADO)

10. Determinar el nmero de horas totales trabajadas por cada empleado.

R1 (CI, TOTAL_HORAS) ECI t SUM HORAS (TRABAJA_EN)
RESULTADO H NOMBRE, APELLIDO, TOTAL_HORAS
(EMPLEADO * R1)
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 63 de 127
CAPITULO 4

EL LENGUAJE SQL


4.1 GENERALIDADES.

Los sistemas de bases de datos comerciales requieren de un lenguaje de consulta
amigable para el usuario. Existen diferentes lenguajes comerciales como: SQL, QBE,
QUEL.

QBE (QUERY-BY-EXAMPLE) est basado en el clculo relacional de dominio; QUEL
est basado en el clculo relacional de tuplas y SQL (STRUCTURE QUERY LANGUAGE)
usa una combinacin de construcciones del lgebra relacional y del clculo relacional.

En este captulo hacemos referencia al ncleo de SQL como se describe en la norma
ANSI de 1992, que con frecuencia se conoce como SQL92. La versin ms reciente,
SQL3, se refiere a las extensiones del lenguaje de programacin orientada a objetos.
SQL es el lenguaje de manejo de datos relacionales actual ms importante y ha recibido
el respaldo del American National Standards Institute (ANSI) como el lenguaje
seleccionado para el manejo de datos relacionales, y es el lenguaje de acceso a datos que
usan muchos productos DBMS comerciales, incluyendo DB2, SQL Server, Oracle,
INGRES, Microsoft Access y muchos otros.

SQL es un lenguaje orientado a la transformacin, que acepta como entrada una o ms
relaciones (tablas) y produce una sola relacin (tabla) de salida.

El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de
agregado (funciones de columna). Estos elementos se combinan en las instrucciones
para crear, actualizar y manipular las Bases de datos.

- Comandos.

El SQL es un lenguaje de DBMS relacional que puede ser usado como lenguaje
de manipulacin de datos. Existen cuatro postulados de SQL para realizar las
funciones bsicas de manipulacin (DML) de datos:

Comando Descripcin
SELECT Utilizado para operaciones de lectura, es decir consultas de tuplas
de la base de datos que cumplan una condicin determinada.
INSERT Se utiliza para insertar nuevas tuplas en una relacin.
UPDATE Modifica valores de los campos.
DELETE Elimina tuplas de una tabla.

Tambin sirve como lenguaje de definicin (DDL) de datos. Se emplea el SQL
para crear las estructuras de datos; es decir, las relaciones en las que
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 64 de 127
posteriormente se almacenarn las tuplas. Los postulados de SQL para este
propsito son:

Comando Descripcin
CREATE Define la estructura de una nueva tabla, campos e ndices.
DROP Elimina una tabla.
ALTER Utilizado para modificar las tablas, agregar campos o
cambiar la definicin de los campos.

SQL tambin es til como lenguaje de control de acceso. Es utilizado para dar
autoridad de acceso a los datos almacenados en las relaciones. Hay dos
postulados de SQL que se encargan de ello.

Comando Descripcin
GRANT Otorga autoridad de acceso a los usuarios.
REVOKE Suprime autoridades de acceso a los usuarios.

Conviene aclarar que, por lo general, los mecanismos de autorizacin en los
DBMS son muy sofisticados y suelen ir mucho ms all que la simple
autorizacin de acceso a datos.

- Clusulas

Las clusulas son condiciones de modificacin utilizadas para definir los datos
que se desea seleccionar o manipular.

Clusula Descripcin
FROM Utilizada para especificar la tabla de la cual se van a
seleccionar los registros.
WHERE Utilizada para especificar las condiciones que debe reunir los
registros que se van a seleccionar.
GROUP BY Utilizada para separar los registros seleccionados en grupos
especficos.
HAVING Utilizada para expresar la condicin que debe satisfacer cada
grupo.
ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo
con un orden especfico.

- Operadores Lgicos

Operador Uso
AND Es el y lgico. Evala dos condiciones y devuelve un
valor de verdad slo si ambas son ciertas.
OR Es el o lgico. Evala dos condiciones y devuelve un
valor de verdad si alguna de las dos es cierta.
NOT Negacin lgica. Devuelve el valor contrario de la
expresin.
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 65 de 127

- Operadores de Comparacin
Operador Uso
< Menor que.
> Mayor que.
<> Distinto.
<= Menor igual que.
>= Mayor igual que.
= Igual que.
BETWEEN Utilizado para especificar un intervalo de valores.
LIKE Utilizado en la comparacin de un modelo.
IN Utilizado para especificar registros de una Base de Datos.

- Funciones de Agregado

Las funciones de agregado se usan dentro de una clusula SELECT en grupos de
registros, para devolver un nico valor que se aplica a un grupo de registros.

Funcin Descripcin
AVG Calcula el promedio de los valores de un campo determinado
COUNT Calcula el nmero de registros de la seleccin.
SUM Calcula la suma de todos los valores de un campo
determinado.
MAX Devuelve el valor ms alto de un campo determinado.
MIN Devuelve el valor ms bajo de un campo determinado.

4.2 CONSULTAS DE UNA TABLA.

La instruccin SELECT, permite manipular los datos contenidos en una tabla para
responder a los diversos tipos de preguntas que pueden presentarse, y de esta manera
explotar la informacin que est registrada en forma relacional.

Formato:

SELECT [ALL, DISTINCT] <lista de atributos>
FROM <nombre de la tabla>
WHERE <condicin>
GROUP BY <nombre de la columna>
HAVING <condicin de bsqueda>
ORDER BY <nombre de columna> ASC, DESC.







Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 66 de 127
SQL Interactivo
Consulta



Resultado de la consulta
AUTOR GENERO
Hugo Teatro
Hugo Poesa
Balzac Romana
Dumas Teatro




Consulta
SQL programado

Estructura tabular de los resultados de una consulta SQL


4.2.1 SELECCIN SIMPLE

- SELECT *

El primer operando que sigue al SELECT es el carcter *. Este significa el
ensamble de columnas de la tabla, presentadas en el mismo orden que el de
la definicin de la tabla al momento de la creacin.

SELECT * FROM LIBROS;


AUTOR TITULO AO GENERO PRECIO
HUGO HERNANI 1830 TEATRO 120.000
HUGO LAS CONTEMPLACIONES 1856 POESIA 78.500
HUGO LOS MISERABLES 1862 ROMANA 148.500
BALZAC EUGENIA GRANDET 1833 ROMANA 100.000
BALZAC PAP GORIOT 1834 ROMANA
DUMAS LOS TRES MOSQUETEROS 1844 ROMANA 80.000
DUMAS VEINTE AOS DESPUES 1845 ROMANA 80.000
DUMAS LA DAMA DE LAS CAMELIAS 1852 TEATRO 110.000
STENDHAL ROJO Y NEGRO 1831 ROMANA 98.500
STENDHAL LA CARTUJA DE PARMA 1839 ROMANA 110.500
FLAUBERT MADAME BOVARY 1857 ROMANA 99.500
VERLAINE POEMAS SATURNIANOS 1866 POESIA 90.500

Tabla LIBROS


SELECT AUTOR,
GENERO FROM
LIBROS
...........................
PROGRAMA
DBMS
BD
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 67 de 127
- SELECT con expresin.

Una o varias expresiones pueden seguir a la palabra SELECT.

SELECT columna_1 * columna_2 FROM nombre_tabla

SELECT (col_1 * 1.25) / (col_2 * col_3) FROM nombre_tabla

- SELECT con una o varias columnas

La expresin ms simple, que contiene nicamente las columnas especificadas

SELECT TITULO FROM LIBROS

SELECT AO, TITULO FROM LIBROS

- SELECT con valores calculados

Esta consulta se ilustra con el siguiente ejemplo:

Listar el ttulo y el precio con un incremento del 20% de cada obra de la tabla
libros.

SELECT TITULO, Precio: , PRECIO*1.2, Sucres FROM LIBROS


HERNANI Precio : 144000 Sucres
LAS CONTEMPLACIONES Precio : 94200 Sucres
LOS MISERABLES Precio : 178200 Sucres
EUGENIA GRANDET Precio : 120000 Sucres
PAP GORIOT Precio : 0 Sucres
LOS TRES MOSQUETEROS Precio : 96000 Sucres
VEINTE AOS DESPUES Precio : 96000 Sucres
LA DAMA DE LAS CAMELIAS Precio : 132000 Sucres
ROJO Y NEGRO Precio : 118200 Sucres
LA CARTUJA DE PARMA Precio : 132600 Sucres
MADAME BOVARY Precio : 119400 Sucres
POEMAS SATURNIES Precio : 108600 Sucres

La opcin DISTINCT, permite seleccionar un ejemplar de cada lnea.

Ejemplo:

SELECT AUTOR FROM LIBROS; SELECT DISTINCT AUTOR FROM LIBROS





Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 68 de 127
Los resultados para cada una de estas consultas son los siguientes:

AUTOR AUTOR
HUGO BALZAC
HUGO DUMAS
HUGO FLAUBERT
BALZAC HUGO
BALZAC STENDHAL
DUMAS VERLAINE
DUMAS
STENDHAL
STENDHAL
FLAUBERT
VERLAINE


4.2.2 SELECCIN CONDICIONAL CON WHERE

El predicado de base es la forma ms simple de una condicin de bsqueda. Est
constituida de dos expresiones compatibles, separadas por un operador de comparacin
(=, <=, >=, <, >, <>). Los resultados del predicado pueden ser Verdadero (v), Falso (f)
o Desconocido (d), este ltimo caso se obtiene si una de las dos expresiones tiene un
valor nulo.
Las condiciones de bsqueda atan uno a ms predicados, separados por los operadores
lgicos AND, OR y NOT.

Valores de la tabla de verdad de los operadores lgicos:

X Y NOT X X AND Y X OR Y
V V F V V
V F F F V
V D F D V
F V V F V
F F V F F
F D V F D
D V D D V
D F D F D
D D D D D


SQL ofrece un conjunto de condiciones de bsqueda, permitiendo elaborar diferentes
tipos de consultas:

4.2.2.1 Test de Comparacin:

Compara el valor de una expresin con el valor de otra.

Ejemplos:

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 69 de 127
- Busque en la tabla LIBROS el ttulo y gnero de todos los libros escritos por
DUMAS.

SELECT TITULO, GENERO FROM LIBROS WHERE AUTOR = DUMAS

- Busque en la tabla LIBROS, los datos concernientes a las obras no escritas
por DUMAS y posteriores a 1835.

SELECT * FROM LIBROS
WHERE NOT (AUTOR = DUMAS) AND AO > 1835;

- Busque en la tabla LIBROS el ttulo, ao, gnero y precio de las obras en
donde el precio es menor a $ 100.000 o superior a $ 135000.

SELECT TITULO, AO, GENERO, PRECIO FROM LIBROS
WHERE PRECIO < 100000 OR PRECIO > 135000;

Cuando la columna de comparacin es una clave primaria, el test asla una sola
fila de la tabla, produciendo una sola fila de resultado.

4.2.2.2 Test de rango (BETWEEN)

Determina si el valor de una expresin cae dentro de un rango especfico de
valores.

El predicado BETWEEN permite buscar un valor a partir de dos expresiones
enmarcadas mediante la palabra AND.

X BETWEEN Y AND Z es equivalente a (X >= Y) AND (X <= Z)

La versin negada del test de rango (NOT BETWEEN) comprueba los valores
que caen fuera del rango.

Ejemplo:

Liste el nombre y el lugar de nacimiento de todos los autores nacidos entre 1802
y 1850.

SELECT AUTOR, LUGAR
FROM AUTORES
WHERE FE_NE BETWEEN 1802 AND 1805;

4.2.2.3 Test de pertenencia a conjunto

El predicado IN examina si un valor coincide con uno de una lista de valores
determinados explcitamente por enumeracin o implcitamente por una
subconsulta.

La condicin: A IN (X, Y, Z ) es equivalente a:

(A = X) OR (A = Y) OR (A = Z)
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 70 de 127

Ejemplo:

- Listar el autor, ttulo y el ao de las obras de la tabla LIBROS escritas en
1839, 1866 o 1857.

SELECT AUTOR , TITULO, AO
FROM LIBROS
WHERE AO IN (1839, 1866, 1857)

4.2.2.4 Test de correspondencia con patrn

Se utiliza para comparar una expresin de cadena, con un modelo en una
expresin SQL.

Caracteres comodines:

(%) se corresponde con cualquier secuencia de dos a ms caracteres.

(_) Se corresponde con cualquier carcter simple.

Ejemplo:

- Liste los ttulos de las obras de la tabla LIBROS que compongan la cadena
DAM en el ttulo.

SELECT TITULO
FROM LIBROS
WHERE TITULO LIKE %DAM%

4.2.2.5 Test de valor nulo

El predicado NULL permite verificar el o los valores nulos contenidos en una
columna.

La forma negativa del test de valor nulo (IS NOT NULL), encuentra la filas que
no contiene un valor NULL.

Ejemplo:

Liste el autor y el ttulo de las obras donde no se conoce el precio.

SELECT AUTOR, TITULO
FROM LIBROS
WHERE PRECIO IS NULL

4.2.3 LAS OPCIONES GROUP BY Y HAVING.



Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 71 de 127
- GROUP BY

La opcin GROUP BY es seguida del nombre de una o varias columnas
llamadas columnas de agrupamiento. Las lneas donde el contenido de las
columnas de agrupamiento son idnticas forman un grupo.

Ejemplo:

Liste agrupados por gnero y autor, los datos de autor y gnero de la tabla
LIBROS.

SELECT AUTOR, GENERO FROM LIBROS GROUP BY AUTOR, GENERO;

Como resultado de esta consulta se obtiene los siguientes datos:

AUTOR GENERO
BALZAC ROMANA
DUMAS ROMANA
DUMAS TEATRO
FLAUBERT ROMANA
HUGO POESIA
HUGO ROMANA
HUGO TEATRO
STENDHAL ROMANA
VERLAINE POESIA

- HAVING

La opcin HAVING, permite aplicar una condicin de bsqueda a los grupos de
datos definidos por la opcin GROUP BY. No confundir las operaciones
WHERE y HAVING. WHERE permite seleccionar una lnea antes de formar
los grupos, en tanto que HAVING selecciona cuando los grupos han sido
formados por GROUP BY.

Ejemplo:

Liste reagrupando por autor y gnero, los datos relativos a autor y gnero de
obras de la tabla LIBROS, eliminando las de gnero poesa.

SELECT AUTOR, GENERO FROM LIBROS
GROUP BY AUTOR, GENERO
HAVING GENERO <> POESIA;

4.2.4 LA OPCIN ORDER BY.

Las filas de la tabla resultante pueden ser ordenadas por los valores de una o ms
columnas. Podemos especificar que la secuencia sea creciente (ASC) o decreciente
(DESC).

Ejemplo:
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 72 de 127

Liste el autor, el ttulo, y el ao de las obras de la tabla LIBROS, ordenada
cronolgicamente.

SELECT AUTOR, TITULO, AO FROM LIBROS
ORDER BY AO;

Es posible en la opcin ORDER BY colocar el nmero de la posicin en el
SELECT de la columna que deseamos ordenar.

SELECT AUTOR, TITULO, AO FROM LIBROS
ORDER BY 3;

4.3 LA OPCIN UNION (UNION ALL)

La operacin UNION permite definir una tabla resultante a partir de la combinacin de
los resultados de dos o ms consultas o tablas independientes.

Restricciones:

- Ambas tablas deben tener el mismo nmero de columnas.

- El tipo de dato de cada columna en la primera tabla debe ser el mismo que el
tipo de dato de la columna correspondiente en la segunda tabla.

- Ninguna tabla puede estar ordenada con la sentencia ORDER BY, sin
embargo, el resultado de la consulta UNION, puede ser ordenado con la
utilizacin de la clusula ORDER BY al final de la ltima consulta SELECT.

- Las columnas resultado no son nombradas.

Si se utiliza la opcin UNION ALL, la tabla resultante contiene todas las lneas
provenientes de cada SELECT. En la opcin UNION, las lneas repetidas son
eliminadas.

Ejemplo:
AUTOR FE_NA LUGAR SALA ESTANTE
HUGO 1802 BESANCON 2 3
BALZAC 1799 TOURS 1 1
DUMAS 1802 VILLERS 1 1
DUMAS 1824 PARIS 1 1
STENDHAL 1783 GRENOBLE 3 5
FLAUBERT 1821 ROUEN 1 2
VERLAINE 1844 METZ 3 6
ZOLA 1840 PARIS 3 6
RIMBAUD 1854 CHARLEVILLE 3 5
SAND 1804 PARIS 3 5

Tabla AUTORES
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 73 de 127


Liste el ensamble de autores que se encuentran en la tabla LIBROS y que hayan escrito
una obra antes de 1835, o figuran en la tabla AUTORES y nacidos despus de 1850.

SELECT AUTOR FROM LIBROS WHERE AO < 1835
UNION
SELECT AUTOR FROM AUTORES WHERE FE_NA > 1850;

Resultado:

BALZAC
HUGO
RIMBAUD
STENDHAL


El desarrollo del ejemplo anterior se describe en la siguiente figura:





Tabla LIBROS

AO > 1835






Resultado




Tabla AUTORES






FE_NA > 1850




AUTOR
HUGO
BALZAC
BALZAC
STENDHAL
BALZAC
HUGO
STENDHAL
RIMBAUD
AUTOR
BALZAC
STENDHAL
RIMBAUD
UNION
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 74 de 127

La operacin unin puede ser utilizada repetidamente para combinar tres o ms
conjuntos de resultados:


SELECT *
FROM A
UNION (SELECT *
FROM B
UNION
SELECT *
FROM C)


4.4 CONSULTAS MULTITABLA

SQL permite consultar datos procedentes de dos o ms tablas de la Base de Datos. Para
ilustrar con ejemplos este tipo de consultas, utilizaremos el modelo de la compaa
detallado en el captulo 2.

Esquema de la Base de datos relacional de la COMPAIA


EMPLEADO
NOMBRE APELLIDO CI FECHA_N DIRECCIN SEXO SALARIO SUPERCI DNO


DEPARTAMENTO
DNOMBRE DNUMERO JEFECI JEFE_FI


LOCALIZACION
DNUMERO DEP_LOCA


TRABAJA EN
ECI PNO HORAS


PROYECTO
PNOMBRE PNUMERO PLOCAL DNUM


CARGA_F
ECI DEP_NOM SEXO FECHAN_N RELACION

El Proceso de formar parejas de fila haciendo coincidir los contenidos de las columnas
relacionadas se denomina componer (joining) las tablas. La tabla resultante que
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 75 de 127
contiene datos de las dos tablas basadas en una coincidencia exacta entre dos columnas
se denomina equicomposicin.

4.4.1 CONSULTAS PADRE/HIJO

Las claves forneas y las claves primarias crean relaciones padre/hijo en una base de
datos. Partiendo de este concepto las consultas multitabla ms comunes implican a dos
tablas que tienen esta relacin.

Ejemplo:

- Listar cada uno de los empleados y el nombre del departamento donde
trabajan.

SELECT NOMBRE, APELLIDO, DNOMBRE
FROM EMPLEADO, DEPARTAMENTO
WHERE DNO = DNUMBER

Cada empleado (hijo) tiene un departamento (padre) asociado y cada
departamento (padre) puede tener muchos empleados (hijos) asociados.

La columna DNO de la tabla EMPLEADO, es una clave fornea
correspondiente a la columna DNUMERO (clave primaria) de la tabla
DEPARTAMENTO.

- Listar el nombre y apellido de los jefes departamentales.

SELECT NOMBRE, APELLIDO
FROM EMPLEADO, DEPARTAMENTO
WHERE CI = JEFECI

4.4.2 COMPOSICIONES CON CRITERIO DE SELECCIN DE FILA.

La condicin de bsqueda que especifica las columnas de emparejamiento en una
consulta multitabla, pueden combinarse con otras condiciones de bsqueda para
restringir an ms los contenidos del resultado.

Ejemplo:


- Listar el nombre y apellido del jefe del departamento administrativo.

SELECT NOMBRE, APELLIDO
FROM EMPLEADOS, DEPARTAMENTO
WHERE DNO = DNUMERO AND
DNOMBRE = Administrativo



Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 76 de 127
- Listar los nombres de los dependientes del empleado Juan Polo.

SELECT DEP_NOM
FROM EMPLEADOS, CARGAS_F
WHERE CI = ECI AND
NOMBRE = Juan AND
APELLIDO = Polo


4.4.3 CONSULTAS DE TRES O MAS TABLAS

Con la misma tcnica que utiliza SQL para combinar dos tablas, es posible combinar
tres o ms tablas.

Ejemplo:

- Listar los nombres de los dependientes de todos los empleados que trabajan
en el departamento de investigacin.

SELECT NOMBRE, APELLIDO, DEP_NOM
FROM EMPLEADOS, DEPARTAMENTO, CARGAS_F
WHERE DNOMBRE = Investigacin AND
DNUMERO = DNO AND
CI = ECI

4.4.4 OTRAS COMPOSICIONES

- La mayor parte de consultas entre mltiples tablas se realizan en relaciones
de padre/hijo, sin embargo, SQL no exige que las columnas de
emparejamiento sean necesariamente llaves primarias o llaves forneas.
Cualquier tipo de columnas pueden servir como columnas de
emparejamiento, siempre que tengan tipos de datos comparables.

- Las comparaciones ms habituales son aquellas basadas en la igualdad de
dos columnas (equicomposiciones), sin embargo, SQL permite componer
tablas basndose en otros operadores de comparacin.

4.4.5 CONSULTAS DE COLUMNAS CUALIFICADAS.

Si una sentencia en SQL afecta a dos columnas con el mismo nombre correspondiente a
dos tablas diferentes, debe utilizarse un nombre de columna cualificado para identificar
sin ambigedad la columna designada. Un nombre de columna cualificado especifica
tanto el nombre de la tabla que contiene la columna, como el nombre de la columna
separados por un punto (.). Por ejemplo: la columna de nombre SEXO de la tabla
EMPLEADO tiene el nombre de columna cualificado:

EMPLEADO . SEXO



Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 77 de 127
Ejemplo:

- Mostrar el sexo de los empleados que tienen dependiente.

SELECT NOMBRE, APELLIDO, EMPLEADO.SEXO
FROM EMPLEADOS, CARGAS_F
WHERE CI = ECI

4.4.6 SELECCIN DE TODAS LAS COLUMNAS.

En una consulta multitabla, el asterisco (*) selecciona todas las columnas de todas las
tablas seleccionadas en la clusula FROM.

Ejemplo:
- Recuperar todos los datos de los empleados que trabajan en el departamento
de Investigacin, incluyendo todos los atributos del departamento.

SELECT *
FROM EMPLEADO, DEPARTAMENTO
WHERE DNO = DNUMERO AND
DNOMBRE = Investigacin

- Especificar el Producto Cartesiano de las relaciones EMPLEADO Y
DEPARTAMENTO.

SELECT *
FROM EMPLEADO, DEPARTAMENTO

4.4.7 AUTOCOMPOSICIONES.

Algunas consultas multitabla afectan a una relacin que una tabla tiene consigo misma,
es decir cuando se cuenta con una relacin recursiva.

Ejemplo:

- Para cada empleado, recuperar su nombre y apellido y el nombre y apellido
de su inmediato supervisor.

SELECT EMP.NOMBRE, EMP.APELLIDO, SUP.NOMBRE, SUP.APELLIDO
FROM EMPLEADO EMP, EMPLEADO SUP
WHERE EMP.SUPERCI = SUP.CI.

En este caso hemos creado tablas alternativas EMP y SUP de la tabla
EMPLEADO llamadas alias. Estas tablas se crean en la clusula FROM,
separadas con espacio en blanco y no con coma. EMP y SUP son copias de
la tabla EMPLEADO, la primera EMP representa los empleados y el rol de
supervisados y la segunda SUP representa los empleados y el rol de
supervisor. Una vez creadas las tablas alias podemos hacer la combinacin
de las dos.


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 78 de 127
4.5 FUNCIONES DE COLUMNA

Una funcin de columna reenva un valor nico dependiendo de la aplicacin de la
funcin sobre la expresin o del contenido de la columnas que se especifica entre
parntesis FUNCIN(expresin).

Si aplicamos funciones de columna en un SELECT sin la clusula GROUP BY, el
resultado que obtendremos ser una lnea de valores. Si el SELECT esta conformado
por la clusula GROUP BY, la funcin de columna es aplicada a cada uno de los
grupos, por lo tanto se obtendr un valor por cada grupo distinto de valores. A este tipo
de consultas se los denomina Consultas Agrupadas., y las columnas indicadas en la
clusula GROUP BY se denominan Columnas de agrupacin.

SQL cuenta con seis funciones de columna diferentes:

4.5.1 LA FUNCIN AVG()

Calcula la media aritmtica de un conjunto de valores contenidos en un campo
especfico de una consulta. Los datos de la columna deben ser de tipo numrico.

Su sintaxis es :

Avg(exp)

Ejemplo:

- Calcular el salario promedio de todos los trabajadores

SELECT AVG(SALARIO)
FROM EMPLEADO

Como resultado obtenemos:

AVG(SALARIO)
3512.5

- Calcular para cada uno de los departamentos el salario promedio de sus
empleados.

SELECT DNO, AVG(SALARIO)
FROM EMPLEADO
GROUP BY DNO

Como resultado obtenemos:

DNO AVG(SALARIO)
5 3325
4 3100
1 5500
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 79 de 127
4.5.2 FUNCIN SUM()

Devuelve la suma del conjunto de valores contenido en un campo especfico de una
consulta.

Su sintaxis es:

Sum(expresin)

En donde expresin representa el nombre del campo que contiene los datos que desean
sumarse o una expresin que realiza un clculo utilizando los datos de dichos campos.

Ejemplo:

- Calcular la suma total del salario de los empleados.

SELECT SUM(SALARIO)
FROM EMPLEADOS

Como resultado obtenemos:

SUM(SALARIO)
28100

- Calcular la suma total del salario de los empleados por departamento.

SELECT DNO, SUM(SALARIO)
FROM EMPLEADO
GROUP BY DNO

Como resultado obtenemos:

DNO SUM(SALARIO)
5 13300
4 9300
1 5500

4.5.3 FUNCIN MAX Y MIN

Devuelve el mximo o el mnimo de un conjunto de valores contenidos en un campo
especfico de una consulta.

Su sintaxis es:

Min(exp), Max (exp)

En donde exp es el campo de una tabla sobre el que se desea realizar el clculo.

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 80 de 127
- Para el empleado que gana el mximo salario, mostrar su nombre y el
salario.

SELECT NOMBRE, MAX(SALARIO)
FROM EMPLEADO

Resultado:

NOMBRE MAX(SALARIO)
Jaime 5500

- Para cada departamento, mostrar el mnimo salario de los empleados.

SELECT DNO, MIN(SALARIO)
FROM EMPLEADO
GROUP BY DNO

4.5.4 FUNCIN COUNT()

Cuenta el nmero de valores de datos que hay en una columna.

Su sintaxis es:

Count(exp)

Donde exp contiene el nombre del campo que deseamos contar. Puede contar cualquier
tipo de dato incluso texto. Count cuenta el nmero de registros sin tener en cuenta el
valor que est almacenado. No cuenta los registros que tienen campos nulos a menos
que exp sea un carcter comodn asterisco (*).

Ejemplo:

- Calcular el nmero total de departamentos.

SELECT COUNT(DNUMERO)
FROM DEPARTAMENTO

- Calcular el nmero total de empleados por departamento.

SELECT DNO, COUNT(CI)
FROM EMPLEADO
GROUP BY DNO

- Determinar el nmero de empleados que ganan ms de $ 3000.

SELECT COUNT(CI)
FROM EMPLEADO
WHERE SALARIO > 3000



Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 81 de 127
4.5.5 FUNCIN COUNT(*)

Proporciona como resultado el nmero de lneas de una tabla o de un grupo de lneas
luego de aplicar una condicin de seleccin.

Ejemplo:

- Calcular el nmero de empleados de sexo masculino.

SELECT COUNT(*)
FROM EMPLEADO
WHERE SEXO = M

Resultado:

COUNT(*)
5

La siguiente instruccin generar el mismo resultado:

SELECT COUNT(CI)
FROM EMPLEADO
WHERE SEXO = M

4.5.6 FUNCIN DE COLUMNAS CON LA PALABRA CLAVE DISTINCT

Para eliminar valores duplicados, es necesario incluir la palabra clave DISTINCT
delante del argumento de la funcin de columna inmediatamente despus del parntesis
abierto.

Para aplicar DISTINCT, la expresin de la funcin debe ser un simple nombre de
columna.

El estndar de SQL permite utilizar la palabra clave DISTINCT para las funciones de
SUM(), AVG() y COUNT(). No permite el DISTINCT para las funciones de MAX() y
MIN(), puesto que, no tiene impacto en su resultado.

La palabra clave DISTINCT no puede ser usada con la funcin COUNT(*), ya que sta
no trata con una columna de datos sino que simplemente cuenta filas.

Ejemplo:

- Determinar los salarios distintos de los empleados.

SELECT COUNT (DISTINCT SALARIO)
FROM EMPLEADO



Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 82 de 127
- Listar Los salarios distintos

SELECT DISTINCT SALARIO
FROM EMPLEADO


4.5.7 FUNCIONES DE COLUMNA CON VALORES NULOS

El estndar de SQL especifica que los valores NULL de la columna deben ser ignorados
para las funciones de columna. Esta especificacin se muestra en los siguientes
ejemplos:

Ejemplo:

- SELECT COUNT(*), COUNT(CI), COUNT(SUPERCI)
FROM EMPLEADO

Resultado:

COUNT(*) COUNT(CI) COUNT(SUPERCI)
8 8 7


- En funcin de la tabla T, calcular la siguiente consulta.

T A B
3 1
5 NULL
2 2
1 1
4 1

SELECT SUM(A), SUM(B), (SUM(B) - SUM(B), SUM(A B)
FROM T

Resultado:

SUM(A) SUM(B) SUM(A) SUM(B) SUM(A-B)
15 5 10 5

El estndar especifica las siguientes reglas para gestionar las funciones de columna con
valores NULL.

- Si algn valor de datos de una columna es NULL, se ignora para el propsito
de calcular el valor de la funcin de columna.

- Si todos los datos de una columna son NULL, las funciones SUM(), AVG(),
MIN() y MAX(), devuelven un valor NULL; la funcin COUNT() devuelve
cero.
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 83 de 127

- Si no hay datos en la columna (vaca), las funciones SUM(), AVG(), MIN()
Y MAX() devuelven un valor cero.

- La funcin COUNT(*) cuenta filas, y no depende de la presencia o ausencia
de valores NULL en la columna; sin no hay filas devuelve un valor de cero.

Los gestores de bases de datos comerciales pueden producir resultados
diferentes a los especificados por el estndar.

4.5.8 CONDICIONES DE BSQUEDA DE GRUPOS (HAVING)

La clusula HAVING puede ser utilizada para seleccionar y rechazar grupos de filas, es
decir, especifica una condicin de bsqueda para grupos.

Ejemplo:

- Listar la CI de los empleados que tengan ms de un dependiente.

SELECT ECI
FROM CARGAS_F
GROUP BY ECI
HAVING COUNT(*) > 1

- Para todos los empleados que han trabajado ms de 30 horas, listar su cdula
de identidad, nombre y nmero de horas trabajadas.

SELECT ECI, NOMBRE, SUM(HORAS)
FROM TRABAJA_EN, EMPLEADOS
WHERE CI = ECI
GROUP BY ECI
HAVING SUM(HORAS) > 30

4.6 SUBCONSULTAS

SQL tiene la caracterstica de permitir utilizar el resultado de una consulta como parte
de otra, a esta caracterstica se lo denomina Subconsulta. Una subconsulta aparece
dentro de la clusula WHERE o HAVING de otra sentencia SQL. Con la clusula
WHERE se seleccionan las filas individuales que aparecen en los resultados de la
consulta, en tanto que, con la clusula HAVING ayuda a seleccionar los grupos de filas
que aparecen en los resultados de la consulta.

Existen algunas diferencias entre una subconsulta y una sentencia SELECT real:

- Una subconsuta produce una nica columna de datos como resultado, esto
significa que tiene un nico elemento de seleccin.

- La clusula ORDER BY no puede ser especificada en una subconsulta.

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 84 de 127
- Una subconsulta no puede ser la UNION de varias sentencias SELECT
diferentes; slo se permite una nica sentencia SELECT.

- Los nombres de columnas que aparecen en una subconsulta pueden referirse
a columnas de tablas de la consulta principal. A esta referencia se lo
denomina Referencia Externa.


4.6.1 CONDICIONES DE BSQUEDA EN UNA SUBCONSULTA.

SQL proporciona las siguientes condiciones de bsqueda en una subconsulta.

4.6.1.1 Test de comparacin subconsulta. (=, <>, <,<=, >, >=)

Este test compara el valor de una expresin con el valor producido por una
subconsulta, y devuelve un resultado verdadero (TRUE) si la comparacin es
cierta.

Formato:

------- expresin ----- operador de comparacin ---- ( Subconsulta )

El resultado de la subconsulta produce un nico valor que ser comparado con
un valor de la fila que est siendo examinada en la consulta principal. Si la
subconsuta produce ms de una fila como resultado, SQL informa de una
condicin de error.

Si la subconsulta no produce filas o produce un valor NULL, el test de
comparacin devuelve NULL.

Ejemplo:

- Listar el nombre y apellido de los empleados que trabajan en el departamento
Administrativo.

SELECT NOMBRE, APELLIDO
FROM EMPLEADO
WHERE DNO = (SELECT DNUMERO
FROM DEPARTAMENTO
WHERE DNOMBRE = Administrativo

En este ejemplo el resultado de la subconsulta es 4, valor que corresponde al
nmero del departamento Administrativo. Este resultado de 4 ser
comparado con cada uno de los valores de la columna DNO de la tabla
EMPLEADOS, devolviendo verdadero (TRUE) si la comparacin es cierta.



Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 85 de 127
- Listar los nombres de los proyecto controlados por el departamento de
Investigacin.

SELECT PNOMBRE
FROM PROYECTO
WHERE DNUM = (SELECT DNUMERO
FROM DEPARTAMENTO
WHERE DNOMBRE = Investigacin

- Listar los nombres de los dependientes del empleado Humberto Pons.

SELECT DEP_NOM
FROM CAGAS_F
WHERE ECI = (SELECT CI
FROM EMPLEADO
WHERE NOMBRE = Humberto AND APELLIDO = Pons)

4.6.1.2 Test de pertenencia a subconjunto IN

Este test se emplea para recuperar nicamente aquellos registros de la consulta
principal para los que algunos registros de la subconsulta contienen un valor
igual.

Compara un nico valor de datos con una columna de valores producida por una
subconsulta y devuelve un resultado verdadero (TRUE) si el valor coincide con
uno de los valores de la columna.

Inversamente se puede utilizar NOT IN para recuperar nicamente aquellos
registros de la consulta principal para los que no hay ningn registro de la
subconsulta que contenga un valor igual.

Ejemplo:

- Recuperar el nombre de los empleados que tienen dependientes con el
mismo sexo.

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)
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 86 de 127

4.6.1.3 Test de existencia (EXISTS)

El test de existencia EXISTS (con la palabra reservada NOT opcional) se utiliza
en comparaciones de verdadero / falso, para determinar si la subconsulta
devuelve algn registro. Si la subconsulta produce filas, el test de EXISTS es
TRUE, y si no produce filas, el test de EXISTS es FALSE.

En este test, SQL permite utilizar la forma SELECT * en razn de que la
condicin de bsqueda EXISTS no utiliza realmente los resultados de la
subconsulta. En la prctica siempre se utiliza la notacin SELECT *.

El test de existencia EXISTS se utiliza slo con subconsultas.

Ejemplos:

- Recuperar el nombre de los empleados que tienen dependiente.

SELECT NOMBRE, APELLIDO
FROM EMPLEADO
WHERE EXISTS (SELECT *
FROM CARGAS_F
WHERE CI = ECI)

En este ejemplo, la subconsulta incluye una Referencia Externa a una
columna de la tabla de la consulta principal. En la subconsulta, la columna
CI referencia a la tabla EMPLEADOS de la consulta principal. Una
Referencia Externa es un nombre de columna que no se refiere a ninguna
de las tablas designadas en la clusula FROM de la subconsulta en la cual
aparece el nombre de la columna, en vez de ello, el nombre de la columna se
refiere a una columna de una tabla especfica en la tabla FROM de la
consulta principal.

En la prctica, la subconsulta de un test EXISTS siempre contiene una
referencia externa que enlaza la subconsulta a la fila que actualmente est
siendo examinada por la consulta principal.

- Listar el nombre de los departamentos en donde los empleados ganan ms de
$ 3000.

SELECT DNOMBRE
FROM DEPARTAMENTOS
WHERE EXISTS( SELECT *
FROM EMPLEADO
WHERE SALARIO > 3000 AND
DNO = DNUMERO)




Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 87 de 127
4.6.1.4 Test cuantificados (ANY y ALL)

El test ANY se utiliza para recuperar filas de la consulta principal que satisfagan
la comparacin con cualquier otra fila recuperada en la subconsulta. Los
operadores de comparacin que se utilizan para el test ANY son ( = , <>, <, >,
<=, >=).

Si alguna de las comparaciones individuales produce un resultado TRUE, el test
ANY devuelve un resultado TRUE.

En la instruccin WHERE X < ANY (SELECT Y .......) el test puede leerse de la
siguiente manera:

en donde, para algn Y, X es menor que Y

Por ejemplo: si X = 1000 y la subconsulta genera una columna Y con los
siguientes valores: 600, 500, 1200, 800, el resultado del ANY es TRUE, puesto
que, existe al menos un valor (1200) que cumple la condicin.

WHERE X < ANY Y


<



Ejemplo:

- Listar el nombre de los empleados que tienen dependiente

SELECT NOMBRE, APELLIDO
FROM EMPLEADO
WHERE CI = ANY (SELECT ECI
FROM CARGA_F)

El test ALL, se utiliza para recuperar nicamente filas de la consulta principal
que satisfacen la comparacin con todas las filas recuperadas en la subconsulta.
Los operadores de comparacin que se utilizan para el test ALL son ( = , <>, <,
>, <=, >=).

Si todas las comparaciones individuales producen un resultado TRUE, el test
ALL devuelve un resultado TRUE.

En la instruccin WHERE X < ALL (SELECT Y .......) el test puede leerse de la
siguiente manera:

donde, para todo Y, X es menor que Y

1000
600
500
1200
800
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 88 de 127
Por ejemplo: si X = 1000 y la subconsulta genera una columna Y con los
siguientes valores: 600, 500, 1200, 800, el resultado del ALL es FALSE, al
existir valores que no cumplen con la condicin.


WHERE X < ALL Y


<



Ejemplo.

- Listar el nombre de los empleados que por cada proyecto han trabajado ms
horas que las trabajadas por cada empleado en el proyecto 30.

SELECT NOMBRE, APELLIDO
FROM EMPLEADO, TRABAJA_EN
WHERE CI = ECI AND HORAS > ALL (SELECT HORAS
FROM TRABAJA_EN WHERE PNO = 30)

4.7 BUSQUEDAS ANIDADAS

Del mismo modo que se puede utilizar una subconsulta dentro de una consulta
principal, se puede utilizar subconsultas dentro de otra subconsulta. A este tipo de
consultas de ms de dos niveles se las denomina Subconsultas Anidadas.

SELECT .........
WHERE ............ (SELECT.........
WHERE ............(SELECT...........
WHERE .................))

- Determinar los proyectos en donde trabajan empleados que tienen
dependientes Cnyuges.


SELECT PNOMBRE
FROM PROYECTO
WHERE PNUMERO IN (SELECT PNO
FROM TRABAJA_EN
WHERE ECI IN (SELECT ECI
FROM CARGAS_F
WHERE RELACIN = Cnyuge))






1000
600
500
1200
800
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 89 de 127
4.8 OPERACIONES DE ACTUALIZACIN DE LA BASE DE
DATOS.

Denominadas tambin como consultas de accin y son las encargadas de aadir, borrar
y modificar una fila. Las instrucciones que corresponden a estas acciones son:
INSERT, DELETE y UPDATE.

Es necesario indicar que las operaciones de actualizacin pueden ser el origen de errores
en la base de datos, si las tablas relacionales no son bien construidas, anlisis que se
realizar en el siguiente captulo.

4.8.1 INSERT

Agrega una fila a una tabla. Se conoce como una consulta de datos aadidos.

A una fila se le considera como la unidad de datos ms pequea que puede
aadirse a una base de datos relacional.

Esta instruccin puede ser de tres tipos:

- Insertar una nica fila.

Para este caso la sintaxis es la siguiente:

INSERT INTO tabla (campo1, campo2, .. campo n)
VALUES (valor 1, valor 2, valor n)

Esta consulta graba en el campo 1 el valor 1, en el campo 2 el valor 2 y as
sucesivamente.

Consideraciones para esta instruccin:

- El INSERT se puede utilizar con SQL interactivo.

- Si se omite el nombre de una columna, SQL inserta NULL.

- Si se insertan todas las columnas de una tabla, se puede omitir el listado
del nombre de las columnas en la sentencia INSERT. Al utilizarse esta
alternativa, SQL genera automticamente todas las columnas de la tabla
en secuencia de izquierda a derecha. En este caso si se quiere ingresar
valores nulos se tendr que utilizar la palabra clave NULL.

Ejemplo:





Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 90 de 127
- Insertar un nuevo empleado con los siguientes datos:

Nombre: Pedro
Apellido: Torres
CI: 112233445
Fecha de nacimiento: 25/Feb/1967
Direccin: Vega Muoz 10-12
Sexo: Masculino
Salario: 1000
Supervisor: 333445555
Departamento: Compras

INSERT INTO
EMPLEADOS (NOMBRE, APELLIDO, CI, FECHA_N, DIRECCIN, SEXO,
SALARIO, SUPERCI, DNO)
VALUES(Pedro , Torres , 112233445 , 25/Feb/1967 , Vega Muoz , M,
1000 , 333445555 , 5)


- Inserta Multifilas

Para esta alternativa su sintaxis es:

INSERT INTO Tabla (campo 1, campo 2,.... , campoN)
SELECT TablaOrigen.campo1, TablaOrigen.campo2, ...................................
TablaOrigen.campoN).
FROM TablaOrigen

En este caso se seleccionarn los campos 1, 2, .... N de la TablaOrigen y se
grabarn en los campos 1, 2, .... N de la Tabla. La condicin SELECT puede
incluir la clusula WHERE para filtrar las filas a copiar. Si la Tabla y
TablaOrigen poseen la misma estructura, podemos simplificar la sintaxis a:

INSERT INTO Tabla SELECT TablaOrigen.* FROM TablaOrigen.

Ejemplo:

Copiar en la tabla EMPLEADO2, el nombre, apellido, ci y salario, de todos
los empleado que ganan ms de $ 2000.

INSET INTO EMPLEADO2 (NOMBRE, APELLIDO, CI, SALARIO)
SELECT (NOMBRE, APELLIDO, CI, SALARIO)
FROM EMPLEADO
WHERE SALARIO > 2000


La representacin grfica del desarrollo de esta consulta es la siguiente:



Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 91 de 127
EMPLEADO CONSULTA



EMPLEADO2 Resultado de la Consulta






Restricciones (estndar SQL1)

o La consulta no puede contener una clusula ORDER BY.

o El resultado de la consulta debe contener el mismo nmero de columnas que
hay en la lista de columnas de la sentencia INSERT y adems los tipos de
datos deben ser compatibles columna a columna.

o La tabla destino no puede aparecer en la clusula FROM.

- Carga Masiva

Los productos DBMS comerciales incluyen una capacidad de carga masiva que
cargan los datos desde un archivo a una tabla a alta velocidad. El estndar SQL
ANSI/ISO no considera esta funcin y suele ser suministrada como un programa
de utilidad autnomo en lugar de formar parte del lenguaje SQL. La utilidad
que cada vendedor suministra, dispone de un conjunto ligeramente diferente de
caractersticas, funciones y rdenes.

4.8.2 DELETE

La sentencia DELETE elimina las filas seleccionadas de datos de una nica
tabla. La clusula FROM especifica la tabla destino que contiene las filas. La
clusula WHERE especifica qu filas de la tabla van a ser suprimidas. Esta
instruccin elimina las filas completas, no es posible eliminar el contenido de
algn campo en concreto.

Sus sintaxis es:

DELETE FROM tabla WHERE criterio

Ejemplos:



NOMBRE APELLIDO CI ............. SALARIO DNO









NOMBRE APELLIDO CI SALARIO









NOMBRE APELLIDO CI SALARIO









SELECT (NOMBRE,
APELLIDO, CI, SALARIO
FROM EMPLEADO WHERE
SALARIO > 2000
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 92 de 127
- Eliminar a Jaime Prez de la base de datos.

DELETE FROM EMPLEADO
WHERE NOMBRE = Jaime AND APELLIDO = Prez

- Suprimir todas las filas de la tabla departamento.

DELETE FROM DEPARTAMENTO

Se suprimen los datos de la tabla departamento, pero la tabla no es borrada.

- Eliminar las cargas familiares del empleado Humberto Pons

DELETE FROM CARGA_F, EMPLEADO
WHERE ECI = CI AND
NOMBRE = Humberto AND
APELLIDO = Pons

En esta instruccin las filas seleccionadas que se eliminarn, dependen de los
datos contenidos en otras tablas. La instruccin anterior presenta un error,
al especificarse ms de dos tablas en la clusula FROM

Para evitar estos inconvenientes es necesario utilizar subconsultas:


DELETE FROM CARGA_F
WHERE ECI = (SELECT CI
FROM EMPLEADO
WHERE NOMBRE = Humberto AND
APELLIDO = Pons

4.8.3 UPDATE

Esta instruccin cambia los valores de los campos de una tabla basndose en un
criterio especificado.

UPDATE tabla SET Campo1=Valor1, Campo2=Valor2, ...., CampoN=ValorN
WHERE Criterio;

Ejemplo:

- Incrementar el salario en 10 % a los empleados que trabajan en el
departamento Administrativo.

UPDATE EMPLEADOS
SET SALARIO = SALARIO * 1.1
WHERE DNO = (SELECT DNUMERO
FROM DEPARTAMENTO
WHERE DNOMBRE = Administracin


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 93 de 127
4.9 INTEGRIDAD DE DATOS

Cuando los contenidos de una Base de Datos se modifica con las sentencias INSERT,
DELETE, UPDATE, la integridad puede perderse. Con el propsito de preservar la
consistencia y correccin de los datos almacenados , un DBMS relacional impone una o
ms restricciones de integridad que pueden ser de varios tipos:

RESTRICCIONES DE INTEGRIDAD:

1. Datos requeridos: Ciertas columnas de una base de datos deben contener un
valor de dato vlido en cada fila, es decir no se permite ausencia de valor o que
contenga valores NULL.

Esta restriccin de integridad se declara cuando la tabla que contiene la columna
se crea por primera vez mediante la restriccin NOT NULL, que se especifica
en la sentencia CREATE TABLE.

2. Chequeo de validez: En una base de datos cada columna tiene un dominio, por
ejemplo: utilizar nmeros mayores a 1000 para el registro del CODIGO en una
tabla de estudiantes, o la columna EDAD de los empleados de una empresa debe
estar en el rango de 20 a 45 aos. El gestor de bases de datos puede ser
preparado para que se introduzcan datos vlidos para cada columna de acuerdo a
su dominio y tipo. (chek)

3. Integridad de las Entidades: La clave primaria de una tabla debe contener un
valor nico para cada fila diferente a los valores de todas las filas restantes, caso
contrario, la base de datos perder su integridad. Esta exigencia se denomina
restriccin de integridad de entidad.

El DBMS comprueba automticamente la unicidad del valor de la clave primaria
con cada sentencia INSERT y UPDATE.

En ciertas ocasiones resulta necesario que una columna que no es clave primaria
de una tabla, contenga valores nicos en cada fila. Este requerimiento se obtiene
con la restriccin de unicidad, que se declara mediante la restriccin UNIQUE
de la sentencia CREATE TABLE.

Toda columna que forma parte de una clave primaria y toda columna designada
con una restriccin de unicidad deben ser declaradas NOT NULL.

4. Integridad Referencial: Si una tabla R2 tiene una clave fornea
correspondiente a la clave primaria de la tabla R1, todo valor de dicha clave
fornea debe concordar con un valor de la clave primaria de R1 o ser nulo. En
otros trminos, una clave fornea en una base de datos relacional, enlaza cada
fila de la tabla hijo que contiene la clave fornea con la fila de la tabla padre que
contiene el valor de la clave primaria correspondiente.


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 94 de 127
EMPLEADO
NOMBRE APELLIDO CI FECHA_N DIRECCIN SEXO SALARIO SUPERCI DNO
Juan Polo 123456789 3-mar-59 Sucre 7-12 M 333445555 5
Humberto Pons 333445555 25-dic-60 Bolvar 5-67 M 888665555 5
Irma Vega 999887777 13-nov-50 P. Crdova 3-45 F 987654321 4
Elena Tapia 987654321 3-may-61 Ordez 7-29 F 888665555 4
Pablo Castro 666884444 15-sep-55 Bolvar 1-50 M 333445555 5
Marcia Mora 453453453 29-mar-60 Colombia 4-23 F 333445555 5
Manuel Bonilla 987987987 16-jul-58 B. Malo 1-10 M 987654321 4
Jaime Prez 888665555 5-abr-57 Sangurima 8-34 M null 1

DEPARTAMENTO DNOMBRE DNUMERO JEFECI JEFE_FI
Investigacin 5 333445555 12-may-80
Administrativo 4 987654321 05-dic-82
Compras 1 888665555 06-jun-78

Las columnas DNUMERO y DNO, crean una relacin padre/hijo entre las tablas
DEPARTAMENTO Y EMPLEADO. Cada fila DEPARTAMENTO (padre)
tiene cero (segn el caso) o ms filas EMPLEADO (hijo) con nombres de
departamento coincidentes. Anlogamente, cada fila EMPLEADO (hijo) tiene
exactamente una fila DEPARTAMENTO (padre) con un nmero de
departamento coincidente.

Si se intenta realizar la instruccin:

INSERT INTO EMPLEADO (NOMBRE, APELLIDO, CI, EDAD, SALARIO,
DNO) VALUES (Juan, Perz, 111222333, 35, 1500, 6)

Aparentemente no hay error, la base de datos mostrar que Juan Prez trabaja en
el departamento nmero 6, aun cuando no existe el departamento 6 en la tabla
DEPARTAMENTO. Sin embargo, la fila recin ingresada rompe la relacin
padre/hijo entre las dos tablas. Este ejemplo demuestra que necesariamente el
valor de la columna DNO debe ser forzado para que corresponda a algn valor
de los que aparecen en la columna DNUMERO. Esta regla se conoce como
restriccin de Integridad Referencial, que asegura la integridad de las
relaciones padre/hijo creadas mediante claves forneas y claves primarias.

Problemas de integridad referencial:

- La insercin de una nueva fila hijo: Cuando se inserta una nueva fila en la
tabla EMPLEADO, su valor de la clave fornea DNO debe coincidir con uno
de los valores de la clave primaria DNUMERO. Si el valor no coincide, la
insercin de la fila corromper la base de datos, ya que habr un hijo sin un
padre (un hurfano). El insertar una nueva fila en la tabla padre no
representa problemas a la base de datos, porque simplemente se crear un
padre sin hijos.

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 95 de 127
- La actualizacin de la clave fornea de una fila hijo: Si se modifica la
clave fornea DNO mediante la sentencia UPDATE, el nuevo valor debe
coincidir con un valor de la clave primaria DNUMERO de la tabla padre
(DEPARTAMENTO), caso contrario la fila actualizada quedar hurfana.

- La supresin de una fila padre: Si una fila de la tabla padre
(DEPARTAMENTO) que tiene uno o varios hijos en la tabla EMPLEADOS
se suprime, todas las filas de la tabla hijo quedarn hurfanas. Si se suprime
una fila de la tabla hijo, esto no representa problema, pues el padre de esta
fila tendr un hijo menos despus de la eliminacin.

Supongamos que se cierra el departamento Administrativo y deseamos
eliminar la fila correspondiente; Qu sucedera con todos los empleados
que trabajaban en este departamento?. Segn el caso se podra desear:

- Impedir que el departamento se elimine hasta que los empleados fueran
reasignados.

- Suprimir automticamente a los tres empleados de la tabla
EMPLEADO.

- Poner la columna DNO de los tres empleados a NULL, indicando que la
asignacin del departamento es desconocida.

- Poner la columna DNO de los tres empleados a algn valor por defecto.

- La actualizacin de la clave primaria en una fila padre. Para este caso, si
el valor de la clave primaria en una tabla padre se modifica, todos los hijos
actuales de esa fila quedarn hurfanos. En la prctica, esta restriccin no
suele provocar problemas, ya que los valores de claves primarias casi nunca
se modifican.

Reglas de supresin y actualizacin:

- Operacin restringida (RESTRICT): Borrar (DELETE) una fila
o modificar (UPDATE) la clave primaria de una tabla que contiene
la clave primaria referenciada, slo se permite, si no existen filas
con dicha clave en la tabla que contiene la clave fornea. La
operacin RESTRICT impide suprimir una fila o actualizar la clave
primaria de la tabla padre si la fila tiene algn hijo. Ejemplo: Para
borrar un departamento, no tendra que haber ningn empleado
asignado a dicho departamento.

- Operacin en cascada (CASCADE): El borrar o modificar una fila
de la tabla que contiene la clave primaria referenciada, lleva consigo
el borrado o modificado en cascada de las filas de la tabla que
contiene la clave fornea. CASCADE le dice al DBMS que cuando
una fila es borrada o se modifique la llave primaria de una tabla
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 96 de 127
padre, todas sus filas hijos tambin debern ser borradas o
modificadas automticamente. Ejemplo: Al modificar el nmero de
un departamento, modifica automticamente el nmero de
departamento de todos los empleados asignados a ese departamento.
Para el caso de eliminacin de un departamento, se suprime
automticamente todos los empleados asignados a ese
departamento.

- Operacin de puesta a nulos (SET NULL). Al borrar una fila o
modificar el valor de una clave primaria de una tabla padre, los
valores de la clave fornea de todas las filas hijo deben
automticamente pasar a NULL. Ejemplo: Cuando borramos un
departamento, a los empleados que pertenecen a ese departamento
en la tabla EMPLEADOS, se indicar que la asignacin del
departamento al empleado es desconocida (NULL).

- Operacin de puesta a valor por defecto (SET DEFAULT).
Indica que cuando la fila padre sea suprimida o el valor de la clave
primaria de una fila padre sea modificada, el valor de la clave
fornea en todas las filas hijo deben automticamente pasarse al
valor por defecto para esa columna particular. Ejemplo: si se
modifica el nmero de un departamento, automticamente cambia la
asignacin del departamento de su empleado al departamento por
defecto especificado en la definicin de la tabla EMPLEADO.

Si no se especifica una regla, la regla RESTRICT, es el valor por omisin.

4.10 DEFINICIN DE DATOS EN SQL

4.10.1 Comando CREATE TABLE.

Este comando es utilizado para especificar una nueva tabla, para darle un nombre y
especificar cada uno de sus atributos. Cada atributo es especificado con un nombre, su
tipo, su dominio de valores y alguna condicin del atributo.

Formato:

CREATE TABLE nombre tabla (lista de columnas tipo - NOT NULL,
NOT NULL WHIT DEFAULT).

Las relaciones creadas con la instruccin CREATE TABLE son llamadas tablas base.

NOT NULL: impide la introduccin de valores nulos, y provoca la emisin de un
mensaje de error al momento de tratar de ingresar un valor nulo.

NOT NULL WHIT DAFAULT: permite reemplazar a la ausencia de un valor, por un
valor por omisin, dependiendo del tipo de dato definido para la columna.

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 97 de 127
Cero para los datos numricos.
Blanco para las cadenas de caracteres de longitud fija
Cadena de longitud cero para las cadenas de caracteres de longitud variable

Ejemplo:

CREATE TABLE EMPLEADO(NOMBRE VARCHAR(15) NOT NULL,
APELLIDO VARCHAR(15) NOT NULL,
CI CHAR(9) NOT NULL,
FECHA_N CHAR(9),
DIRECCION VARCHAR(30),
SEXO CHAR(1),
SALARIO INTEGER,
SUPERCI CHAR(9),
DNO INTEGER);

CREATE TABLE DEPARTAMENTO ( DNOMBRE VARCHAR(15) NOT NULL,
DNUMERO INTEGER NOT NULL,
JEFECI CHAR(9),
JEFE_FI CHAR(9));

CREATE TABLE LIBROS (AUTOR CHARACTER(8) NOT NULL,
TITULO CHARACTER(24) NOT NULL,
AO SMALLINT,
GENERO CHAR(8) NOT NULL WHIT DEFAULT,
PRECIO DECIMAL(5,2));

AUTOR TITULO AO GENERO PRECIO
HUGO HERNANI 1830 TEATRO 120.000
HUGO LAS CONTEMPLACIONES 1856 POESIA 78.500
HUGO LOS MISERABLES 1862 ROMANA 148.500
BALZAC EUGENIA GRANDET 1833 ROMANA 100.000
BALZAC PAP GORIOT 1834 ROMANA
DUMAS LOS TRES MOSQUETEROS 1844 ROMANA 80.000
DUMAS VEINTE AOS DESPUS 1845 ROMANA 80.000
DUMAS LA DAMA DE LAS CAMELIAS 1852 TEATRO 110.000
STENDHAL ROJO Y NEGRO 1831 ROMANA 98.500
STENDHAL LA CARTUJA DE PARMA 1839 ROMANA 110.500
FLAUBERT MADAME BOVARY 1857 ROMANA 99.500
VERLAINE POEMAS SATURNIANOS 1866 POESIA 90.500

Tabla LIBROS

4.10.2 Comando DROP TABLE

Si se considera que una tabla no es necesaria en la base de datos relacional, se puede
eliminar utilizando el comando DROP TABLE.

Ejemplo:
DROP TABLE EMPLEADO;

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 98 de 127
4.10.3 Comando ALTER TABLE

Si se necesita adicionar un atributo (columna) a una de las tablas de la base de datos
relacional, utilizamos el comando ALTER TABLE. El nuevo atributo tendr nulos en
todas las tuplas despus que el comando es ejecutado.

Ejemplo:

ALTER TABLE EMPLEADO ADD JOB VARCHAR(12);

4. 11 EJEMPLOS

1. Recuperar la fecha de nacimiento y direccin de la empleada Elena Tapia.

SELECT FECHA_N, DIRECCION
FROM EMPLEADO
WHERE NOMBRE = Elena AND
APELLIDO = Tapia

2. Recuperar el nombre, apellido y salario de todos los empleados que trabajan en
el departamento administrativo.

SELECT NOMBRE, APELLIDO, SALARIO
FROM EMPLEADO, DEPARTAMENTO
WHERE DNO = DNUMERO AND
DNOMBRE = Administrativo

3. Seleccionar toda la informacin de los empleados que trabajan en el
departamento 5.

SELECT *
FROM EMPLEADO
WHERE DNO = 5

4. Seleccionar toda la informacin de los empleados que trabajan en el
departamento de investigacin.

SELECT *
FROM EMPLEADO, DEPARTAMENTO
WHERE DNOMBRE = Investigacin AND
DNUMERO = DNO

5. Listar los diferentes tipos de salarios de los empleados.

SELECT DISTINCT SALARIO
FROM EMPLEADO


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 99 de 127
6. Recuperar el nombre y apellido de los empleados que tienen dependientes.

SELECT DISTINCT NOMBRE, APELLIDO
FROM EMPLEADO, CARGA_F
WHERE CI = ECI

7. Listar el nombre, apellido y la cdula de identidad de todos los empleados que
trabajan en el departamento de investigacin y ganan mas de $ 2500.

SELECT NOMBRE. APELLIDO, SALARIO
FROM EMPLEADO, DEPARTAMENTO
WHERE DNOMBRE = Investigacin AND
SALARIO > 2500 AND
DNO = DNUMERO

8. Recuperar el nombre, direccin y sexo de los jefes de departamento.

SELECT NOMBRE, DIRECCION, SEXO
FROM EMPLEADO, DEPARTAMENTO
WHERE JEFECI = CI

9. Para cada proyecto localizado en Cuenca, listar el nmero de proyecto, el
nmero de departamento que lo controla, incluyendo el apellido del jefe, la
direccin y salario.

SELECT PNUMERO, DNUM, APELLIDO, DIRECCION, SALARIO
FROM EMPLEADO, PROYECTO, DEPARTAMENTO
WHERE PLOCAL = Cuenca AND
DNUM = DNUMERO AND
JEFECI = CI

10. Listar el apellido del empleado y su sexo e incluir el nombre y sexo de su
dependiente.

SELECT APELLIDO, EMPLEADO. SEXO, DEP_NOM, CARGA_F.SEXO
FROM EMPLEADO, CARGA_F
WHERE CI = ECI

11. Listar el nombre del departamento y su localizacin.

SELECT DNOMBRE, DEP_LOCA
FROM DEPARTAMENTO, LOCALIZACIN
WHERE DEPARTAMENTO.DNUMERO = LOCALIZACION.DNUMERO





Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 100 de 127
12. Recuperar el nombre y el apellido de todos los empleados de sexo masculino y
el nombre, apellido y sexo de su supervisor.

SELECT E.NOMBRE, E.APELLIDO, E.SEXO, S.NOMBRE, S.APELLIDO,
S.SEXO
FROM EMPLEADO E, EMPLEADO S
WHERE E.SUPERCI = S.CI AND E.SEXO = M

13. Listar la cdula de identidad y el apellido de todos los empleados que ganan ms
de $ 2500 o han trabajado ms de 20 horas en cada uno de los proyectos.

SELECT CI, APELLIDO
FROM EMPLEADO
WHERE SALARIO > 2500
UNION
SELECT ECI, APELLIDO
FROM TRABAJA_EN, EMPLEADO
WHERE HORAS > 20 AND
CI = ECI

14. Listar todos los nmeros de proyecto que son controlados por el departamento
en donde el empleado Tapia es jefe, o todos los proyecto en donde trabaja el
empleado Tapia.

SELECT PNUMERO
FROM EMPLEADO, DEPARTAMENTO, PROYECTO
WHERE APELLIDO = Tapia AND
CI = JEFECI AND
DNUMERO = DNUM
UNION
SELECT PNO
FROM EMPLEADO, TRABAJA_EN
WHERE APELLIDO = Tapia AND
CI = ECI

15. Listar los nombres de los empleados que trabajan en los departamentos 1, 10 y
30.

SELECT DISTINCT NOMBRE, APELLIDO
FROM EMPLEADO, TRABAJA_EN
WHERE CI = ECI AND PNO IN (1,10,30)

16. Listar el nombre, apellido y la cdula de identidad de todos los empleados cuyos
apellidos estn comprendidos entre los apellidos Mora y Vega.

SELECT NOMBRE, APELLIDO, CI
FROM EMPLEADO
WHERE APELLIDO BETWEEN Mora AND Vega
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 101 de 127


17. Listar el nombre de los empleados que no tienen supervisor.

SELECT NOMBRE, APELLIDO
FROM EMPLEADO
WHERE SUPERCI IS NULL

18. Listar el nombre del empleado, su cedula de identidad, el nmero de proyecto y
las horas trabajadas en cada proyecto. Ordenar de forma ascendente por horas.

SELECT NOMBRE, CI, PNO, HORAS
FROM EMPLEADO, TRABAJA_EN
WHERE CI = ECI
ORDER BY 4

19. Listar los nombres en orden alfabtico de los dependientes de sexo femenino,
seguidos de los dependientes de sexo masculino.

SELECT DEP_NOM, SEXO
FROM CARGA_F
ORDER BY 2, DEP_NOM

20. Recuperar los nombres de los empleados que trabajan en los proyectos
controlados por el departamento de investigacin.

SELECT NOMBRE
FROM EMPLEADO
WHERE CI IN (SELECT ECI
FROM DEPARTAMENTO, PROYECTO, TRABAJA_EN
WHERE DNOMBRE = Investigacin AND
DNUMERO = DNUM AND
PNUMERO = PNO )

21. Recuperar el nombre de los empleados que tiene un dependiente con el mismo
primer nombre y el mismo sexo que el empleado.

Consulta simple:

SELECT NOMBRE. APELLIDO
FROM EMPLEADO E, CARGA_F C
WHERE E.CI = C.ECI AND
E.SEXO = C.SEXO AND
F.NOMBRE = C.DEP_NOM




Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 102 de 127
Con subconsulta:

SELECT NOMBRE, APELLIDO
FROM EMPLEADO
WHERE CI IN (SELECT ECI
FROM CARGA_F
WHERE NOMBRE = DEP_NOM AND
EMPLEADO.SEXO = CARGA_F.SEXO AND
CI = ECI)

22. Seleccionar el nombre y apellido de todos los empleados que tiene nicamente
dependientes de sexo femenino

SELECT NOMBRE, APELLIDO
FROM EMPLEADO, CARGA_F
WHERE CI = ECI AND ECI NOT IN (SELECT ECI
FROM CARGA_F
WHERE SEXO = M)

23. Listar el nombre de los jefes de departamento que tienen dependientes.

Alternativa 1
SELECT NOMBRE, APELLIDO
FROM EMPLEADO, DEPARTAMENTO, CARGA_F
WHERE JEFECI = CI AND
ECI = CI

Alternativa 2

SELECT NOMBRE, APELLIDO
FROM EMPLEADO
WHERE EXIST (SELECT *
FROM DEPARTAMENTO
WHERE CI = JEFECI)
AND
EXIST (SELECT *
FROM CARGA_F
WHERE ECI = CI)

24. Calcular el salario mximo y mnimo de los empleados, el salario total, su
promedio y el nmero total de empleados.

SELECT MAX(SALARIO), MIN(SALARIO), SUM(SALARI0),
AVG(SALARIO), COUNT(CI)
FROM EMPLEADO



Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 103 de 127
25. Para el departamento de Investigacin, calcular el salario mximo y mnimo de
los empleados, el salario total y su promedio y el nmero total de empleados.

SELECT MAX(SALARIO), MIN(SALARIO), SUM(SALARI0),
AVG(SALARIO), COUNT(CI)
FROM EMPLEADO, DEPARTAMENTO
WHERE DNUMERO = DNO AND DNOMBRE = Investigacin

26. Para cada departamento calcular el salario mximo y mnimo de los empleados,
el salario total y su promedio y el nmero total de empleados.

SELECT DNO, MAX(SALARIO), MIN(SALARIO), SUM(SALARI0),
AVG(SALARIO), COUNT(CI)
FROM EMPLEADO
GROUP BY DNO

27. Para cada departamento calcular el salario mximo y mnimo de los empleados,
el salario total y su promedio, y el nmero total de empleados. Siempre que el
departamento tenga ms de 2 empleados.

SELECT DNO, MAX(SALARIO), MIN(SALARIO), SUM(SALARI0),
AVG(SALARIO), COUNT(CI)
FROM EMPLEADO
GROUP BY DNO
HAVING COUNT(CI) > 2


28. Obtener el nmero total de horas trabajadas por cada empleado.

SELECT NOMBRE, APELLIDO, SUM(HORAS)
FROM EMPLEADO, TRABAJA_EN
WHERE CI = ECI
GROUP BY ECI

29. Determinar el nmero total de horas trabajadas por los empleados en cada
proyecto.

SELECT PNOMBRE, PNUMERO, SUM(HORAS)
FROM TRABAJA_EN, PROYECTO
WHERE PNUMERO = PNO
GROUP BY PNO

30. Determinar el nmero de dependientes de cada empleado.

SELECT APELLIDO, COUNT(ECI)
FROM EMPLEADO, CARGA_F
WHERE CI = ECI
GROUP BY ECI
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 104 de 127

31. Determinar el nmero de salarios diferentes de los empleados.

SELECT COUNT (DISTINCT SALARIO)
FROM EMPLEADO

32. Listar el nombre de los empleados que tienen 2 o ms dependientes.

SELECT NOMBRE, APELLIDO
FROM EMPLEADO, CARGA_F
WHERE CI = ECI
GROUP BY ECI
HAVING COUNT(ECI) > 2

33. Para cada proyecto con ms de dos empleados, recuperar el nombre y nmero de
proyecto y los empleados que trabajan en el proyecto.

SELECT PNUMERO, PNOMBRE, COUNT(CI)
FROM PROYECTO, TRABAJA_EN
WHERE PNO = PNUMERO
GROUP BY PNUMERO, PNOMBRE
HAVING COUNT(CI) > 2

34. Listar el nombre de departamento, nmero de empleados y salario promedio por
departamento, de todos los departamentos en donde el promedio del salario de
los empleados es menor a $ 3000.

SELECT DNOMBRE, COUNT(CI), AVG(SALARIO)
FROM EMPLEADO, DEPARTAMENTO
WHERE DNO = DNUMERO
GROUP BY DNO
HAVING AVG(SALARIO) < 3000

35. Cuantos supervisores hay en la compaa.

SELECT COUNT (DISTINCT SUPERCI)
FROM EMPLEADO

36. Determinar el nombre del empleado que tiene como dependiente a Miguel.

SELECT NOMBRE, APELLIDO
FROM EMPLEADO
WHERE CI = (SELECT ECI
FROM CARGA_F
WHERE DEP_NOM = Miguel)

(Esta instruccin tal como est concebida se ejecutar siempre y cuando exista
un slo dependiente de nombre Miguel).
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 105 de 127


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. Listar el nombre de los empleados que tiene dependientes.

Alternativa 1

SELECT NOMBRE
FROM EMPLEADO
WHERE CI IN (SELECT ECI
FROM CARGA_F)

Alternativa 2

SELECT NOMBRE
FROM EMPLEADO
WHERE EXISTS (SELECT *
FROM CARGA_F)


39. Lista el nombre de los empleados que no tiene dependiente

Alternativa 1

SELECT NOMBRE
FROM EMPLEADO
WHERE CI NOT IN (SELECT ECI
FROM CARGA_F)

Alternativa 2


SELECT NOMBRE
FROM EMPLEADO
WHERE NOT EXISTS (SELECT *
FROM CARGA_F )



Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 106 de 127
40. Listar el nombre de los departamentos que tienen 3 o ms empleados

SELECT NOMBRE
FROM DEPARTAMENTO
WHERE DNUMERO IN (SELECT DNO
FROM EMPLEADO
GROUP BY DNO
HAVING COUNT(DNO) > = 3 )

41. Listar el nombre de los empleados que tienen un salario mayor a todos los
salarios de los empleados del departamento 5

SELECT NOMBRE
FROM EMPELADO
WHERE SALARIO > ALL (SELECT SALARIO
FROM EMPLEADO
WHERE DNO = 5)

42. Listar el nombre de los empleados que tienen un salario mayor a al menos un
salarios se los empleados del departamento 3

SELECT NOMBRE
FROM EMPELADO
WHERE SALARIO > ANY (SELECT SALARIO
FROM EMPLEADO
WHERE DNO = 3)

43. Listar el salario promedio nombre y el salario promedio

SELECT NOMBRE
FROM EMPLEADO
WHERE SALARIO > (SELECT AVG (SALARIO)
FROM EMPLEADO, DEPARTAMENTO
WHERE DNO = DNUMERO
GROUP BY DNO
HAVING DNOMBRE = "ADMINISTRATIVO")

44. Listar los departamentos donde todos los empleados gana mas de 3000

Alternativa 1

SELECT DNOMBRE
FROM DEPARTAMENTO, EMPLEADO
WHERE DNO = DNUMERO AND
DNO NOT IN (SELECT DNO
FROM EMPLEADO
WHERE SALARIO < 3000)

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 107 de 127
Alternativa 2

SELECT DNUMERO, DNOMBRE
FROM DEPARTAMENTO
WHERE DNUMERO IN (SELECT DNO
FROM EMPLEADO
GROUP BY DNO
HAVING MIN(SALARIO) > 3000)

45. Listar el nombre de los empleados cuyo salario es mayor al promedio del salario
de todos los empleados.

SELECT NOMBRE
FROM EMPLEADO
WHERE SALARIO > (SELECT AVG(SALARIO)
FROM EMPLEADO)

46. Listar el nombre de los empleados que tiene un salario mayor al promedio del
salario de los empleados del departamento Administrativo

SELECT NOMBRE
FROM EMPLEADO
WHERE SALARIO > (SELECT AVG(SALARIO)
FROM EMPLEADO, DEPARTAMENTO
WHERE DNOMBRE = 'ADMINISTRATIVO' AND
DNO = DNUMERO)

47. Calcular la nota final de cada uno de los estudiantes (la nota final es igual al
promedio de los dos aportes ms el examen final).

SELECT ESTUDIANTE.NOMBRE, APELLIDO, MATERIA.NOMBRE,
(APORTE1 + APORTE2)/2 + FINAL
FROM CALIFICACIN, ESTUDIANTE, MATERIA
WHERE ESTUDIANTE.CI = CALIFICACIN.CI AND
MATERIA.CODIGO = CALIFICACIN.CODIGO

48. Para que los estudiantes aprueben una materia deben tener una nota final igual o
mayor a 14, se pide, listar los nombres de los estudiantes, las materias
reprobadas y su nota final. (nota final = (aporte1 + aporte2)/2 + final).

SELECT ESTUDIANTE.NOMBRE, APELLIDO, MATERIA.NOMBRE,
(APORTE1 + APORTE2)/2 + FINAL
FROM CALIFICACIN, ESTUDIANTE, MATERIA
WHERE ESTUDIANTE.CI = CALIFICACIN.CI AND
MATERIA.CODIGO = CALIFICACIN.CODIGO AND
(APORTE1 + APORTE2)/2 + FINAL < 14

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 108 de 127
49. Listar el total de crditos aprobados por el estudiante Barrera con cdula de
identidad 1101775849.

SELECT SUM(N_CREDITOS)
FROM MATERIA, CALIFICACIN
WHERE CI = 1101775849 AND
(APORTE1 + APORTE2)/2 + FINAL >= 14 AND
MATERIA.CODIGO = CALIFICACIN.CODIGO

50. Determinar el nmero de alumnos que estudian la materia de Sistemas Expertos.

SELECT COUNT (CALIFICACIN.CODIGO)
FROM CALIFICACIN, MATERIA
WHERE NOMBRE = 'Bases de Datos' AND MATERIA.CODIGO =
CALIFICACION.CODIGO


51. Calcular el promedio de las notas de cada una de las materias.

SELECT MATERIA.NOMBRE, AVG(APORTE1), AVG(APORTE2),
AVG(FINAL)
FROM CALIFICACIN, MATERIA
WHERE MATERIA.CODIGO = CALIFICACIN.CODIGO
GROUP BY MATERIA.CODIGO

52. Calcular el promedio de notas de cada uno de los estudiantes.

SELECT NOMBRE, APELLIDO, AVG(APORTE1), AVG(APORTE2),
AVG(FINAL)
FROM ESTUDIANTE, CALIFICACIN
WHERE ESTUDIANTE.CI = CALIFICACIN.CI
GROUP BY CALIFICACIN.CI
















Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 109 de 127
CAPITULO 5

DEPENDENCIA FUNCIONAL Y NORMALIZACION DE BASES
DE DATOS RELACIONALES

En este captulo nos interesaremos en las operaciones de mantenimiento de una tabla:
insertar, modificar y eliminar un dato, estas operaciones de mantenimiento pueden ser el
origen de errores si las tablas relacionales no son bien construidas.

Se ver las dependencias funcionales, que es la normalizacin de tablas y que aportan
las tres primeras formas normales.

5.1 EJEMPLOS DE ANOMALAS EN LA ACTUALIZACIN.

Para ilustrar las operaciones de actualizacin o mantenimiento de tablas y los problemas
que se presentan al utilizar estas instrucciones: INSERT, UPDATE y DELETE,
definimos la siguiente tabla OBRAS:

CREATE TABLE OBRAS
(AUTOR CHR(8) NOT NULL WITH DEFAULT;
TITULO CHR(24) NOT NULL WITH DEFAULT;
FE_NA INT NOT NULL WITH DEFAULT;
SALA INT;
ESTANTE INT) ;

AUTOR TITULO FE_NA SALA ESTANTE

Tabla: OBRAS

Esta tabla contiene los datos relativos a los autores (nombre del autor y el ao de
nacimiento), el ttulo de las obras escritas por estos autores, as como, la sala y el estante
de la biblioteca donde se encuentran ubicadas las obras organizadas por autor.

Adicionalmente trabajaremos con la estructura y los datos de las siguientes tablas
(LIBROS y AUTORES).

AUTOR TITULO AO GENERO PRECIO
HUGO HERNANI 1830 TEATRO 120,000
HUGO LAS CONTEMPACIONES 1856 POESIA 78,500
HUGO LOS MISERABLES 1862 ROMANA 148,500
BALZAC EUGENIA GRANDET 1833 ROMANA 100,000
BALZAC PAP GORIOT 1834 ROMANA
DUMAS LOS TRES MOSQUETEROS 1844 ROMANA 80,000
DUMAS VEINTE AOS DESPUES 1845 ROMANA 80,000
DUMAS LA DAMA DE LAS CAMELIAS 1852 TEATRO 110,000
STENDHAL ROJO Y NEGRO 1831 ROMANA 98,500
STENDHAL LA CARTUJA DE PARMA 1839 ROMANA 110,500
FLAUBERT MADAME BOVARY 1857 ROMANA 99,500
VERLAINE POEMAS SATURNIANOS 1866 POESIA 90,500
Tabla: LIBROS
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 110 de 127
AUTOR FE_NA LUGAR SALA ESTANTE
HUGO 1802 BESANCON 2 3
BALZAC 1799 TOURS 1 1
DUMAS 1802 VILLERS 1 1
DUMAS 1824 PARIS 1 1
STENDHAL 1783 GRENOBLE 3 5
FLAUBERT 1821 ROUEN 1 2
VERLAINE 1844 METZ 3 6
ZOLA 1840 PARIS 3 6
RIMBAUD 1854 CHARLEVILLE 3 5
SAND 1804 PARIS 3 5

Tabla: AUTORES

En los ejemplos que se desarrollan a continuacin, se detallan las diferentes anomalas
que pueden presentarse al utilizar los comandos de actualizacin de datos.

5.1.1 INSERT

Se ha visto que la instruccin INSERT permite insertar informacin en una tabla
previamente creada, por medio de la opcin VALUES. Es igualmente posible incluir un
subselect en la instruccin INSERT, para poder insertar en una tabla valores
provenientes de otra tabla.

INSERT INTO nombre-tabla (nombre-columnas,)
SELECT nombre-columna FROM nombre-tabla.

Ejemplo 5.1

Inicializar la tabla OBRAS (considerada como vaca) a partir de la tabla LIBROS y
listar la tabla despus de inicializar.

INSERT INTO OBRAS (AUTOR, TITULO)
SELECT AUTOR, TITULO, FROM LIBROS;

SELECT * FROM OBRAS;


AUTOR TITULO FE_NA SALA ESTANTE
HUGO HERNANI 0 ------------ ------------
HUGO LAS CONTEMPLACIONES 0 ------------ ------------
HUGO LOS MISERABLES 0 ------------ ------------
BALZAC EUGENIA GRANDET 0 ------------ ------------
BALZAC PAP GORIOT 0 ------------ ------------
DUMAS LOS TRES MOSQUETEROS 0 ------------ ------------
DUMAS VEINTE AOS DESPUES 0 ------------ ------------
DUMAS LA DAMA DE LAS CAMELIAS 0 ------------ ------------
STENDHAL ROJO Y NEGRO 0 ------------ ------------
STENDHAL LA CARTUJA DE PARMA 0 ------------ ------------
FLAUBERT MADAME BOVARY 0 ------------ ------------
VERLAINE POEMAS SATURNIANOS 0 ------------ ------------
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 111 de 127


La columna FE_NA, SALA y ESTANTE no figuran en la orden INSERT: la fecha de
nacimiento se coloca en cero, puesto que, su formato est especificado como NOT
NULL WITH DEFAULT, mientras que, los nmeros de sala y estante son puestos en
NULL.

Ejemplo 5.2:

Inicializar la tabla OBRAS (considerada como vaca) a partir de la tabla AUTORES y
listar despus de la inicializacin.

INSERT INTO OBRAS (AUTOR, FE_NA, SALA, ESTANTE)
SELECT AUTOR, FE_NA, SALA, ESTANTE FROM AUTORES;
SELECT * FROM OBRAS;

AUTOR TITULO FE_NA SALA ESTANTE
HUGO 1802 2 3
BALZAC 1799 1 1
DUMAS 1802 1 1
DUMAS 1824 1 1
STENDHAL 1783 3 5
FLAUBERT 1821 1 2
VERLAINE 1844 3 6
ZOLA 1840 3 6
RIMBAUD 1854 3 5
SAND 1804 3 5

Los ttulos no figuran en la orden INSERT; el contenido de la columna TITULO es
blanco en cada lnea, puesto que, se indica la opcin NOT NULL WITH DEFAULT.

Ninguna de las dos operaciones descritas en los ejemplos anteriores permiten crear
completamente la tabla OBRAS.


5.1.2 UPDATE

La instruccin UPDATE modifica el valor de los datos de las columnas de una o varias
lneas de una tabla.

Ejemplo 5.3:

Actualizar la tabla OBRAS obtenida en el ejemplo 1, reemplazando el ao de
nacimiento por la constante 1800.

UPDATE OBRAS
SET FE_NA = 1800;
SELECT *FROM OBRAS;


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 112 de 127
AUTOR TITULO FE_NA SALA ESTANTE
HUGO HERNANI 1800 ------------ ------------
HUGO LAS CONTEMPLACIONES 1800 ------------ ------------
HUGO LOS MISERABLES 1800 ------------ ------------
BALZAC EUGENIA GRANDET 1800 ------------ ------------
BALZAC PAP GORIOT 1800 ------------ ------------
DUMAS LOS TRES MOSQUETEROS 1800 ------------ ------------
DUMAS VEINTE AOS DESPUES 1800 ------------ ------------
DUMAS LA DAMA DE LAS CAMELIAS 1800 ------------ ------------
STENDHAL ROJO Y NEGRO 1800 ------------ ------------
STENDHAL LA CARTUJA DE PARMA 1800 ------------ ------------
FLAUBERT MADAME BOVARY 1800 ------------ ------------
VERLAINE POEMAS SATURNIANOS 1800 ------------ ------------


Ejemplo 5.4:

Actualizar la tabla OBRAS obtenida en el ejercicio 3, reemplazando el ao de
nacimiento de Victor Hugo por 1802 y colocando para la SALA y ESTANTE sus
valores correspondientes.

UPDATE OBRAS
SET FE_NA = 1802,
SALA = 2,
ESTANTE = 3
WHERE AUTOR = 'HUGO';

SELECT * FROM OBRAS;

AUTOR TITULO FE_NA SALA ESTANTE
HUGO HERNANI 1802 2 3
HUGO LAS CONTEMPLACIONES 1802 2 3
HUGO LOS MISERABLES 1802 2 3
BALZAC EUGENIA GRANDET 1800 ------------ ------------
BALZAC PAP GORIOT 1800 ------------ ------------
DUMAS LOS TRES MOSQUETEROS 1800 ------------ ------------
DUMAS VEINTE AOS DESPUES 1800 ------------ ------------
DUMAS LA DAMA DE LAS CAMELIAS 1800 ------------ ------------
STENDHAL ROJO Y NEGRO 1800 ------------ ------------
STENDHAL LA CARTUJA DE PARMA 1800 ------------ ------------
FLAUBERT MADAME BOVARY 1800 ------------ ------------
VERLAINE POEMAS SATURNIANOS 1800 ------------ ------------

Ejemplo 5.5:

Actualizar la tabla OBRAS obtenida en el ejemplo 4, reemplazando el ao de
nacimiento, la sala y el estante por los valores 1799, 1 y 1 respectivamente, de los
autores comprendidos entre BALZAC y DUMAS.


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 113 de 127

UPDATE OBRAS
SET FE_NA = 1799,
SALA = 1,
ESTANTE = 1
WHERE AUTOR BETWEEN 'BALZAC' AND 'DUMAS';

AUTOR TITULO FE_NA SALA ESTANTE
HUGO HERNANI 1802 2 3
HUGO LAS CONTEMPLACIONES 1802 2 3
HUGO LOS MISERABLES 1802 2 3
BALZAC EUGENIA GRANDET 1799 1 1
BALZAC PAP GORIOT 1799 1 1
DUMAS LOS TRES MOSQUETEROS 1799 1 1
DUMAS VEINTE AOS DESPUES 1799 1 1
DUMAS LA DAMA DE LAS CAMELIAS 1799 1 1
STENDHAL ROJO Y NEGRO 1800 ------------ ------------
STENDHAL LA CARTUJA DE PARMA 1800 ------------ ------------
FLAUBERT MADAME BOVARY 1800 ------------ ------------
VERLAINE POEMAS SATURNIANOS 1800 ------------ ------------

En este ltimo ejemplo se puede apreciar lo siguiente:

1. Si los datos de la SALA y ESTANTE son correctos para BALZAC y DUMAS, slo
la fecha de nacimiento de BALZAC est de acuerdo a la realidad, representada en la
tabla AUTORES.

2. Comparando los datos de la tabla AUTORES y los de la tabla OBRAS, se constata
que existe dos veces el nombre DUMAS en la tabla AUTORES, con dos fechas de
nacimiento diferentes. Esto se debe a que existen dos autores diferentes: Alejandro
DUMAS padre y Alejandro DUMAS hijo; si vamos a corregir la actualizacin, es
necesario ser capaces de distinguir los dos autores.

3. La tabla AUTORES y la tabla OBRAS en el estado actual presentan distorsiones,
afectando la coherencia de los datos; por ejemplo, la fecha de nacimiento de
VERLAINE es 1844 en la tabla AUTORES y 1800 en la tabla OBRAS.

La operacin de actualizacin no asegura implcitamente la integridad de los
datos, por lo cual en los ejemplos siguientes trataremos de remediar provisionalmente
estos inconvenientes con otras rdenes de UPDATE.

Ejemplo 5.6.

Actualizar la tabla OBRAS obtenida en el ejemplo 5, diferenciando DUMAS padre y
DUMAS hijo, corrigiendo la fecha de nacimiento.

UPDATE OBRAS
SET AUTOR = 'DUMAS H' , FE_NA = 1824
WHERE AUTOR = 'DUMAS' AND TITULO = 'LA DAMA DE LAS CAMELIAS';

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 114 de 127

UPDATE OBRAS
SET AUTOR = 'DUMAS P' , FE_NA = 1802
WHERE AUTOR = 'DUMAS' ;


AUTOR TITULO FE_NA SALA ESTANTE
HUGO HERNANI 1802 2 3
HUGO LAS CONTEMPLACIONES 1802 2 3
HUGO LOS MISERABLES 1802 2 3
BALZAC EUGENIA GRANDET 1799 1 1
BALZAC PAP GORIOT 1799 1 1
DUMAS P LOS TRES MOSQUETEROS 1802 1 1
DUMAS P VEINTE AOS DESPUES 1802 1 1
DUMAS F LA DAMA DE LAS CAMELIAS 1824 1 1
STENDHAL ROJO Y NEGRO 1800 ------------ ------------
STENDHAL LA CARTUJA DE PARMA 1800 ------------ ------------
FLAUBERT MADAME BOVARY 1800 ------------ ------------
VERLAINE POEMAS SATURNIANOS 1800 ------------ ------------


5.1.3 DELETE

La instruccin DELETE permite suprimir lneas de una tabla. Su formato general es:

Ejemplo 5.7:

Anular, en la tabla OBRAS obtenida en el ejemplo 6, las lneas correspondientes a los
autores con fecha de nacimientos de 1800.

DELETE FROM OBRAS
WHERE FE_NA = 1800;


AUTOR TITULO FE_NA SALA ESTANTE
HUGO HERNANI 1802 2 3
HUGO LAS CONTEMPLACIONES 1802 2 3
HUGO LOS MISERABLES 1802 2 3
BALZAC EUGENIA GRANDET 1799 1 1
BALZAC PAP GORIOT 1799 1 1
DUMAS P LOS TRES MOSQUETEROS 1802 1 1
DUMAS P VEINTE AOS DESPUES 1802 1 1
DUMAS F LA DAMA DE LAS CAMELIAS 1824 1 1

Ejemplo 5.8:

Anular en la tabla OBRAS obtenida en el ejemplo 7, las lneas correspondientes a
DUMAS padre e hijo.


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 115 de 127
DELETE FROM OBRAS
WHERE AUTOR LIKE 'DUMAS%';


AUTOR TITULO FE_NA SALA ESTANTE
HUGO HERNANI 1802 2 3
HUGO LAS CONTEMPLACIONES 1802 2 3
HUGO LOS MISERABLES 1802 2 3
BALZAC EUGENIA GRANDET 1799 1 1
BALZAC PAP GORIOT 1799 1 1


5.2 DEPENDENCIAS FUNCIONALES

La teora de la normalizacin se basa en restricciones definidas sobre los atributos de
una relacin o tabla que son conocidas como dependencias.

5.2.1 DEPENDENCIA FUNCIONAL

Sea el esquema relacional R definido sobre el conjunto de atributos A y sea X e Y
subconjuntos de A llamados descriptores. Se dice que Y depende funcionalmente de X
o que X determina a Y, que se representa X Y, si y solo si , cada valor de X tiene
asociado en todo momento un nico valor de Y.

Ejemplo: cod_libro Ttulo, el cdigo del libro determina el ttulo. El cod_libro es el
implicante y ttulo es el implicado. Siempre el implicado es un hecho (una informacin)
acerca del implicante.

Una dependencia funcional es una relacin entre uno a ms atributos. Supongamos que
si se da el valor de un atributo se puede obtener (o buscar) el valor de otro. Si se conoce
el valor de NmeroDeCuentaDeCliente, se puede hallar el valor de
EstadoDeCuentaDeCliente. Si esto es cierto, se puede decir que
EstadoDeCuenctaDeCliente es funcionalmente dependiente de
NmeroDeCuentaDeCliente. En forma general, si se conoce el valor de X, se puede
obtener el valor de Y.

Las ecuaciones pueden representar dependencia funcional. Si se sabe el precio de un
artculo y la cantidad de artculos comprados, se puede calcular el precio total de esos
artculos.

PrecioTotal = PrecioDelArtculo * Cantidad

En este caso se puede decir que PrecioTotal es dependiente del PrecioDelArtculo y
Cantidad.

Las dependencias funcionales entre atributos de una tabla no involucran ecuaciones.

Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 116 de 127
A continuacin, mediante un ejemplo se comenta la definicin de dependencia
funcional.

La identificacin de un estudiante es su cdula de identidad (CI) y suponemos que cada
alumno tiene una y slo una especialidad. En este caso dado el valor de la CI, se puede
conocer la especialidad del estudiante y as la especialidad depende de la CI.

La dependencia funcional se escribe usando la siguiente notacin:

CI Especialidad.

La expresin se lee como CI determina funcionalmente Especialidad o Especialidad
es dependiente de CI. El atributo al lado izquierdo de la flecha se denomina
determinante.

Si CI determina Especialidad, un valor particular de CI har pareja slo con un valor de
Especialidad. En sentido inverso, un valor de Especialidad puede hacer pareja con uno
o ms valores diferentes de CI.

CI ESPECIALIDAD
0123456789 Contabilidad
9876543210 Economa
1122334455 Informtica
9988776655 Contabilidad
4445556666 Informtica
8888999911 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
nmero 0123456789 siempre har pareja con el valor de la especialidad Contabilidad.
Sin embargo, lo opuesto no es cierto, pues la Especialidad Contabilidad puede hacer
pareja con varios valores de CI, como en este caso har pareja adems con los
estudiantes que tienen la CI nmero: 9988776655 y 8888999911.

Se puede decir que la relacin de CI con Especialidad es muchos a uno (N:1). En
general se dice que si A determina a B, la relacin de los valores de A a B es de N:1.

La dependencia funcional puede involucrar grupos de atributos. Considere la tabla
CALIFICACIN (CI, Materia, calificacin). La combinacin de una CI y una materia
determinan una calificacin, una dependencia funcional que se escribe as:

(CI, materia) Calificacin

Consideremos los dos siguientes casos:

Si X (Y , Z) entonces X Y y X Z


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 117 de 127
Por ejemplo, si CI (Nombre_Estudiante, Especialidad), entonces
CI Nombre_estudiante) y CI Especialidad.


Si (X , Y) Z entonces en general no es cierto que X Y o Y Z

Por ejemplo, si (CI, Materia) Calificacin, entonces CI por si mismo no
puede determinar Calificacin.

5.2.2 DEPENDENCIA FUNCIONAL TRANSITIVA

El atributo Y de la relacin R tiene una dependencia transitiva del atributo X de R a
travs de un tercero Z, si se verifica:

- Los tres atributos son disjuntos

- X Z, Z y, Z X

Por tanto X Z

Ejemplo: LIBRO_ED (Codlibro, Editorial. Pas)

La dependencia entre codlibro y pas es transitiva, a travs de editorial. Intuitivamente
se interpreta como que PAIS es una informacin del libro, pero indirectamente, ya que
es una informacin de EDITORIAL y sta a su vez de LIBRO.

5.3 NORMALIZACIN DE BASES DE DATOS

Las operaciones INSERT; UPDATE y DELETE, permiten efectuar todas las
operaciones necesarias para el mantenimiento de una tabla, sin embargo, la coherencia
de los datos no puede ser asegurada si no se toman ciertas precauciones al momento de
la concepcin de la tabla.

En los ejemplos anteriores se pudo poner en evidencia las anomalas que se presentan en
el mantenimiento de las tablas. En este captulo veremos los procedimientos de
normalizacin de tablas, los mismos que permiten evitar estas anomalas y obtener
actualizaciones coherentes.

La normalizacin es un proceso de optimizacin del diseo de la estructura de una Base
de Datos, que tiene por objeto reducir al mnimo las duplicaciones de datos
innecesarios, de modo que las nicas duplicaciones existentes sean las debidas al uso de
Claves Forneas. La normalizacin se realiza a travs de Formas Normales, e implican
la descomposicin de una relacin o tabla en un conjunto de tablas equivalentes, que
carezcan de las anomalas que presentaba la inicial y contenga la misma informacin.

Por Formas Normales se entiende un conjunto de reglas o criterios cuyo cumplimiento
garantiza un diseo correcto de la Base de Datos, y la no existencia de duplicaciones
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 118 de 127
innecesarias. Una tabla est en una determinada forma normal si satisface un cierto
conjunto de restricciones.

Las anomalas en una relacin se producen en proceso de actualizacin y no en procesos
de consulta. La normalizacin penaliza las consultas, al disminuir la eficiencia, ya que
la normalizacin aumenta el nmero de relaciones presentes en la Base de Datos, por lo
que una determinada consulta puede llevar consigo el acceso a varias tablas, lo que
aumenta el costo de sta.

La normalizacin se lleva a cabo por cuatro razones:

- Estructurar los datos de tal manera que se pueda presentar las relaciones pertinentes
entre los datos.

- Permite la recuperacin sencilla de los datos en respuesta a las solicitudes de
consulta y reportes.

- Simplifica el mantenimiento (actualizar, borrar, insertar) de los datos.

- Reduce la necesidad de reestructurar o reorganizar los datos cuando surjan nuevas
aplicaciones.

Para ilustrar los procedimientos de normalizacin, partiremos de la tabla OBRAS que
fue creada en el apartado 5.1 con los siguientes datos:

AUTOR TITULO FE_NA SALA ESTANTE
HUGO HERNANI 1802 2 3
HUGO LAS CONTEMPLACIONES 1802 2 3
HUGO LOS MISERABLES 1802 2 3
BALZAC EUGENIA GRANDET 1799 1 1
BALZAC PAP GORIOT 1799 1 1
DUMAS LOS TRES MOSQUETEROS 1802 1 1
DUMAS VEINTE AOS DESPUES 1802 1 1
DUMAS LA DAMA DE LAS CAMELIAS 1824 1 1
STENDHAL ROJO Y NEGRO 1783 3 5
STENDHAL LA CARTUJA DE PARMA 1783 3 5
FLAUBERT MADAME BOVARY 1821 1 2
VERLAINE POEMAS SATURNIANOS 1844 3 6
ZOLA GERMINAL 1840 3 6
RIMBAUD UNA ESTANCIA EN EL INFIERNO 1854 3 5
SAND LA CHARCA DEL DIABLO 1804 3 5

Tabla: OBRAS

5.3.1 PRIMERA FORMA NORMAL (FN1)

Se dice que una tabla est en primera forma normal cuando sta posee nicamente datos
elementales para cada columna en cada lnea, es decir, para cada lnea el valor
almacenado para cada columna es nico (atmico).
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 119 de 127

La primera forma normal se alcanza cuando se quitan todos los grupos de datos de
repeticin, es decir, la aparicin repetida de un dato o grupos de datos dentro de un
registro.

De acuerdo a esta definicin, la tabla OBRAS se encuentra en Primera Forma Normal.

Sin embargo, esta tabla no ofrece todas las garantas de integridad cuando se realizan
diversas operaciones de actualizacin, como se ilustran en los diferentes casos de
anomalas que se detalla a continuacin.

- Anomala con DELETE.

Ejemplo 5.9:

Anular, en la tabla OBRAS, las lneas relativas a las obras escritas por el autor HUGO.

DELETE FROM OBRAS WHERE AUTOR = 'HUGO'


AUTOR TITULO FE_NA SALA ESTANTE
BALZAC EUGENIA GRANDET 1799 1 1
BALZAC PAP GORIOT 1799 1 1
DUMAS LOS TRES MOSQUETEROS 1802 1 1
DUMAS VEINTE AOS DESPUES 1802 1 1
DUMAS LA DAMA DE LAS CAMELIAS 1824 1 1
STENDHAL ROJO Y NEGRO 1783 3 5
STENDHAL LA CARTUJA DE PARMA 1783 3 5
FLAUBERT MADAME BOVARY 1821 1 2
VERLAINE POEMAS SATURNIANOS 1844 3 6
ZOLA GERMINAL 1840 3 6
RIMBAUD UNA ESTANCIA EN EL INFIERNO 1854 3 5
SAND LA CHARCA DEL DIABLO 1804 3 5

Anulando la informacin relativa a las obras escritas por Victo HUGO, se pierde
adems la fecha de nacimiento de este autor, informacin que es independiente de las
obras.

- Anomalas con INSERT

Ejemplo 5.10

Introducir en la tabla OBRAS, el libro 'EL CORONEL CHABERT' del autor BALZAC.

INSERT INTO OBRAS (AUTOR, TITULO)
VALUES ( ' BALZAC ' , ' EL CORONEL CHABERT ' );




Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 120 de 127
AUTOR TITULO FE_NA SALA ESTANTE
BALZAC EUGENIA GRANDET 1799 1 1
BALZAC PAP GORIOT 1799 1 1
DUMAS LOS TRES MOSQUETEROS 1802 1 1
DUMAS VEINTE AOS DESPUES 1802 1 1
DUMAS LA DAMA DE LAS CAMELIAS 1824 1 1
STENDHAL ROJO Y NEGRO 1783 3 5
STENDHAL LA CARTUJA DE PARMA 1783 3 5
FLAUBERT MADAME BOVARY 1821 1 2
VERLAINE POEMAS SATURNIANOS 1844 3 6
ZOLA GERMINAL 1840 3 6
RIMBAUD UNA ESTANCIA EN EL INFIERNO 1854 3 5
SAND LA CHARCA DEL DIABLO 1804 3 5
BALZAC EL CORONEL CHABERT 0 --------- ----------

La orden INSERT no obliga a ingresar todos los valores relativos a todas las columnas
de la tabla, lo que puede ocasionar que se ingrese una incoherencia, la fecha de
nacimiento de BALZAC tiene un valor diferente. De igual manera puede suceder con
los valores correspondientes a la ubicacin de las obras de este autor en los atributos
sala y estante.

- Anomalas con UPDATE

Ejemplo 5.11

Dar mantenimiento a la fecha de nacimiento, la sala y el estante del libro "EL
CORONEL CHABERT" del autor BALZAC.

UPDATE OBRAS
SET FE_NA = 1800, SALA = 2 , ESTANTE = 2
WHERE AUTOR = ' BALZAC ' AND TITULO LIKE 'EL CORONEL CHABERT' ;


AUTOR TITULO FE_NA SALA ESTANTE
BALZAC EUGENIA GRANDET 1799 1 1
BALZAC PAP GORIOT 1799 1 1
DUMAS LOS TRES MOSQUETEROS 1802 1 1
DUMAS VEINTE AOS DESPUES 1802 1 1
DUMAS LA DAMA DE LAS CAMELIAS 1824 1 1
STENDHAL ROJO Y NEGRO 1783 3 5
STENDHAL LA CARTUJA DE PARMA 1783 3 5
FLAUBERT MADAME BOVARY 1821 1 2
VERLAINE POEMAS SATURNIANOS 1844 3 6
ZOLA GERMINAL 1840 3 6
RIMBAUD UNA ESTANCIA EN EL INFIERNO 1854 3 5
SAND LA CHARCA DEL DIABLO 1804 3 5
BALZAC EL CORONEL CHABERT 1800 2 2


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 121 de 127
En este ejemplo, se introduce voluntariamente valores errneos en una lnea. La
instruccin UPDATE no controla la presencia de datos relativos a BALZAC que se
encuentran en otra lnea de la tabla.

Para corregir el error, podemos realizar la siguiente instruccin:

UPDATE OBRAS
SET FE_NA = 1799 , SALA = 1 , ESTANTE = 1
WHERE AUTOR = ' BALZAC ' ;


Pero para determinar los valores correctos del autor BALZAC, debemos recorrer toda la
tabla, lo que puede ocasionar problemas de rendimiento en una tabla grande.


Causas y soluciones:

Porqu esas anomalas ?. Por que la tabla tal como est, no es mas que una
yuxtaposicin de columnas. Analizando el contenido de la tabla OBRAS, podemos
concluir lo siguiente:

o Existen datos que estn relacionados nicamente a los autores (AUTOR, FE-NA,
SALA, ESTANTE), considerando que las obras se guardan por autor.

o Existen datos que estn relacionados nicamente a las obras (AUTOR, TITULO).

Adems, los autores no son correctamente identificados. Hemos visto que el nombre
DUMAS corresponde a dos autores diferentes; Alejandro DUMAS padre y Alejandro
DUMAS hijo, cada uno tiene una fecha de nacimiento diferente.

Para solucionar el inconveniente, partiendo de la tabla OBRAS, podemos crear dos
nuevas tablas como se mostrar en los siguientes ejemplos.

Ejemplo 5.12

A partir de la tabla OBRAS, en la que se distingue DUMAS P y DUMAS H, crear una
tabla LIBROS1 que contenga los datos relativos a libros.

CREATE TABLE LIBROS1
(AUTOR CHAR(8) NOT NULL;
TITULO CHAR(24) NOT NULL) ;

INSERT INTO LIBROS1 (AUTOR, TITULO)
SELECT DISTINCT AUTOR, TITULO FROM OBRAS;






Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 122 de 127
AUTOR TITULO
HUGO HERNANI
HUGO LAS CONTEMPLACIONES
HUGO LOS MISERABLES
BALZAC EUGENIA GRANDET
BALZAC PAP GORIOT
DUMAS P LOS TRES MOSQUETEROS
DUMAS P VEINTE AOS DESPUES
DUMAS F LA DAMA DE LAS CAMELIAS
STENDHAL ROJO Y NEGRO
STENDHAL LA CARTUJA DE PARMA
FLAUBERT MADAME BOVARY
VERLAINE POEMAS SATURNIANOS
ZOLA GERMINAL
RIMBAUD UNA ESTANCIA EN EL INFIERNO
SAND LA CHARCA DEL DIABLO

Tabla: LIBROS1

La tabla LIBROS1 es una proyeccin obtenida a partir de la tabla OBRAS, donde cada
libro es identificado de una manera nica por su ttulo.

Ejemplo 5.13

A partir de la tabla OBRAS, crear una tabla AUTORES1 que contenga los datos
relacionados con los autores.

CREATE TABLE AUTORES1
(AUTOR CHAR (8) NOT NULL;
FE_NE INT NOT NULL;
SALA INT NOT NULL;
ESTANTE INT NOT NULL);


INSERT INTO AUTOR1 (AUTOR, FE_NE, SALA, ESTANTE)
SELECT DISTINCT AUTOR, FE_NE, SALA, ESTANTE FROM OBRAS;


AUTOR FE_NA SALA ESTANTE
HUGO 1802 2 3
BALZAC 1799 1 1
DUMAS P 1802 1 1
DUMAS H 1824 1 1
STENDHAL 1783 3 5
FLAUBERT 1821 1 2
VERLAINE 1844 3 6
ZOLA 1840 3 6
RIMBAUD 1854 3 5
SAND 1804 3 5

Tabla: AUTORES1
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 123 de 127


5.3.2 SEGUNDA FORMA NORMAL (FN2)

Una relacin est en segunda forma normal si y solamente si est en primera forma
normal y si todos los atributos que no son llaves dependen nicamente de la llave. De
acuerdo a esta definicin, cada tabla que tiene un atributo nico como clave, est en
segunda forma normal.

La tabla LIBROS1 no contiene ms redundancia. Es un conjunto de datos relacionados
nicamente a los libros de la biblioteca.

Los datos FE_NA, SALA y ESTANTE, dependen funcionalmente de los datos de
AUTOR de la tabla AUTORES1, puesto que, a cada dato AUTOR corresponde un dato
de FE_NA y uno solo, un dato de SALA y uno solo y un dato de ESTANTE y uno solo.

Sin embargo las anomalas pueden todava ocurrir al momento de realizar el
mantenimiento de la tabla AUTORES1, puesto que, existe tambin dependencia
funcional al interior mismo de la tabla AUTORES1: en efecto, un estante pertenece a
una sala y solo una, esto significa que el conocimiento de un estante implica el
conocimiento de su sala, podemos por tanto decir que, existe una dependencia
transitiva entre autor y sala a travs del estante.

- Anomalas con DELETE

Anular de la tabla AUTORES1 las obras escritas por el autor HUGO.

DELETE FROM AUTORES1 WHERE AUTOR = 'HUGO' ;

Ocasionamos la prdida de informacin: La sala 2 contiene el estante 3, informacin
independiente del autor HUGO.

- Anomalas con INSERT

No podemos crear una nueva sala y un nuevo estante si no tenemos un autor a registrar.

- Anomalas con UPDATE

La instruccin:

UPDATE AUTORES1 SET SALA = 4 WHERE AUTORES = ZOLA;

Introduce una incoherencia, puesto que, el estante 6 pertenece a la sala 4 para el autor
ZOLA y a la sala 3 para el autor VERLAINE.

5.3.3 TERCERA FORMA NORMAL (FN3)

La solucin a los problemas de la tabla AUTORES1 que se encuentra en segunda forma
normal, es crear dos tablas a partir de AUTORES1:
Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 124 de 127

- Una tabla AUTORES2 que contenga los datos de AUTOR, FE_NA, y ESTANTE.
Esta tabla contiene datos que dependen funcionalmente de AUTOR.

SELECT AUTOR , FE_NE, ESTANTE FROM AUTORES1

- Una tabla ESTANTES que contenga los datos de ESTANTE y SALA.

SELECT DISTINCT ESTANTE, SALA FROM AUTORES1

Las dos tablas AUTORES2 Y ESTANTES estn en tercera forma normal.

Una tabla est en Tercera Forma Normal, si y solamente si, est en segunda forma
normal y no tiene dependencia transitiva. Por lo tanto para eliminar las anomalas de
una tabla en segunda forma normal, es necesario quitar la dependencia transitiva.

La tercera forma normal es la mnima requerida para asegurar la coherencia lgica de
los datos al momento de la concepcin de una tabla.

Otra definicin, presentada por Boyce y Codd, no hace referencia a las dos primeras
formas normales, sta introduce una forma ms completa, que se lo llama forma normal
Boyce y Codd (BCNF). Si llamamos determinante a un dato o un conjunto de datos que
dependen funcionalmente de un atributo, podemos construir la siguiente definicin:

Una relacin est en forma normal Boyce/Codd si y solamente si cada determinante es
una llave candidata.

5.4 EJEMPLOS

5.4.1

VUEL_PILOTO VUELO DIA NUMPILOTO NOMBRE HRS_VUELO
112 Jun-06 31174 TORRES 7250
112 Jun-07 30046 PEREZ 15412
203 Jun-09 31174 TORRES 7250

ASIGNADO VUELO DIA NUMPILOTO
112 Jun-06 31174
112 Jun-07 30046
203 Jun-09 31174

PILOTO NUMPILOTO NOMBRE HRS_VUELO
31174 TORRES 7250
30046 PEREZ 15412




Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 125 de 127

5.4.2

ALMACEN DEPART ARTICULO JEFE CANTIDAD
1 Computadora Perez 15
1 Monitor Perez 20
7 Teclado Aguilar 13
7 Monitor Aguilar 25
2 Raton Torres 40
3 Impresora Suarez 35
3 Computadora Suarez 10
3 Tarjera Suarez 50


ALMACEN1 DEPART JEFE
1 Perez
2 Torres
3 Suarez
7 Aguilar


ALMACEN2 DEPART ARTICULO CANTIDAD
1 Computadora 15
1 Monitor 20
7 Teclado 13
7 Monitor 25
2 Raton 40
3 Impresora 35
3 Computadora 10
3 Tarjera 50



5.4.3

ESCRIBE AUTOR NACIONALIDAD COD_LIBRO TITULO EDITORIAL AO
Date, C. Norteamericana 98987 Database Addison 1990
Date, C. Norteamericana 97777 SQL Stan Addison, W. 1986
Date, C. Norteamericana 98987 Guide for Addison, W. 1988
Cood, E Norteamericana 7890 Relational Addison, W. 1990
Gardain Francesa 12345 Basi Dati Paraninfo 1986
Gardain Francesa 67890 Comp DB Eyrolles 1984
Valduriez Francesa 67890 Comp DB Eyrolles 1984
Kim, W. Norteamericana 11223 BD OO ACM 1989
Lochovsky Canadiense 11223 BD OO ACM 1989


Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 126 de 127
LIBRO Cod_libro Titulo Editorial Ao

AUTOR Nombre Nacionalidad

ESCRIBE Cod_libro Nombre











































Sistemas de Bases de Datos
UDA Fundamentos de Bases de Datos Pgina 127 de 127
BIBLIOGRAFA

Texto Bsico:

1. [Elmasri y Navathe 2007] R. Elmasri y S. B. Navathe, Fundamentos de Bases de
datos. 5ta Edicin,

Textos complementarios:

2. [Korth y Silberchatz 2006] Henry F. Korth y Abraham Silberschatz,
Fundamentos de Bases de Datos. 5ta Edicin. McGraw-Hill.

3. [Connolly - Begg 2005] Thomas M. Connolly y Carolyn E. Begg, Sistemas de
Bases de Datos, Pearson

4. [Groff y Weinberg 2002] James R. Groff y Paul N. Weinberg, Manual de
referencia SQL. McGraw- Hill.

5. [Kroenke 2003] David M. Kroenke, Procesamiento de Bases de Datos,
Fundamentos Diseo e I nstrumentacin. Octava Edicin. Prentice-Hall
Hispanoamericana, S.A.

S-ar putea să vă placă și