Вы находитесь на странице: 1из 63

LICENCIATURA EN SISTEMAS

COMPUTACIONALES ADMINISTRATIVOS

GUA DE EJERCICIOS PRCTICOS

EXPERIENCIA EDUCATIVA
FUNDAMENTOS DE BASES DE
DATOS

PRESENTAN:
M.T.E MARIA LUISA VELASCO RAMIREZ
M.E PATRICIA ARIETA MELGAREJO

ndice
Introduccin ............................................................................................................................................ 5
Ejercicios Prcticos Conceptos Bsicos .................................................................................................. 6
Fundamento Terico ........................................................................................................................... 6
Saberes a reforzar ............................................................................................................................... 6
Estrategia metodolgica propuesta .................................................................................................... 7
Ejercicio 1 ............................................................................................................................................ 7
Ejercicio 2 ............................................................................................................................................ 7
Ejercicio 3 ............................................................................................................................................ 7
Ejercicio 4 ............................................................................................................................................ 7
Ejercicio 5 ............................................................................................................................................ 7
Bibliografa: ......................................................................................................................................... 8
Bibliografa Complementaria .............................................................................................................. 8
Ejercicios Prcticos Teora de Modelo de Datos ..................................................................................... 9
Fundamento Terico ........................................................................................................................... 9
Saberes a reforzar ............................................................................................................................... 9
Estrategia metodolgica propuesta .................................................................................................... 9
1. Compaa Mini-Mundo ..................................................................................................................... 10
2. Biblioteca........................................................................................................................................ 12
3. Club de Embarcaciones .................................................................................................................. 13
4. Hospital General............................................................................................................................. 14
5. Agencia de Viajes ........................................................................................................................... 15
6. Zoolgico ........................................................................................................................................ 16
7. Institucin Educativa ...................................................................................................................... 17
8. Casa Limpia .................................................................................................................................... 18
9. Servicio Militar ............................................................................................................................... 19
10. Sedes Olmpicas ........................................................................................................................... 20
11. Agencias de Viajes ........................................................................................................................ 21
12. Biblioteca del Instituto Tcnico de Georgia (BTG) ....................................................................... 22
13. Museo de Arte.............................................................................................................................. 24
14. Consultorio Dental ....................................................................................................................... 25
15. Firma de Diseo de Interiores ...................................................................................................... 26
Bibliografa: ....................................................................................................................................... 27
Ejercicios Prcticos Diseo de Bases de Datos ...................................................................................... 28
Fundamento Terico ......................................................................................................................... 28
Gua de Ejercicios Prcticos Fundamentos de Bases de Datos
2

Saberes a reforzar ............................................................................................................................. 28


Estrategia metodolgica propuesta .................................................................................................. 28
Ejercicios Reduccin Diagramas de Clase a Tablas............................................................................ 28
Ejercicios Normalizacin.................................................................................................................... 28
Bibliografa: ....................................................................................................................................... 30
Bibliografa Complementaria ............................................................................................................ 30
Ejercicios Prcticos Introduccin a un lenguaje de consulta ................................................................ 31
Fundamento Terico ......................................................................................................................... 31
Saberes a reforzar ............................................................................................................................. 31
Estrategia metodolgica propuesta .................................................................................................. 31
lgebra Relacional ............................................................................................................................. 32
Ejercicio: ............................................................................................................................................ 38
Bibliografa: ....................................................................................................................................... 38
SQL. Lenguaje de consulta en BD relacionales .................................................................................. 39
Creando una Base de Datos en Mysql ............................................................................................... 39
A continuacin se describe el proceso completo de creacin y uso de una base de datos
en MySQL. ................................................................................................................................... 39
Conectndose y desconectndose al servidor MySQL .................................................................. 39
Creando y usando una base de datos ............................................................................................... 43
Creando una tabla ............................................................................................................................. 44
Modificacin de la Base de Datos. ................................................................................................ 49
Load Data Infile.............................................................................................................................. 49
Actualizaciones .............................................................................................................................. 50
Consultas en SQL....................................................................................................................... 51
Consulta 0 .................................................................................................................................... 51
Consulta 1 .................................................................................................................................... 51
Consulta 2 .................................................................................................................................... 52
Consulta 3 .................................................................................................................................... 52
Consulta 4 .................................................................................................................................... 53
Consulta 5 .................................................................................................................................... 53
Consulta 6 .................................................................................................................................... 53
Consulta 7 .................................................................................................................................... 54
Consulta 8 .................................................................................................................................... 54
Consulta 9 .................................................................................................................................... 54
Consulta 10.................................................................................................................................. 54
Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

Consultas en SQL....................................................................................................................... 55
Consulta 11.................................................................................................................................. 56
Consulta 12.................................................................................................................................. 56
Consulta 13.................................................................................................................................. 57
Consulta 14.................................................................................................................................. 57
Consulta 15.................................................................................................................................. 57
Consulta 16.................................................................................................................................. 57
Consulta 17.................................................................................................................................. 58
Consulta 18.................................................................................................................................. 58
Consulta 19.................................................................................................................................. 58
Consulta 20.................................................................................................................................. 59
Consulta 21.................................................................................................................................. 59
Consulta 22.................................................................................................................................. 59
Conjunto Explcitos y valores NULOS en SQL .................................................................................... 60
Tablas Reunidas(JOIN) ....................................................................................................................... 60
Instancia de la Base de Datos. ........................................................................................................... 62
Bibliografa: ....................................................................................................................................... 63

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

Introduccin
El objetivo de esta gua es favorecer a travs de una serie de ejercicios prcticos el
aprendizaje del estudiante, comenzando con los conceptos bsicos de Bases de Datos,
continuando con una serie de ejemplificacin de requerimientos de diversos autores, a
travs de los cuales se pretende que el estudiante analice los requerimientos para el diseo
de una base de datos especfica, identificando entidades, atributos y relaciones
correspondientes, de la misma forma que partiendo de un diseo conceptual y una vez que
se tiene seleccionado el sistema manejador de bases de datos a utilizar, el estudiante
deber realizar el diseo lgico de la base de datos. Posteriormente se deben aplicar las
formas normales, en caso de que el diseo lgico sea relacional. Una vez diseada la base
de datos, sta deber ser definida en un lenguaje seleccionado, que a su vez permitir la
actualizacin y manipulacin de la misma. La presente gua de ejercicios muestra una serie,
ejercicios propuestos, especificacin de requerimientos y prcticas necesarias para
fortalecer la capacidad de los estudiantes al modelar bases de datos.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

Ejercicios Prcticos Conceptos Bsicos


Fundamento Terico
Los estudiantes sern capaces de distinguir un panorama general de los sistemas de Bases
de Datos, la terminologa bsica de su arquitectura, as como las generalidades de los
modelos de dato bsicos: Relacional, Orientado a Objetos.

Saberes a reforzar
Introduccin
Definicin de bases de datos y sistema de administracin de base de datos.
Objetivos de los sistemas de bases de datos.
Comparacin de las BD contra los sistemas basados en archivos.
Modelos de datos.
Modelos lgicos basados en objetos.
Modelos lgicos basados en registros.
Modelo relacional.
Modelo fsico de datos.
Arquitectura para los sistemas de bases de datos.
Objetivo de la arquitectura ANSI/SPARC.
Niveles de la arquitectura.
Sistema de Administracin de Base de Datos.
Administrador de comunicacin de datos.
Independencia de datos.
Definicin y manipulacin de Datos.
Catlogo del sistema.
Lenguaje de manipulacin de datos.
Catlogo del sistema.
Consultas al catlogo.
Actualizacin al catlogo.
Administrador y usuarios de Base de Datos.
Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

Estrategia metodolgica propuesta

A travs de una lluvia de ideas, el estudiante contextualizar el entorno de una base de


datos, aplicaciones, con una discusin dirigida se plantearan las ventajas de las mismas,
utilizando mapas conceptuales representarn los conceptos bsicos.

Ejercicio 1

Investigar en fuentes de informacin tales como libros, revistas especializadas o en Internet


en dominios .org, .edu, .gov, sobre el por qu surge la necesidad de modelar datos bajo el
enfoque de Bases de Datos as como de sus ventajas.

Ejercicio 2

Realizar la lectura de los dos primeros captulos del libro de Navathe y Elmasri Sistemas de
Base de datos Conceptos Fundamentales. Una vez realizadas las lecturas debern concluir
el ejercicio con un glosario de trminos, esto con el fin de que el estudiante identifique los
conceptos bsicos de las bases de datos.

Ejercicio 3

Cada estudiante elaborar un cuadro comparativo, en el que se muestren las diferencias


entre el enfoque de Bases de Datos y los archivos tradicionales.

Ejercicio 4

Trabajo en equipos pequeos de no ms de tres integrantes, para abordar un tema en


particular, de las lecturas realizadas, previamente sealadas por el profesor. Realizar
preguntas al azar entre los diferentes equipos, de manera que se refuercen los conceptos
vistos en clase y a travs de las lecturas realizadas

Ejercicio 5

Disear un mapa conceptual o mental de manera individual, sobre las Bases de Datos, qu
son, como se modelan, a travs de que herramienta se definen y manipulan, qu tipo de
aplicaciones existen, etc.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

Bibliografa:
Navathe y Elmasri
"Sistemas de Base de datos
Conceptos Fundamentales
Tercera Edicin 2002
Addison Wesley Iberoamericana
Silberschatz, F. Korth, Sudarshan
Fundamentos de Bases de Datos
Mc Graw Hill
Quinta Edicin 2006
Bibliografa Complementaria

Ricardo Catherine M.
Bases de Datos
Mc Graw Hill
Primera Edicin 2009

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

Ejercicios Prcticos Teora de Modelo de Datos


Fundamento Terico
Los estudiantes podrn aplicar los conceptos bsicos del modelado conceptual de bases de
datos, as como los diferentes enfoques para realizarlo.

Saberes a reforzar

Modelo Entidad-Relacin
Entidades y conjunto de Entidades.
Relaciones y conjunto de Relaciones.
Concepto de Atributo.
Atributo Clave.
Otros tipos de atributo.
Cardinalidad de las relaciones.
Diagrama Entidad-Relacin.
Generalizacin y Agregacin.

Modelo Orientado a Objetos.


Clases y Objetos.
Tipos de asociaciones entre las clases.
Multiplicidad de las relaciones.
Generalizacin.

Estrategia metodolgica propuesta


Fomentar la capacidad de anlisis de los estudiantes, a travs del planteamiento especfico
de requerimientos de informacin de diversos autores, el estudiante debe modelar los datos
bajo el enfoque del modelo entidad-relacin y el modelo orientado a objetos en los que
identificarn objetos, atributos y relaciones correspondientes, diseando los esquemas
conceptuales adecuados.
Nota: La redaccin de la mayora de ejercicios fue adaptada para facilitar la comprensin de
los mismos.
Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

1. Compaa Mini-Mundo
Suponer que una vez concluida la fase de recoleccin y anlisis de
requerimientos de una compaa, los diseadores de la base de datos redactaron la
siguiente descripcin del Minimundo (la parte de la compaa que se presentar en
la base de datos). Segn los requerimientos especificados se pueden identificar
cuatro tipos de entidades.
1.- Un tipo de entidades DEPARTAMENTO con los atributos Nmero, Nombre,
Lugares, Gerente y FechaInicGerente. Lugares es el nico atributo multivaluado. Se
puede especificar que Nmero sea atributo clave.
2.- Un tipo de entidades PROYECTO con los atributos Nombre, Nmero, Lugar.
Tanto Nmero como Nombre son atributos clave.
3.- Un tipo de entidades EMPLEADO con los atributos NoPersonal, Nombre, Sexo,
Direccin, Salario, FechaNac. Tanto Nombre como Direccin pueden ser atributos
compuestos.
4.- Un tipo de entidades DEPENDIENTE con los atributos Nombredependiente,
Sexo, FechaNac y Parentesco (con el empleado).
Definir las entidades y atributos correspondientes
Una vez definidas las entidades y atributos, especificar los siguientes tipos de
vnculos;
1.- DIRIGE, un tipo de vnculos de 1:1 entre EMPLEADO y DEPARTAMENTO. La
participacin del EMPLEADO es parcial pero la de DEPARTAMENTO es total.
2.- PERTENECE_A, un tipo de vnculos 1:N entre DEPARTAMENTO y EMPLEADO.
Ambas participaciones son totales.
3.- CONTROLA, un tipo de vnculos 1:N entre DEPARTAMENTO y PROYECTO. La
participacin de PROYECTO es total; luego de consultar con los usuarios, se
determina que la participacin de DEPARTAMENTO es parcial.
4.- SUPERVISION un tipo de vnculos 1:N entre EMPLEADO (en el papel de
supervisor) y EMPLEADO (en el papel de supervisado). Los usuarios nos dicen que
no todo empleado es un supervisor y no todo empleado tiene un supervisor, de
modo que ambas participaciones son parciales.
5.- TRABAJA_EN que, despus de que los usuarios indican que varios empleados
pueden trabajar en un proyecto, resultar ser un tipo de vinculo M:N con el atributo
Horas. Se determina que ambas participaciones son totales.
6.- DEPENDIENTE_DE,
DEPENDIENTE.

un

tipo

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

de

vnculos

1:N

entre

EMPLEADO

10

DEPENDIENTE_DE resulta ser un vinculo identificador del tipo de entidades dbil


DEPENDIENTE. La participacin de EMPLEADO es parcial, ya que no todo
empleado tiene dependientes, en tanto que la de DEPENDIENTE es total, puesto
que todo DEPENDIENTE si depende de un empleado para existir como entidad y es
identificado a travs del EMPLEADO.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

11

2. Biblioteca
Se va a tomar como ejemplo el disear una base de datos relacional que
permita la gestin de prstamos de libros en una biblioteca y, como primer paso, se
a desarrollar el diseo conceptual de dicha base de datos, es decir,, desarrollar el
modelo E-R.
En este ejemplo de estudio se parte de la forma actual de trabajo de una
Biblioteca, la cual cuenta con:
Libros con las caractersticas (Cdigo, nombre, tipo, etc.).
Lectores con las caractersticas (Nombre, apellidos, domicilio. etc.).
Informacin de los prstamos de libros que se han efectuado, incluyendo el
lector a quien se le ha prestado, la fecha, etc.
Adems de estos datos, en nuestras conversaciones con los empleados,
obtenemos algunas informaciones y comentarios tiles para el diseo que son
las siguientes:
De cada libro pueden existir varios ejemplares.
Se est interesado en obtener informacin sobre el/ los idioma/s del libro.
Interesa reflejar los temas de los libros, pudiendo cada libro pertenecer a
varios temas y/o subtemas.
Interesa conocer el nombre de los autores.
A partir de esta informacin se debe obtener el diseo del esquema conceptual,
donde se deber definir los atributos claves de cada entidad e incluir las
restricciones de carnalidad y participacin. Tomar en cuenta que se debe completar
la informacin mostrada, de tal manera que permita modelar la base de datos de
manera lgica y adecuada.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

12

3. Club de Embarcaciones
Un club
desea tener informatizados los datos correspondientes a sus
instalaciones, empleados, socios y embarcaciones que se encuentran en dicho club.
El club est organizado de la siguiente forma:
Los socios pertenecientes al club vienen definidos por su nombre, direccin,
nmero de socio, telfono y fecha de ingreso en el club.
Las embarcaciones vienen definidas por: matricula, nombre, tipo y
dimensiones.
Los amarres tienen como datos de inters el nmero de amarre, la lectura del
contador de agua y luz, y si tienen o no servicios de mantenimiento
contratados.
Por otro lado, hay que tener en cuenta que una embarcacin pertenece a un
socio aunque un socio puede tener varias embarcaciones. Una embarcacin
ocupar un amarre y un amarre est ocupado por una sola embarcacin. Es
importante la fecha en la que una embarcacin es asignada a un amarre.
Los socios pueden ser propietarios de amarres, siendo importante la fecha de
compra del amarre. Hay que tener en cuenta que un amarre pertenece a un
solo socio y que NO HAY ninguna relacin directa entre la fecha en la que se
compra un amarre y en la que una embarcacin se asigna a un amarre.
Un club nutico est dividido en varias zonas definidas por una letra, el tipo
de barcos que tiene, el nmero de barcos que contiene, la profundidad y el
ancho de los amarres. Una zona tendr varios amarres y un amarre
pertenece a una sola zona.
En cuanto a los empleados, estos vienen definidos por su cdigo, nombre,
direccin, telfono y especialidad. Un empleado est asignado a varias zonas
y en una zona puede haber ms de un empleado, siendo de inters el nmero
de barcos de los que se encarga en cada zona. Hay que tener en cuenta que
un empleado puede o no encargarse de todos los barcos de una zona.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

13

4. Hospital General
En un centro hospitalario se desea informatizar parte de la gestin relativa a
pacientes. Tras el anlisis realizado, se establecen los siguientes requerimientos:
Los datos de inters que se desea almacenar del paciente son: nmero de
Seguridad Social, CURP, nombre, apellidos y fecha de nacimiento.
Un paciente estar asignado a una cama determinada de una planta del
hospital, pudiendo estar a lo largo del tiempo de ingreso en diferentes camas
y plantas, siendo significativa la fecha de asignacin de cama y el nmero de
esta. Habr que tener en cuenta que las camas se numeran de manera
correlativamente por cada planta, es decir, existir la cama nmero 12 de la
tercera planta y tambin la nmero 12 de la sptima planta. Las plantas del
hospital estarn identificadas por nmero de planta, su nombre y nmero de
que dispone.
Por cada paciente se entregar hasta un mximo de 4 tarjetas de visita. Estas
tarjetas de visita sern vlidas para visitar un nico paciente. La tarjeta de
visita se definir por: nmero de tarjeta de visita, la hora en que inicia y en la
que termina una visita al enfermo.
A un paciente le puede atender varios mdicos, siendo significativa por cada
visita mdica la fecha y hora de sta. Y un paciente puede tener diferentes
diagnsticos de enfermedad, siendo relevante la fecha de diagnstico. Por
otra parte, un mdico puede tratar diferentes tipos de diagnsticos y
viceversa.
Los datos de inters de los mdicos sern: cdigo del mdico, nombre y
apellidos. Los datos de inters de los diagnsticos sern: cdigo de
diagnstico y descripcin.
NOTA: una vez dado de alta un paciente se traslada toda la informacin relativa a
ste a un archivo histrico.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

14

5. Agencia de Viajes
Una cadena de agencias de viajes desea disponer de una base de datos que
contemple informacin relativa al hospedaje y vuelos de los turistas que la contratan.
Los datos a tener en cuenta son:
La cadena de agencias est compuesta por un conjunto de sucursales. Cada
sucursal viene definida por el cdigo de sucursal, direccin y telfono.
La cadena tiene contratados una serie de hoteles de forma exclusiva. Cada
hotel estar definido por el cdigo de hotel, nombre, direccin, ciudad,
telfono, y nmero de plazas disponibles.
De igual forma, la cadena tiene contratados una serie de vuelos regulares de
forma exclusiva. Cada vuelo viene definido por el nmero de vuelo, fecha y
hora, origen y destino, plazas totales y plazas de clase turista de las que
dispone.
La informacin que se desea almacenar por cada turista es el cdigo de
turista, nombre, apellidos, direccin y telfono.
Por otra parte hay que tener en cuenta la siguiente informacin:
A la cadena de agencias le interesa conocer que sucursal ha contratado el
turista.
A la hora de viajar el turista puede elegir cualquiera de los vuelos que ofrece
la cadena, y en que clase (turista o primera) desea viajar.
De igual manera, el turista se puede hospedar en cualquiera de los hoteles
que ofrece la cadena y elegir el rgimen de hospedaje (media pensin o
pensin completa). Siendo significativa la fecha de llegada y partida.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

15

6. Zoolgico
Un Zoolgico necesita una aplicacin informtica para llevar una organizacin
respecto a las especies que posee, los empleados (cuidadores y guas), y los
distintos itinerarios de visita que ofrece. La informacin est estructurada de la
siguiente manera:
Especies, de las especies se interesa saber el nombre en espaol, el nombre
cientfico y una descripcin general. Hay que tener en cuenta que una especie
puede vivir en diferentes hbitats naturales y que un hbitat puede ser
ocupado por diferentes especies. Las especies se encuentran en distintas
zonas del parque de manera que cada especie est en una zona y en una
zona hay varias especies.
Hbitats, los diferentes hbitats naturales vienen definidos por el nombre, el
clima y el tipo de vegetacin predominantes, as como el continente o
continentes en los que se encuentran.
Zonas, las zonas del parque en las que se encuentran las distintas especies
vienen definidas por el nombre y la extensin que ocupan.
Itinerarios, los itinerarios discurren por distintas zonas del parque. La
informacin de inters para los itinerarios es cdigo de itinerario, la duracin
del recorrido, la longitud del itinerario, el mximo nmero de visitantes
autorizado y el nmero de distintas especies que visita. Hay que tener en
cuenta que un itinerario recorre distintas zonas del parque y que en una zona
puede ser recorrida por diferentes itinerarios.
Guas, los guas del parque vienen definidos por el nombre, direccin,
telfono y fecha en la que comenzaron a trabajar en el zoo. Interesa saber
que guas llevan itinerarios, teniendo en cuenta que un gua puede llevar
varios itinerarios y que un itinerario puede ser asignado a diferentes guas en
diferentes horas, siendo ests un dato de inters.
Cuidadores, los cuidadores vienen definidos por el nombre, direccin, telfono y
fecha de ingreso en el parque. Hay que tener en cuenta que un cuidador puede estar
a cargo de varias especies y que una especie puede ser atendida por varios
cuidadores, siendo de inters la fecha en la que un cuidador se hace cargo de una
especie.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

16

7. Institucin Educativa
Se desea disear la base de datos de una Institucin Educativa. En la base de datos
se desea guardar los datos de los profesores de dicho instituto: Npersonal, nombre,
direccin y telfono. Los profesores imparten materias, y cada materia se describe
mediante un cdigo, un nombre, una descripcin y un contenido. Cada alumno est
matriculado en una o varias materias. De cada alumno se desea guardar la
matricula, nombre, apellidos y fecha de nacimiento. Cada materia es impartida en
diferente aula por lo que interesa saber el nmero y ubicacin de cada una de ellas,
as como la hora y da en que se imparte cada materia en cada aula. Los profesores
pueden impartir varias materias, pero una materia solo puede ser impartida por un
profesor. Un alumno pertenece a una seccin, de esta ltima interesa conocer el
nmero de seccin y carrera a la que corresponde, en cada seccin puede haber
varias alumnos. Un alumno puede ser representante de la seccin y representar a
los dems alumnos.
Elaboracin propia

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

17

8. Casa Limpia
A partir de los siguientes requerimientos para una empresa que vende
diversos productos de limpieza para la casa, realizar el modelo entidad-relacin.
La empresa Casa Limpia vende productos de limpieza a varios clientes. Se
necesita conocer los datos de los clientes, tales como cdigoC, RFC, nombre,
apellidos, direccin, telfonos. Cada producto tiene un cdigo, un nombre, una
descripcin as como un precio unitario. Un cliente puede adquirir varios productos a
travs de una orden_de _venta, esta orden detalla los productos que aparecen en
ella, siendo relevante la cantidad que detalla
de cada producto. De la
orden_de_venta se debe registrar el folio, la fecha y el total, un cliente puede hacer
ms de una orden de venta, pero esta orden solo se registra para un cliente.
Los productos son suministrados por diferentes proveedores, a travs de un
pedido, definido por Nopedido, fecha y total. Se debe tener en cuenta que un pedido
detalla cada producto que surte o suministra el proveedor, siendo significativa la
cantidad de producto que se detalla en este pedido. Un proveedor puede suministrar
diferentes pedidos, pero estos ltimos son facturados por un solo proveedor. De
cada proveedor se desea conocer el cdigoP, la RaznSocial, nombre, direccin y
telfonos donde se le pueda localizar.
Elaboracin Propia

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

18

9. Servicio Militar
El Ministerio de Defensa desea disear una base de datos para llevar un cierto
control de los soldados que realizan el servicio militar. Los datos significativos a
tener en cuenta son:
Un soldado se define por su cdigo de soldado (nico), su nombre y apellidos
y su graduacin.
Existen varios cuarteles, cada uno se define por su cdigo de cuartel, nombre
y ubicacin.
Hay que tener en cuenta que existen diferentes cuerpos del ejrcito,
(Infantera, Artillera, Armada,), y cada uno se define por su cdigo de
Cuerpo y Denominacin.
Los soldados estn agrupados en compaas, siendo significativa para cada
uno de ests, el nmero de compaa y la actividad principal que realiza.
Se desea controlar los servicios que realizan los soldados (guardias,
imaginarias, cuarteleros,), y se definen por el cdigo de servicio y
descripcin.
Consideraciones de diseo:
Un soldado pertenece a un nico cuerpo y a una nica compaa, durante
todo el servicio militar. A una compaa pueden pertenecer soldados de
diferentes cuerpos, no habiendo relacin directa entre compaas y cuerpos.
Los soldados de una misma compaa pueden estar definidos en diferentes
cuarteles, es decir, una compaa puede estar ubicada en varios cuarteles, y
en un cuartel puede haber varias compaas. Eso s, un soldado slo est en
un cuartel.
Un soldado realiza varios servicios a lo largo de la milicia. Un mismo servicio puede
ser realizado por ms de un soldado (con independencia de la compaa), siendo
significativa la fecha de realizacin.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

19

10. Sedes Olmpicas


Se desea disear una base de datos para las sedes olmpicas. Las sedes
olmpicas se dividen en complejos deportivos. Los complejos deportivos se
subdividen en aquellos en los que se desarrolla un nico deporte y en los
polideportivos. Los complejos polideportivos tienen reas designadas para cada
deporte con un indicador de localizacin (ejemplo: centro, esquina-NE, etc.). Un
complejo tiene una localizacin, un jefe de organizacin individual y un rea total
ocupada.
Los dos tipos de complejos (deporte nico y polideportivo) tendrn diferentes
tipos de informacin. Para cada tipo de sede, se conservar el nmero de complejos
junto con su presupuesto aproximado.
Cada complejo celebra una serie de eventos (ejemplo: la pista del estadio puede
celebrar muchas carreras distintas). Para cada evento est prevista una fecha,
duracin, nmero de participantes, nmero de comisarios. Una lista de todos los
comisarios se conservar junto con la lista de los eventos en los que est
involucrado cada comisario ya sea cumpliendo la tarea de juez u observador. Tanto
para cada evento como para el mantenimiento se necesitar cierto equipamiento
(ejemplo: arcos, prtigas, barras paralelas, etc.).

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

20

11. Agencias de Viajes


Disee una base de datos para una agencia de viajes que, para ofrecer un mejor
servicio a sus clientes, considera de inters tener registrada la informacin referente
a los diferentes tours que puede ofrecer. Para ello, se cuenta con los siguientes
antecedentes:
Un tour, segn su finalidad (cultural, histrica, deportiva,), tiene
determinados puntos de ruta y puede repetirse varias veces al ao.
Se define por viaje, un tour concreto a realizar a partir de una fecha
determinada.
Los puntos de ruta de un tour pueden ser ciudades, monumentos, zonas
geogrficas, etc., y se consideran de visita solamente o de visita y estancia.
En este ltimo caso, el punto de ruta tiene asignado uno ms hoteles.
Se entiende por cliente de un viaje la persona que ha decidido hacerlo y ha
efectuado la respectiva confirmacin.
Un cliente puede confirmar su participacin en ms de un viaje (se entiende
que las fechas son diferentes).
Las personas que participan en un viaje pueden ser alojadas en los mismos o en
diferentes hoteles.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

21

12. Biblioteca del Instituto Tcnico de Georgia (BTG)


Identifique todos los conceptos importantes representados en el caso de estudio de
la base de datos de la biblioteca que se describe debajo. En particular, identifique las
abstracciones de clasificacin (tipos de entidad y tipos de relacin) agregacin, identificacin
y especializacin/ generalizacin. Especifique las restricciones de carnalidad (Mnimos y
Mximos) siempre que sea posible. Enumere los detalles que impacten en el diseo final
pero que no tengan efecto en el diseo conceptual. Enumere por separado las restricciones
semnticas. Dibuje un diagrama EER de la base de datos biblioteca.
Caso de estudio: La biblioteca del Instituto Tcnico de Georgia (BTG) tiene
aproximadamente 16.000 socios, 100.000 ttulos y 250.000 volmenes (o un promedio de
aproximadamente 2.5 copias por libro). Aproximadamente el 10% de los volmenes siempre
esta prestado. Los bibliotecarios se aseguran de que los libros que los socios quieran pedir
prestados estn disponibles cuando los socios los quieran. Los bibliotecarios tambin deben
conocer en todo momento cuantas copias de cada libro estn en la biblioteca o prestadas.
Un catalogo de libros por autor, titulo y tema est disponible en on-line. Para cada ttulo en
la biblioteca, se guarda en el catalogo una descripcin del libro, que abarca desde una lnea
hasta varias pginas. Los bibliotecarios de consulta quieren poder acceder a esta
descripcin cuando los socios soliciten informacin sobre un libro. La plantilla de la
biblioteca esta divida en jefe de la biblioteca, bibliotecarios asociados a los departamentos,
bibliotecario de consulta, personal de prstamos y ayudantes de bibliotecas. Los libros
pueden ser prestados por un periodo de 21 das. A los socios solo se les permite tener en
prstamos 5 libros a la vez. Los socios generalmente devuelven los libros al cabo de 3 o 4
semanas. La mayora de los socios saben que tienen una semana de gracia antes de que
les enven una notificacin, as que procuran devolver el libro antes de que termine el
periodo de gracia. Aproximadamente el 5 % de los socios les han tenido que recordar que
devuelvan el libro. La mayor parte de los libros no devueltos dentro del plazo son devueltos
dentro del mes de vencimiento. Aproximadamente el 5 % de los libros no devueltos dentro
del plazo no se devuelven ya nunca. A aquellos socios que solicitan un prstamo un mnimo
de 10 veces durante el ao son considerados como los socios ms activos. El 1 % de los
socios solicita el 15 % de los prstamos y el 10 % de los socios lleva a cabo el 40 % de los
prstamos. Cerca del 20 % de los socios son inactivos, en el sentido de que son socios pero
nunca solicitan prstamos. Para ser socio de la biblioteca, los solicitantes rellenan un
formulario incluyendo un NSS, direcciones de correo personales y del campus y nmeros de
telfono. Los bibliotecarios tramitan entonces una tarjeta magntica numerada y con una
foto del socio. Esta tarjeta es vlida durante 4 aos. Un mes antes de que la tarjeta
caduque, se enva una notificacin al socio para la renovacin. Los profesores del instituto
son considerados socios de forma automtica. Cuando un nuevo profesor entra al instituto,
su informacin se transmite desde el registro de empleados y la tarjeta de la biblioteca se
enva por correo a su direccin del campus. A los profesores se les permite sacar prestados
libros durante periodos de 3 meses y tienen un periodo de gracia de 2 semanas. Las
renovaciones de los profesores se envan a la direccin del campus. La biblioteca no presta
algunos libros, como libros de consulta, libros especiales y mapas. Los bibliotecarios deben
diferenciar entre libros que pueden prestarse y libros que no. Adems, los bibliotecarios
tienen una lista de algunos libros que estn interesados en adquirir pero que no pueden
obtenerse, tales como libros curiosos o descatalogados y libros que se perdieron o fueron
destruidos sin haber sido remplazados. Los bibliotecarios deben tener un sistema que
Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

22

permita mantener informacin de los libros que no pueden prestarse as como de aquellos
que estn interesados en conseguir. Puede que algunos libros tengan el mismo ttulo; por
tanto, el titulo no puede usarse como una clave de identificacin. Cada libro se identifica por
su nmero del estndar internacional de numeracin de libros (ISBN), que es un cdigo
nico internacional asignado a todos los libros. Dos libros con el mismo ttulo pueden tener
diferentes ISBN si estn en diferentes idiomas o tienen diferentes encuadernaciones
(cubierta dura o cubierta blanda). Las ediciones de un mismo libro tienen diferentes ISBN.
Deben disearse el sistema de base de datos propuestos para conservar informacin de los
socios, los libros, el catalogo y las operaciones de prstamo.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

23

13. Museo de Arte


Disee una base de datos para seguir la pista a la informacin para un museo de arte.
Asegurase de que se recogieron los siguientes requisitos:
El museo tiene una coleccin de Objetos_Arte. Cada Objeto_Arte tiene un nico
NumId, un artista (si se conoce), un ao (cuando fue creado, si se conoce), un ttulo
y una descripcin. Los objetos de arte se clasifican en categoras de varias formas
segn se comenta debajo.
Los Objetos_Arte se clasifican basndose en su tipo. Existen tres tipos principales:
Pintura, Escultura y Estatua, ms otro tipo llamado Otro para situar los objetos que
no encajan en ninguno de los tres tipos principales.
Una Pintura tiene un tipopintura (leo, acuarela,), material en el que esta dibujado
sobre (papel, lienzo, madera, etc.) y estilo (moderno, abstracto, etc.).
Una Escultura tiene un material de la que esta hecha (madera, piedra, etc.), altura,
peso y estilo.
Un objeto de arte en la categora Otro tiene un tipo (impresin, foto, etc.) y un estilo.
Los Objetos_Arte se clasifican tambin como Coleccin_Permanente que es
propiedad del museo (que tiene informacin sobre la FechaAdquisicion, si est
EnExhibicin tambin o EnAlmacen y su costo) o como Tomada_En_Prestamo, que
tiene informacin sobre la coleccin (de la cual fue tomada como prestada),
FechaPeticinPrestamo, FechaDevolucin.
Los Objetos_Arte tienen tambin informacin que describe su pas/ cultura mediante
informacin sobre el pas/ cultura de origen (romano, egipcio, americano, indio, etc.),
y poca (renacimiento, moderna, antiguo, etc.).
El museo conserva informacin sobre el Artista si se conoce: Nombre,
FechaNacimiento, FechaDeFunsion (si ya no vive), PasDeOrigen, poca,
EstiloPrincipal, Descripcin. El nombre se supone nico.
Se celebran diferentes Exhibiciones; cada una de ellas tiene el nombre,
FechaComienzo, FechaFin y se relaciona con todos los objetos de arte que se
mostraron durante la exhibicin.
La informacin se conserva en otras Colecciones con las que el museo interacta
incluyendo nombre (nico), tipo (museo, personal, etc.), descripcin, direccin,
telfono, y PersonaContacto actual.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

24

14. Consultorio Dental


Disee un esquema conceptual para la siguiente aplicacin:
Un grupo dental necesita mantener la informacin de pacientes, visitas que hacen al
consultorio, el trabajo que se debe realizar, los procedimientos realizados durante las visitas,
los cargos y pagos por el tratamiento, y los suministros y servicios de laboratorio. Suponer
que existen varios dentistas en el grupo. Los pacientes realizan muchas visitas y durante
cada visita se les puede practicar muchos servicios o procedimientos. Aunque los pacientes
usualmente hacen cita para ver al mismo dentista, pueden ver a otro en cado de urgencia o
por otras razones. La base de datos debe almacenar informacin acerca de los servicios y
procedimientos, incluidos un cdigo, descripcin y cargos por cada uno. Algunos servicios
pueden abarcar varias visitas. La oficina usa tres laboratorios dentales, uno para suministros
regulares, uno para fabricacin de dentaduras y uno para otros suministros y servicios.
Definir los atributos de cada entidad o clase que identifique.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

25

15. Firma de Diseo de Interiores


Una firma de diseo de interiores quiere tener una base de datos para representar sus
operaciones. Un cliente solicita que la firma realice servicios como decorar una casa nueva,
decorar habitaciones, localizar y comprar mobiliario, y cosas por el estilo. Los clientes
pueden ser individuos privados o corporaciones. El cliente se rene con uno de los
decoradores de la firma, quien trabaja con el cliente hasta que el trabajo est completo. Los
clientes pueden solicitar un decorador particular y tambin puede cambiar de decoradores
para trabajos futuros. Para cada trabajo, la firma proporciona un estimado de la cantidad de
tiempo y dinero requerido para completar el trabajo. Un trabajo puede incluir muchas
actividades, como pintar, instalar recubrimiento de pisos, fabricar e instalar cortinajes, papel
tapiz, construir e instalar gabinetes, etc. Estas actividades se realizan mediante contratistas
contratados por la firma para trabajar sobre una base diaria y horaria a una tasa negociada
por ambas partes. El contratista proporciona una estimacin del tiempo requerido para cada
actividad. Algunas actividades las realiza el decorador de la firma. Cada actividad requiere
materiales como pinturas o madera, y la firma debe seguir la pista del costo de los
materiales, as como de la mano de obra por cada actividad, para cobrar al cliente.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

26

Bibliografa:
Navathe y Elmasri
"Sistemas de Base de datos
Conceptos Fundamentales
Tercera Edicin 2002
Addison Wesley Iberoamericana
Piattini Mario, Marcos Esperanza,
Calero Coral, Vela Beln
Tecnologas y Diseo de Bases de datos
Alfaomega/Ra-ma
Primera Edicin 2007

Ricardo M. Catherine
Bases de Datos
McGrawHill, 2009.

Rob Peter, Coronel Carlos


Sistemas de Bases de Datos
Diseo, Implementacin y Administracin
Thomson
Quinta edicin 2004

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

27

Ejercicios Prcticos Diseo de Bases de Datos


Fundamento Terico
Los estudiantes deben conocer los conceptos del Modelo relacional y el orientado a objetos,
para poder realizar el diseo lgico de una base de datos, la cual ser definida en el sistema
gestor de bases de datos elegido. Por ser el modelo relacional el de mayor aceptacin en el
mercado, ser el que se utilizar para el disear la base de datos, no obstante se darn
ejemplos de diseos orientados a objetos.

Saberes a reforzar

Reduccin de Diagramas Entidad-Relacin a Tablas.


Reduccin de Diagramas de Clase a Tablas y a clases.
Problemtica en el diseo de base de datos relacinales.
Normalizacin por medio de dependencias funcionales

Estrategia metodolgica propuesta


Contando con la gua del profesor, el estudiante realizar el anlisis de esquemas
conceptuales para su transformacin a tablas o clases, dependiendo del modelo lgico del
sistema gestor de bases de datos elegido. Para obtener el diseo lgico de la base de
datos, el estudiante debe poner en prctica su capacidad de examinar cada una de las
entidades, vnculos y correspondencias entre estos, para determinar el tipo de relacin a
obtener.

Ejercicios Reduccin Diagramas de Clase a Tablas


Transformar cada uno de los ejercicios realizados en el tema Teora de modelos de datos, al
esquema relacional correspondiente.

Ejercicios Normalizacin
Ejercicio 1
Considere la siguiente relacin:
VENTA_COCHES (IdCoche, Fecha_Venta, IdVendedor, Comisin, cant_descuento)
Suponga que un coche puede ser vendido por mltiples vendedores y por lo tanto, {IdCoche,
IdVendedor} es la clave primaria. Otras dependencias adicionales son:
Fecha_Venta cant_descuento y Vendedor#, Comisin.
Basndose en la clave primaria dada, Est esta relacin en 1FN, 2FN 3FN?

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

28

Ejercicio 2 Considere la siguiente definicin de relacin y datos muestra:


NombredelEmpleado
Domnguez
Domnguez
Domnguez
Domnguez
Palacios
Palacios
Palacios

Telfono
12345
12345
12345
12345
67890
67890
67890

Empleado_trabaja_Proyecto
ProyectoID TareasID HorasTotales
100S
B-1
12
100S
P-1
12
200B
B-1
15
200B
P-1
15
100S
C-1
22
200D
C-1
26
200D
P-1
16

Descripcin_Proyecto
Reingeniera
Reingeniera
Sustentable
Sustentable
Reingeniera
Innovacin
Innovacin

Empleado_trabaja_Proyecto (NombredelEmpleado, ProyectoID, TareasID, Horas Totales,


Telfono) Donde
NombredelEmpleado es el nombre de un empleado
ProyectoID es el nmero de un proyecto
TareasID es el nombre estndar de la tarea(s) que se realiza(n) en el proyecto
Telfono es el nmero telefnico del empleado
HorasTotales son las horas que ha trabajado el empleado en este proyecto

Considerar (NombredelEmpleado,ProyectoID,TareasID) como llave primaria


Est esta relacin en 1FN, 2FN 3FN?
Ejercicio 3

Dada la siguiente tabla


numero-prstamo
P-17

nombre-sucursal
Centro

nombre-cliente
Santos

ciudad-sucursal
Xalapa

activo
9.000.000

calle-cliente
Enrquez

importe
1.000

P-23

Centro

Gmez

Coatepec

2.100.000

Miguel Lerdo

2.000

P-15

Clavijero

Lpez

Veracruz

1.700.000

Clavijero

1.500

P-14

Centro

Snchez

Xalapa

9.000.000

Arenal

1.500

P-93

Plaza Amricas

Santos

Veracruz

400.000

Boulevard vila C.

500

P-11

Centro

Altamirano

Veracruz

8.000.000

Centro

900

P-29

vila Camacho

Velzquez

Xalapa

300.000

vila Camacho

1.200

P-16

Zona Centro

Lpez

Crdoba

3.700.000

Av. 3

1.300

P-18

Centro

Gonzlez

Xalapa

9.000.000

Carrillo Puerto

2.000

P-25

Clavijero

Rodrguez

Veracruz

1.700.000

Clavijero

2.500

P-10

Plaza nimas

Arellano

Xalapa

7.100.000

Boulevard Lzaro C.

2.200

Dependencias Funcionales
nombre-sucursal ciudad-sucursal
nombre-sucursal activo
nombre-cliente calle-cliente
numero-prstamo, nombre-sucursal, nombre-cliente importe
Est esta relacin en 1FN, 2FN 3FN?

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

29

Bibliografa:

Navathe y Elmasri
"Sistemas de Base de datos
Conceptos Fundamentales
Tercera Edicin 2002
Addison Wesley Iberoamericana
Kroenke David M.
Procesamiento de Bases de Datos.
Fundamentos, diseo e Implementacin
Pearson/Prentice Hall
Octava edicin 2003
Silberschatz, F. Korth, Sudarshan
Fundamentos de Bases de Datos
Mc Graw Hill
Quinta Edicin 2006

Bibliografa Complementaria

Ricardo Catherine M.
Bases de Datos
Mc Graw Hill
Primera Edicin 2009

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

30

Ejercicios Prcticos Introduccin a un lenguaje de consulta


Fundamento Terico

Es necesario que los estudiantes conozcan los lenguajes que les permitirn definir, consultar
o actualizar una base de datos

Saberes a reforzar

Los Lenguajes de Consulta de las Bases de Datos Relacionales.

Introduccin a los lenguajes de la tecnologa relacional.


lgebra Relacional.
Estructura del lenguaje SQL.

Estrategia metodolgica propuesta

Contando con la gua del profesor, el estudiante definir diferentes consultas de bases de
datos, utilizando el lenguaje lgebra relacional y SQL, con ste ltimo conocer el resultado
de las consultas a travs de un sistema gestor de base de datos, utilizado en el laboratorio
de cmputo.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

31

lgebra Relacional
El Modelo Relacional fue presentado por Codd en una publicacin en 1970, refirindose a
un modelo de datos especfico, con Relaciones como nico objeto de tratamiento en el
modelo, un lgebra como lenguaje de consulta, a la que llam lgebra Relacional (AR), y
ninguna manera de expresar actualizaciones, restricciones y/o clculos sobre el modelo. El
lgebra relacional se inspira en la teora de conjuntos para especificar consultas en una
base de datos relacional.
Posteriormente, Codd present otro lenguaje basado en el Clculo de Predicados de la
Lgica de Primer Orden, mostrando que era equivalente en su poder expresivo al AR
primeramente presentada; a este segundo lenguaje lo denomin Clculo Relacional (CR).
lgebra relacional es un lenguaje de consulta procedural (se indica el procedimiento para
obtener la relacin resultante). Consta de un conjunto de operaciones que toman como
entrada una o dos relaciones y producen como resultado una nueva relacin, por lo tanto, es
posible anidar y combinar operadores. Hay ocho operadores en el lgebra relacional que
construyen relaciones y manipulan datos, estos son:
1.Seleccin
4.Unin
7. JOIN

2.Proyeccin
5. Interseccin
8 Divisin

3.Producto
6. Diferencia

Las cinco operaciones fundamentales en el lgebra relacional, seleccin, proyeccin,


producto cartesiano, unin y diferencia de conjuntos, permiten realizar la mayora de las
operaciones de extraccin de datos que nos interesan. Adems, estn definidas las
operaciones de combinacin (JOIN), interseccin, y divisin, que pueden expresarse en
trminos de las cinco operaciones bsicas.
La mayora de los autores representan cada operacin con un smbolo:
Operacin
Seleccin

Frmula
predicado
(R)
a1, , an
(R )
R S
RS
R S
RXS

Proyeccin

Unin
Interseccin
Diferencia
Producto
cartesiano
Con el objetivo de familiarizarse con el uso de comandos, tal como se realizarn las
consultas en SQL, se van a realizar las operaciones del lgebra relacional utilizando
comandos u rdenes equivalentes a los smbolos. Teniendo como ejemplo las siguientes
relaciones:
Proveedor

Parte

Vno

Vnombre

Status

Ciudad

Pno

Pnombre

Color

V1
V2
V3
V4
V5

Surez
Camacho
Velzquez
Lpez
Jimnez

20
10
30
20
30

Guadalajara
Monterrey
Monterrey
Guadalajara
Xalapa

P1
P2
P3
P4
P5

Tuerca
Perno
Tornillo
Tornillo
Rondana

Rojo
Verde
Azul
Rojo
Azul

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

Pes
o
12
17
17
14
12

Ciudad
Guadalajara
Monterrey
Mxico
Guadalajara
Monterrey

32

Suministra
VNO
V1
V1
V1
V1
V1
V1
V2
V2
V3
V4
V4
V4

PNO
P1
P2
P3
P4
P5
P6
P1
P2
P2
P2
P4
P5

CANT
300
200
400
200
100
100
300
400
400
200
300
400

Seleccin
La seleccin de una relacin es un subconjunto horizontal de la misma, en este subconjunto
aparecen las tuplas que cumplen alguna condicin especificada, grficamente esto se ve:

Proveedor Where Ciudad = Guadalajara


VNO Vnombre Status
Ciudad
V1
Surez
20
Guadalajara
V4
Lpez
20
Guadalajara

Parte Where (Peso < 14)


PNO Pname
P1
Tuerca
P5 Rondana

Color
Rojo
Azul

Peso
12
12

Ciudad
Guadalajara
Monterrey

Suministra Where Vno= V6 OR Pno=P7


Vno

Pno

Cant

Proyeccin
La proyeccin de una relacin es un subconjunto vertical con la eliminacin de duplicados.
*
*
*

*
*
*

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

33

Proveedor Where Ciudad = Londres [Vnombre]


Vnombre
Surez
Lpez
Producto Cartesiano
Representa al producto cartesiano usual de conjuntos. Combina tuplas de cualquieras dos
(o ms) relaciones, realiza la combinacin de todos con todos. Si las relaciones a operar
tienen N y M tuplas de n y m componentes respectivamente, la relacin resultante del
producto cartesiano tiene N M tuplas de n + m componentes.
Suponer que se tiene la relacin Proyectos (Y) y se desea obtener el producto cartesiano
entre la relacin Proveedores (V) y Proyectos (Y).
Proyecto
Yno Ynombre
Ciudad
Y1
Mvil
Mxico
Y2 Sustetable Monterrey
Proveedor TIMES Proyecto
Vno Vnombre Status
Ciudad
V1
Surez
20
Guadalajara
V1
Surez
20
Guadalajara
V2 Camacho
10
Monterrey
V2 Camacho
10
Monterrey
V3 Velzquez
30
Monterrey
V3 Velzquez
30
Monterrey
V4
Lpez
20
Guadalajara
V4
Lpez
20
Guadalajara
V5
Jimnez
30
Xalapa
V5
Jimnez
30
Xalapa

YNO
Y1
Y2
Y1
Y2
Y1
Y2
Y1
Y2
Y1
Y2

Ynombre
Mvil
Sustentable
Mvil
Sustentable
Mvil
Sustentable
Mvil
Sustentable
Mvil
Sustentable

Ciudad
Mxico
Monterrey
Mxico
Monterrey
Mxico
Monterrey
Mxico
Monterrey
Mxico
Monterrey

Unin
La unin de dos relaciones A y B que deben ser compatibles a la unin es el conjunto de
tuplas que pertenecen a la relacin A, a la relacin B o a ambas relaciones, y se designa
por:

Dos relaciones son compatibles a la unin si tienen el mismo nmero de atributos(es


decir son del mismo grado), y deben existir atributos equivalentes dentro de las dos
relaciones, es decir:

El atributo 1 de la relacin A debe estar definido en el mismo dominio del atributo 1


de la relacin B, el atributo 2 de la relacin A debe estar definido en el mismo
dominio del atributo 2 de la relacin B, y as sucesivamente.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

34

Ejemplo:
Proveedor
Vno Vnombre Status
Ciudad
V1
Surez
20
Guadalajara
V2 Camacho
10
Monterrey
V3 Velzquez
30
Monterrey
V4
Lpez
20
Guadalajara
V5
Jimnez
30
Xalapa
Proveedor1
Vno Vnombre Status
Ciudad
V2 Camacho
10
Monterrey
V6
Lozano
20
Guadalajara
V7
Garca
10
Monterrey
Proveedor UNION Proveedor1
Vno Vnombre Status
Ciudad
V1
Surez
20
Guadalajara
V2 Camacho
10
Monterrey
V3 Velzquez
30
Monterrey
V4
Lpez
20
Guadalajara
V5
Jimnez
30
Xalapa
V6
Lozano
20
Guadalajara
V7
Garca
10
Monterrey
El resultado de la unin conserva los nombres de los atributos de la primera relacin.
Interseccin
La interseccin de dos relaciones A y B que deben ser compatibles a la unin, es el conjunto
de tuplas que pertenecen a la relacin A y a la relacin B.
Proveedor INTERSECT Proveedor1
Vno Vnombre Status
Ciudad
V2 Camacho
10
Monterrey
Nota: La interseccin puede expresarse en trminos de diferencias
A INTERSECT B = A MINUS (A MINUS B)
Diferencia
La diferencia de dos relaciones A y B que deben ser compatibles a la unin, es el conjunto
de tuplas que pertenecen a la relacin A y no a la relacin B.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

35

Proveedor MINUS Proveedor1


Vno Vnombre Status
Ciudad
V1
Surez
20
Guadalajara
V3 Velzquez
30
Monterrey
V4
Lpez
20
Guadalajara
V5
Jimnez
30
Xalapa
Proveedor1 MINUS Proveedor
Vno Vnombre Status
Ciudad
V6 Lozano
20
Guadalajara
V7
Garca
10
Monterrey
JOIN
Hace un producto cartesiano de sus dos argumentos y realiza una seleccin forzando la
igualdad de atributos que aparecen en ambas relaciones. Elimina repetidos (como toda
operacin de conjuntos).
Ejemplo:
Proveedor JOIN Suministra
Vno Vnombre Status
Ciudad
V1
Surez
20
Guadalajara
V1
Surez
20
Guadalajara
V1
Surez
20
Guadalajara
V1
Surez
20
Guadalajara
V1
Surez
20
Guadalajara
V1
Surez
20
Guadalajara
V2 Camacho
10
Monterrey
V2 Camacho
10
Monterrey
V3 Velzquez
30
Monterrey
V4
Lpez
20
Guadalajara
V4
Lpez
20
Guadalajara
V4
Lpez
20
Guadalajara

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

Pno
P1
P2
P3
P4
P5
P6
P1
P2
P2
P2
P4
P5

Cant
300
200
400
200
100
100
300
400
400
200
300
400

36

Divisin
R DIVIDEBY S

La divisin de dos relaciones es otra relacin cuya extensin estar constituida por las
tuplas que al completarse con las tuplas de la segunda relacin permiten obtener la primera.
Esto significa que, para cada tupla t que aparezca en el resultado T de la divisin, los
valores de t deben aparecer en R en combinacin con todas las tuplas de S.
Ejemplo:
Obtener los proyectos provistos por todos los proveedores
ProveedorProyecto
Vno
V1
V1
V1
V1
V2
V2
V3
V3

Proveedor

YnoNO
Y1
Y2
Y3
Y4
Y1
Y3
Y1
Y3

Vno
V1
V2
V3

ProveedorProyecto DIVIDEBY Proveedor


Yno
Y1
Y3
Obtener todos los proyectos a los que el proveedor V1 provee las partes P1 y P2, y el
proveedor V2 provee la parte P3.
ProveedorParteProyecto
Vno
V1
V1
V1
V1
V1
V1
V1
V2
V2
V2
V2

Pno
P1
P1
P2
P1
P4
P3
P2
P3
P3
P3
P3

Yno
Y1
Y4
Y1
Y2
Y1
Y3
Y2
Y1
Y2
Y3
Y4

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

ProveedorProyecto
Vno
V1
V1
V2

Pno
P1
P2
P3

37

ProveedorParteProyecto DIVIDEBY ProveedorProyecto


Yno
Y1
Y2

Ejercicio:
1.

Obtener los datos de los proveedores que viven en Xalapa


2. Obtener todos los atributos de todos los proyectos en Guadalajara.
3. Obtener los cdigos de los proveedores (Proveedor) del proyecto Y1.
4. Obtener los suministros (Suministra) cuya cantidad est entre 300 y 750 inclusive.
5. Obtener todas las ocurrencias de Parte.Color y Parte.Ciudad
6. Obtener el nombre de los proveedores que suministran la pieza con el cdigo P4.
7. Obtener el nombre de los proveedores que no suministran la pieza con el cdigo P4.
8. Obtener el cdigo de los proveedores que han surtido piezas cuya cantidad rebasa las
200 piezas (Suministra)
9. Obtener los proyectos que surte el proveedor V2
10. Obtener el color de las partes cuyo peso es menor a 12

Bibliografa:
Date C. J.
Introduccin a los
Sistemas de Bases de Datos
Prentice Hall
Sptima edicin 2001

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

38

SQL. Lenguaje de consulta en BD relacionales


SQL ("Structured Query Language") es un lenguaje para realizar consultas en BD relacionales. Fue
desarrollado por IBM, y despus de algunas modificaciones fue estandarizado en 1986.
SQL usa los trminos tabla, fila y columna para relacin, tupla y atributo, respectivamente.

Para realizar la prctica se crea la base de datos Compaa,

CREATE DATABASE Compania;

Creando una Base de Datos en Mysql


Para entender mejor como crear una base de datos desde el monitor de mysql, a continuacin se
dar una gua tomada de un tutorial de Mysql, de cmo acceder al monitor de mysql y algunas
consultas bsicas.

Mysql (algunas veces referido como "monitor mysql") es un programa interactivo que permite
conectarse a un servidor MySQL, ejecutar algunas consultas, y ver los resultados. mysql puede ser
usado tambin en modo batch: es decir, se pueden colocar toda una serie de consultas en un archivo,
y posteriormente decirle a mysql que ejecute dichas consultas.
mysql debe estar instalado en alguna mquina y se debe disponer de un servidor MySQL al cual se
puede conectar.
Para ver la lista de opciones proporcionadas por mysql, se solicita con la opcin --help:
mysql> mysql --help
A continuacin se describe el proceso completo de creacin y uso de una base de datos en MySQL.

Conectndose y desconectndose al servidor MySQL


Para conectarse al servidor, usualmente se necesita de un nombre de usuario (login) y de una
contrasea (password), y si el servidor al que se desea conectar est en una mquina diferente de la
nuestra, tambin se necesita indicar el nombre o la direccin IP de dicho servidor. Una vez que se
conocen estos tres valores, la conexin se realiza de la siguiente manera:

mysql> mysql -h NombredelServidor -u NombredeUsuario -p

Cuando ejecutamos este comando, se nos pedir que proporcionemos tambin la contrasea para el
nombre de usuario que estamos usando.
Si la conexin al servidor MySQL se pudo establecer de manera satisfactoria, recibiremos el mensaje
de bienvenida y estaremos en el prompt de mysql:
mysql>mysql -h localhost -u mluisa -p
Enter password: ******

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

39

Welcome to the MySQL monitor. Commands end with ; or \g.


Your MySQL connection id is 5563 to server version: 3.23.41
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

Este prompt nos indica que mysql est listo para recibir comandos.

Algunas instalaciones permiten que los usuarios se conecten de manera annima al servidor
corriendo en la mquina local. Si es el caso, se debe poder conectar al servidor invocando a mysql
sin ninguna opcin:
mysql> mysql
Despus de que la conexin se realiz de manera satisfactoria, se puede desconectar en cualquier
momento al escribir "quit", "exit", o presionar CONTROL+D.

Ejecutando algunas consultas


En este momento ya te encuentras conectado al servidor MySQL, aunque aun no se ha seleccionado
alguna base de datos para trabajar. Lo que se har a continuacin es describir algunos comandos
para irse familiarizando con el funcionamiento de mysql
mysql> SELECT VERSION(), CURRENT_DATE;
+-----------+--------------+
| VERSION() | CURRENT_DATE |
+-----------+--------------+
| 3.23.41 | 2002-10-01 |
+-----------+--------------+
1 row in set (0.03 sec)
mysql>
Este comando ilustra distintos aspectos acerca de mysql:

Un comando normalmente consiste de una sentencia SQL seguida por un punto y coma.

Cuando se escribe un comando, mysql lo manda al servidor para que lo ejecute, mostrando
los resultados y regresa el prompt indicando que est listo para recibir ms consultas.

mysql muestra los resultados de la consulta como una tabla (filas y columnas). La primera fila
contiene etiquetas para las columnas. Las filas siguientes muestran los resultados de la
consulta. Normalmente las etiquetas de las columnas son los nombres de los campos de las
tablas que se estn utilizando en alguna consulta. Si lo que se esta recuperando es el valor
de una expresin, las etiquetas en las columnas son la expresin en s.

mysql muestra cuntas filas fueron obtenidas y cuanto tiempo tard en ejecutarse la consulta,
lo cual puede dar una idea de la eficiencia del servidor, aunque estos valores pueden ser un
tanto imprecisos ya que no se muestra la hora del CPU, y porque pueden verse afectados por
otros factores, tales como la carga del servidor y la velocidad de comunicacin en una red.

Las palabras clave pueden ser escritas utilizando tanto maysculas como minsculas.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

40

Las siguientes consultas son equivalentes:


mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
Aunque hasta este momento se han escrito sentencias sencillas de una sola lnea, es posible escribir
ms de una sentencia por lnea, siempre y cuando estn separadas por punto y coma:
mysql> SELECT VERSION(); SELECT NOW();
+-----------+
| VERSION() |
+-----------+
| 3.23.41 |
+-----------+
1 row in set (0.01 sec)
+---------------------+
| NOW()
|
+---------------------+
| 2012-08-14 10:36:03 |
+---------------------+
1 row in set (0.01 sec)

Un comando no necesita ser escrito en una sola lnea, as que los comandos que requieran de varias
lneas no son un problema. mysql determinar en dnde finaliza la sentencia cuando encuentre el
punto y coma, no cuando encuentre el fin de lnea.

Aqu est un ejemplo que muestra una consulta simple escrita en varias lneas:

mysql> SELECT
-> USER(),
-> CURRENT_DATE;
+-------------------+--------------+
| USER()
| CURRENT_DATE |
+-------------------+--------------+
| mluisa@localhost | 2012-08-14 |
+-------------------+--------------+
1 row in set (0.00 sec)
mysql>

En este ejemplo debe notarse como cambia el prompt (de mysql> a ->) cuando se escribe una
consulta en varias lneas. Esta es la manera en cmo mysql indica que est esperando a que finalice
la consulta. Sin embargo si se desea no terminar de escribir la consulta, se puede hacer al escribir \c
como se muestra en el siguiente ejemplo:

mysql> SELECT
-> USER(),
-> \c
mysql>

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

41

De nuevo, se nos regresa el comando el prompt mysql> que nos indica que mysql est listo para
una nueva consulta.

En la siguiente tabla se muestran cada uno de los prompts que se pueden obtener y una breve
descripcin de su significado para mysql:

Prompt

Significado

mysql>

Listo para una nueva consulta.

->

Esperando la lnea siguiente de una consulta multi-lnea.

'>

Esperando la siguiente lnea para completar una cadena que


comienza con una comilla sencilla ( ' ).

">

Esperando la siguiente lnea para completar una cadena que


comienza con una comilla doble ( " ).

Los comandos multi-lnea comnmente ocurren por accidente cuando tecleamos ENTER, pero
olvidamos escribir el punto y coma. En este caso mysql se queda esperando para que finalicemos la
consulta:
mysql> SELECT USER()
->
Si esto llega a suceder, muy probablemente mysql estar esperando por un punto y coma, de
manera que si se escribe el punto y coma se puede completar la consulta y mysql podr ejecutarla:
mysql> SELECT USER()
-> ;
+----------------+
| USER()
|
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
mysql>
Los prompts '> y "> ocurren durante la escritura de cadenas. En mysql se pueden escribir cadenas
utilizando comillas sencillas o comillas dobles (por ejemplo, 'hola' y "hola"), y mysql permite escribir
cadenas que ocupen mltiples lneas. De manera que cuando se vea el prompt '> o ">, mysql, indica
que ha empezado a escribir una cadena, pero no se ha finalizado con la comilla correspondiente.

Aunque esto puede suceder si se est escribiendo una cadena muy grande, es ms frecuente que
obtenga alguno de estos prompts si inadvertidamente se escribe alguna de estas comillas.

Por ejemplo:

mysql> SELECT * FROM mi_tabla WHERE nombre = "Luis Manuel AND edad < 17;
">

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

42

Si se escribe esta consulta SELECT y entonces se presiona ENTER para ver el resultado, no
suceder nada. En lugar de preocuparse porque la consulta ha tomado mucho tiempo, se debe notar
la pista que da mysql cambiando el prompt. Esto indica que mysql est esperando que finalicemos la
cadena iniciada ("Luis Manuel).
En este caso, qu es lo que se debe hacer? . La cosa ms simple es cancelar la consulta. Sin
embargo, no basta con escribir \c, ya que mysql interpreta esto como parte de la cadena que estamos
escribiendo. En lugar de esto, se debe escribir antes la comilla correspondiente y despus \c :
mysql> SELECT * FROM mi_tabla WHERE nombre = "Luis Manuel AND edad < 17;
"> " \c
mysql>
El prompt cambiar de nuevo al ya conocido mysql>, indicndo que mysql est listo para una nueva
consulta.
Es sumamente importante conocer lo que significan los prompts '> y ">, ya que si en algn momento
aparece alguno de ellos, todas la lneas que se escriban a continuacin sern consideradas como
parte de la cadena, inclusive cuando se escribe QUIT. Esto puede ser confuso, especialmente si no
se sabe que es necesario escribir la comilla correspondiente para finalizar la cadena, para que se
pueda escribir despus algn otro comando, o terminar la consulta que se desea ejecutar.

Creando y usando una base de datos


Ahora que se conoce como escribir y ejecutar sentencias, es tiempo de acceder a una base de
datos.
Se utilizar la sentencia SHOW para ver cules son las bases de datos existentes en el servidor al
que se est conectado:

mysql> SHOW DATABASES;


+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)
mysql>

Es probable que la lista de bases de datos que se visualice sea diferente en cada caso, pero
seguramente las bases de datos "mysql" y "test" estarn entre ellas. En particular, la base de datos
"mysql" es requerida, ya que sta tiene la informacin de los privilegios de los usuarios de MySQL. La
base de datos "test" es creada durante la instalacin de MySQL con el propsito de servir como rea
de trabajo para los usuarios que inician en el aprendizaje de MySQL.
Se debe anotar tambin que es posible que no se visualicen todas las bases de datos si no se tiene el
privilegio SHOW DATABASES.
Si la base de datos "test" existe, hay que intentar acceder a ella:

mysql> USE test


Database changed
mysql>
Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

43

Observar que USE, al igual que QUIT, no requieren el uso del punto y coma, aunque si se usa ste,
no hay ningn problema. El comando USE es especial tambin de otra manera: ste debe ser usado
en una sola lnea.
Se podra usar la base de datos "test" (si se tiene acceso a ella) para los ejemplos que vienen a
continuacin, pero cualquier cosa que se Suponer que se desea tener una base de datos llamada
compana (ntese que no se escribi la ). Ahora se intentar poner en uso la base de datos
compania.
mysql> USE compania
ERROR 1049: Unknown database 'compania'
mysql>
El mensaje anterior indica que la base de datos no ha sido creada, por lo tanto necesitamos crearla.
mysql> CREATE DATABASE compania;
Query OK, 1 row affected (0.00 sec)
mysql> USE compania
Database changed
mysql>

Al crear una base de datos no se selecciona sta de manera automtica; se debe hacer de manera
explcita, por ello se utiliza el comando USE.

La base de datos se crea slo una vez, pero se debe seleccionar cada vez que se inicia una sesin
con mysql. Por ello es recomendable que se indique la base de datos sobre la que vamos a trabajar
al momento de invocar al monitor de MySQL. Por ejemplo:
mysql>mysql -h localhost -u root -p compania
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17 to server version: 3.23.38-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer
mysql>
Observar que "compania" no es la contrasea que se est proporcionando desde la lnea de
comandos, sino el nombre de la base de datos a la que se desea acceder. Si se desea proporcionar
la contrasea en la lnea de comandos despus de la opcin "-p", se puede hacer sin dejar espacios
(por ejemplo, -phola123, no como -p hola123). Sin embargo, escribir la contrasea nuestra
contrasea desde la lnea de comandos no es recomendado, ya que es bastante inseguro.

Creando una tabla


Crear la base de datos es la parte ms fcil, pero en este momento la base de datos est vaca, como
lo indica el comando SHOW TABLES:
mysql> SHOW TABLES;
Empty set (0.00 sec)

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

44

La instruccin CREATE TABLE es usada para especificar una nueva relacin, dndole un nombre y
especificando sus atributos y restricciones. A cada atributo se le da un nombre, un tipo de datos (para
especificar su dominio de valores) y opcionalmente algunas restricciones. De este modo se
especifican las restricciones de integridad (ver restricciones de integridad del modelo relacional).
El siguiente ejemplo muestra las instrucciones de creacin de datos en SQL.
CREATE TABLE DEPARTAMENTO
( DNOMBRE

VARCHAR(15)

NOT NULL,

DNUMERO

INT

NOT NULL,

NPERSONALGERENTE VARCHAR(10)
GERFECHAINIC

NOT NULL,

DATE,

PRIMARY KEY (DNUMERO));

CREATE TABLE EMPLEADO


( NPILA

VARCHAR(15)

NOT NULL,

APPAT

VARCHAR(15)

NOT NULL,

APMAT

VARCHAR(15)

NOT NULL,

NPERSONAL

VARCHAR(10)

NOT NULL,

FNAC

DATE,

DIRECCION

VARCHAR(30),

SEXO

CHAR,

SUELDO

DECIMAL(5,2),

NPERSONALSUPERV VARCHAR(10),
NDEPTO

INT

NOT NULL,

PRIMARY KEY (NPERSONAL),


FOREIGN KEY (NPERSONALSUPERV) REFERENCES EMPLEADO (NPERSONAL),
FOREIGN KEY (NDEPTO) REFERENCES DEPARTAMENTO(DNUMERO));
CREATE TABLE UBICACIONES_DEPTO
( DNUMERO

INT

NOT NULL,

DUBICACION VARCHAR(15) NOT NULL,

PRIMARY KEY (DNUMERO, DUBICACION),


FOREIGN KEY (DNUMERO) REFERENCES DEPARTAMENTO (DNUMERO));

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

45

CREATE TABLE PROYECTO


( PNOMBRE

VARCHAR(15)

NOT NULL,

PNUMERO

INT

NOT NULL,

PUBICACION VARCHAR(15),
DNUM

INT

NOT NULL,

PRIMARY KEY (PNUMERO),


UNIQUE (PNOMBRE),
FOREIGN KEY (DNUM) REFERENCES DEPARTAMENTO (DNUMERO));
CREATE TABLE TRABAJA_EN
( ENPERSONAL

VARCHAR(10)

NOT NULL,

PNO

INT

NOT NULL,

HORAS

DECIMAL(3,1)

NOT NULL,

PRIMARY KEY (ENPERSONAL, PNO),


FOREIGN KEY (ENPERSONAL) REFERENCES EMPLEADO (NPERSONAL),
FOREIGN KEY (PNO) REFERENCES PROYECTO (PNUMERO));
CREATE TABLE DEPENDIENTE
VARCHAR(10)

NOT NULL,

NOMBRE_DEPENDIENTE VARCHAR(15)

NOT NULL,

( ENPERSONAL

SEXO

CHAR,

FNAC

DATE,

PARENTESCO

VARCHAR(8),

PRIMARY KEY (ENPERSONAL, NOMBRE_DEPENDIENTE),


FOREIGN KEY (ENPERSONAL) REFERENCES EMPLEADO (NPERSONAL));

Tambin se puede agregar explcitamente el nombre del schema a cada tabla, separado por un
punto. Por ejemplo:
CREATE TABLE COMPAIA.EMPLEADO ...
Esto

hace

que

la

tabla

EMPLEADO

sea

parte

del

schema

COMPAIA.

Los tipos de datos disponibles para los atributos incluyen: numrico, tira de caracteres, carcter,
fecha y hora. Los tipos numricos pueden incluir nmeros enteros de varios tamaos (INT y
SMALLINT), nmeros reales de varias precisiones (FLOAT, REAL, DOUBLE PRECISION). Adems
se pueden declarar nmeros con formato, usando DECIMAL(i,j). Las tiras de caracteres pueden ser
Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

46

de largo fijo (CHAR(n)) o de largo variable (VARCHAR(n), donde n es el mximo nmero de


caracteres). La fecha tiene 10 posiciones, tpicamente AAAA-MM-DD. La hora tiene al menos 8
posiciones, tpicamente HH:MM:SS. Solamente fechas y horas vlidas son permitidas en las
implementaciones de SQL.

En SQL es posible especificar directamente el tipo de dato para cada atributo, como se mostr en el
ejemplo anterior. Pero tambin se pueden declarar dominios, y usar el nombre de stos. Esto facilita
hacer cambios en los tipos de datos (cambiando slo el dominio y no cada dato declarado). Por
ejemplo, podemos crear el dominio TIPO_NPERSONAL con la siguiente instruccin:
CREATE DOMAIN TIPO_NPERSONAL AS VARCHAR(10);
A partir de ahora, podemos usar TIPO_NPERSONAL en lugar de VARCHAR(10), por ejemplo en los
atributos NPERSONAL, NPERSONALSUPERV, NPERSONALGERENTE y ENPERSONAL del
ejemplo anterior.
Debido a que SQL permite el "NULL" (nulo) como valor de sus atributos, es necesario especificar la
restriccin "NOT NULL" para los atributos que no permiten este valor (por violaciones de integridad).
Esta restriccin siempre debe ser especificada para los atributos que son llaves primarias en cada
relacin.

Es posible definir un valor por defecto para un atributo agregando la clusula DEFAULT "valor" en la
definicin del atributo.

La clusula PRIMARY KEY especifica uno o ms atributos que forman la llave primaria de la relacin.
La clusula UNIQUE especifica llaves alternas. La integridad de referencia es especificada a travs
de la clusula FOREIGN KEY.
Las restricciones de integridad referencial pueden ser violadas cuando las tuplas son insertadas o
borradas, o cuando se cambia el valor de un atributo que es llave fornea. Al crear el schema es
posible especificar las acciones a ser tomadas cuando una restriccin de integridad referencial es
violada, ya sea por borrado de una tupla referenciada en otra tabla, o por modificacin del valor de
una llave primaria referenciada en otra tabla. Estas acciones son: ON DELETE (cuando la tupla se
borra) y ON UPDATE (cuando la tupla se modifica), que pueden tener las opciones: SET NULL
(ponga en nulo), CASCADE (actualice todas las referencias "en cascada"), y SET DEFAULT (ponga
el valor por defecto). Por ejemplo:

CREATE TABLE EMPLEADO


( ...,
NDEPTO INT NOT NULL DEFAULT 1,
CONSTRAINT EMPLP
PRIMARY KEY NPERSONAL,
CONSTRAINT NPERSONALSUPLF
FOREIGN KEY (NPERSONALSUPERV) REFERENCES EMPLEADO(NPERSONAL)
ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT NDEPTOLF
FOREIGN KEY (NDEPTO) REFERENCES DEPARTAMENTO(DNUMERO)
ON DELETE SET DEFAULT ON UPDATE CASCADE );
Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

47

En el ejemplo anterior, si la tupla de un empleado supervisor es borrada, el valor de


NPERSONALSUPERV es puesto en nulo (NULL) para todas las tuplas de empleados que referencian
al empleado de la tupla borrada. Adems, si el valor de NPERSONAL es modificado para un
empleado supervisor (por ejemplo porque fue ingresado incorrectamente), el nuevo valor es
actualizado "en cascada" en NPERSONALSUPERV para todos los empleados que referencian la
tupla modificada de este supervisor.

En el caso de NDEPTO, ste es puesto en 1 (el valor declarado por defecto) si la tupla
correspondiente a ese nmero de departamento es borrada de la tabla de DEPARTAMENTO, y es
actualizado en cascada (en toda la tabla) cuando la tupla correspondiente en DEPARTAMENTO es
actualizada.

A las restricciones se les puede dar nombre usando la palabra CONSTRAINT.


Para borrar un schema completo se usa la instruccin DROP SCHEMA, con dos opciones:
CASCADE o RESTRICT. Por ejemplo, para borrar el schema de base de datos COMPAIA y todas
sus tablas, dominios y otros elementos, se usa la opcin CASCADE:
DROP DATABASE COMPAIA CASCADE;
Si en la instruccin anterior se remplaza la opcin CASCADE por RESTRICT, el schema es borrado
solamente si no tiene elementos. En caso de que el schema tenga algn elemento, el borrado no es
ejecutado.

Una relacin o tabla puede ser borrada del schema de BD usando la instruccin DROP TABLE. Por
ejemplo, si la relacin DEPENDIENTE con informacin de los dependientes de los empleados no va a
ser utilizada ms en la BD COMPAIA, se puede borrar de la siguiente manera:
DROP TABLE DEPENDIENTE CASCADE;
Si la opcin RESTRICT es usada en lugar de CASCADE, la tabla es borrada solamente si sta no es
referenciada en ninguna restriccin (por ejemplo como llave fornea en otra tabla). Con la opcin
CASCADE todas las restricciones que referencian esta tabla, son borradas automticamente del
schema, junto con la tabla.

La definicin de una tabla puede ser modificada usando la instruccin ALTER TABLE. Con esta
instruccin es posible agregar o borrar atributos (columnas), cambiar la definicin de una columna, y
agregar o borrar restricciones. Por ejemplo, para agregar un atributo con el puesto de los empleados
de la tabla EMPLEADO, se usa:
ALTER TABLE COMPAIA.EMPLEADO ADD PUESTO VARCHAR(12);
Agregar una llave fornea a la relacin departamento
ALTER TABLE DEPARTAMENTO ADD FOREIGN KEY(NPERSONALGERENTE)
REFERENCES EMPLEADO(NPERSONAL);
Para borrar una columna se puede usar CASCADE o RESTRICT. Con CASCADE todas las
restricciones son borradas automticamente del schema, junto con la columna. Por ejemplo:

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

48

ALTER TABLE COMPAIA.EMPLEADO DROP DIRECCION CASCADE,


Si en la instruccin anterior se usa la opcin RESTRICT en lugar de CASCADE, el atributo
DIRECCION es borrado solamente si ninguna restriccin lo referencia.

Tambin es posible borrar una clusula por defecto as como definir una nueva. Por ejemplo:
ALTER TABLE COMPAIA.EMPLEADO ALTER NDEPTO DROP DEFAULT;
ALTER TABLE COMPAIA.EMPLEADO ALTER NDEPTO SET DEFAULT "5";
Finalmente, se pueden borrar o agregar restricciones en una tabla. Para borrar una restriccin sta
debe tener un nombre (dado con CONSTRAINT). Por ejemplo, para borrar la restriccin NDEPTOLF
de la tabla EMPLEADO:
ALTER TABLE COMPAIA.EMPLEADO DROP CONSTRAINT NDEPTOLF CASCADE;

Modificacin de la Base de Datos.

Insercin: para insertar datos en una relacin, se especfica una tupla que se va a insertar o
escribimos una consulta cuyo resultado es un conjunto de tuplas que se van a insertar. .
La sentencia Insert ms sencilla es una solicitud para insertar una tupla.
Insert into Empleado values (Juan, Prez, Garca, 12345678 1955-01-09, vila Camacho, M,
120, 33344555,5)
Nota: Estos valores no contemplan los atributos agregados o borrados mediante la orden ALTER
TABLE, adems de que la fecha se debe introducir en el formato de ao, mes y da.
*El orden de los valores debe ser del mismo orden en que fueron definidos los atributos, as como el
tipo del dato debe coincidir.
Si no se recuerda el orden de los atributos, otra manera de insertar valores es:
Insert into Empleado (Atributo1, Atributo2,....,Atributo_n) values (valor1,valor2,...valor_n)
Load Data Infile

Otra manera de introducir datos a las tablas, es creando un archivo txt, el cual debe ser almacenado
en la carpeta bin de mysql, este archivo contendr las tuplas de una relacin, el conjunto de valores
de los atributos debern ir en el orden definidos separados por tabulador.
La orden para cargar los datos es:
Load Data Local Infile nombrearchivo.txt into table nombretabla;
Ejemplo:

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

49

Insertar en la tabla Departamento los siguientes datos.


Of.Central
Administracin
Investigacin

1
4
5

8886655
98765432
33344555

1971-06-19
1986-01-01
1978-05-22

Crear el archivo txt con 3 filas, cada valor debe estar separado por tabulador, guardar el archivo txt
con el nombre datosdep.txt en la carpeta BIN de Mysql.
Ahora ejecutar desde Mysql la siguiente orden:
Load Data Infile datosdep.txt into table Departamento;
Obviamente la Base de Datos Compania debe estar en uso (USE Compania).
Actualizaciones

En ciertas situaciones podemos desear cambiar un valor en una tupla sin cambiar todos los valores
en la tupla. Para este propsito puede usarse la sentencia Update, se pueden elegir las tuplas que se
van a actualizar usando una consulta.
Update proyecto
Set Lugarp= Veracruz, Numd =54 where Numerop= 10;

Update Empleado set Salario=Salario *1.1 where Nd in (Select Numerod from Departamento where
Nombred=Investigacin);
Seleccionar la tabla que se desea examinar: Select Empleado
* Visualizar los resultados con el comando Browse
Eliminacin: Una solicitud de eliminacin se expresa casi en la misma forma que una consulta.
Podemos suprimir solamente tuplas completas; no podemos suprimir valores slo de atributos
determinados.
En SQL una supresin se expresa por medio de:
Delete from r.
Where P;

Ejemplos:
Delete from Empleado
Where Apellido = Jimnez;

Delete from Empleado


Where No_per= 12345678;
Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

50

Delete from Empleado


Where
ND
in
Nombred=Investigacin);

(Select

Numerod

from

Departamento

where

Delete from Empleado; (Borra todas las tuplas de la relacin)


* No hacerlo
Consultas en SQL
SQL tiene una instruccin principal para recuperar informacin de una base de datos: el comando
SELECT. Esta instruccin tiene muchas opciones. La forma bsica de la instruccin SELECT es la
siguiente:
SELECT <lista de atributos>
FROM <lista de tablas>
WHERE <condicin>
Donde:
<lista de atributos> es una lista de nombres de atributos cuyos valores van a ser recuperados
por la consulta.

<lista de tablas> es una lista de nombres de relaciones requeridos para procesar la consulta.
<condicin> es una expresin de bsqueda condicional (lgica) que identifica las tuplas que
van a ser recuperadas por la consulta.

En los siguientes ejemplos se utilizaran las tablas (junto con la informacin de stas) definidas en las
secciones anteriores.
Consulta 0
Recuperar la fecha de nacimiento y la direccin del empleado cuyo nombre es "Juan Prez".
Q0:

SELECT FNAC, DIRECCION


FROM

EMPLEADO

WHERE NPILA = "Juan" AND APPAT = "Prez";

Esta consulta involucra solamente la relacin EMPLEADO, sealada en la clusula FROM. La


consulta selecciona la tupla de EMPLEADO que satisface la condicin de la clusula WHERE, y
selecciona los valores de esta tupla correspondientes a los atributos FNAC y DIRECCION.
Consulta 1
Recuperar el nombre y la direccin de todos los empleados que trabajan en el departamento
"Investigacin".

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

51

Q1:

SELECT NPILA, APPAT, DIRECCION


FROM

EMPLEADO, DEPARTAMENTO

WHERE DNOMBRE = "Investigacin" AND DNUMERO = NDEPTO;

En la clusula WHERE, la condicin DNOMBRE = Investigacin es una condicin de seleccin. La


condicin DNUMERO = NDEPTO es una condicin de asociacin, y asocia la llave fornea NDEPTO
de la relacin EMPLEADO, con el correspondiente nmero de departamento (DNUMERO) de la
relacin DEPARTAMENTO. La siguiente consulta tiene dos condiciones de asociacin
Consulta 2
Para todos los proyectos localizados en Veracruz, liste el nmero de proyecto, el nmero de
departamento que lo controla, y el nombre, direccin y fecha de nacimiento del gerente de ese
departamento.
Q2:

SELECT PNUMERO, DNUM, NPILA, APPAT, DIRECCION, FNAC


FROM

PROYECTO, DEPARTAMENTO, EMPLEADO

WHERE DNUM = DNUMERO AND NPERSONALGERENTE = NPERSONAL AND PUBICACION = Veracruz

;
La condicin DNUM = DNUMERO relaciona un proyecto con su correspondiente departamento,
mientras que la condicin NPERSONALGERENTE = NPERSONAL relaciona el departamento que
controla el proyecto, con el empleado que administra ese departamento.
En SQL, un mismo nombre puede ser usado por dos (o ms) atributos en diferentes relaciones.
Cuando esto sucede, y una consulta se refiere a dos o ms atributos con el mismo nombre, el nombre
de la relacin debe ser puesto como prefijo del nombre de cada atributo, para Evitar ambigedad. Por
ejemplo, supongamos que los atributos NDEPTO y NPILA de EMPLEADO se llamaran DNUMERO y
NOMBRE respectivamente, y el atributo DNOMBRE de DEPARTAMENTO tambin se llamara
NOMBRE. Entonces, para evitar ambigedad en Q1, deberamos usar como prefijos de los atributos,
los nombres de las relaciones:
Q1A:

SELECT EMPLEADO.NOMBRE, APPAT, DIRECCION


FROM

EMPLEADO, DEPARTAMENTO

WHERE DEPARTAMENTO.NOMBRE = "Investigacin" AND DEPARTAMENTO.DNUMERO =


EMPLEADO.DNUMERO;

La ambigedad tambin aparece en el caso de que la consulta se refiera a la misma relacin dos o
ms veces, como en el siguiente ejemplo.
Consulta 3
Para cada empleado, recuperar el nombre y primer apellido, y el nombre y primer apellido de su
supervisor inmediato.
Q3:

SELECT E.NPILA, E.APPAT, S.NPILA, S.APPAT


FROM

EMPLEADO E, EMPLEADO S

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

52

WHERE E.NPERSONALSUPERV = S.NPERSONAL;

En este caso, se pueden declarar nombres alternativos para la misma relacin, llamados alias. El
nombre del alias se escribe inmediatamente despus del nombre de la relacin. Tambin se puede
declarar usando la palabra "AS", por ejemplo: EMPLEADO AS E. Tambin es posible renombrar
(como alias) todos los atributos de una relacin en la clusula FROM, de esta manera: EMPLEADO
AS E(NP, AP1, AP2, NPERSONAL, FN, DIR, SE, SU, NPERSONALS, ND). De este modo, se podra
comparar (en la consulta anterior) E.NPERSONALS = S.NPERSONAL.

Los alias pueden ser usados en cualquier consulta, no slo cuando hay nombres repetidos. Los alias
tienen sentido slo en la consulta en que son definidos. Un alias no cambia "fsicamente" el nombre
de ninguna relacin ni atributo de la BD.

En una consulta puede omitirse la clusula WHERE, lo que indica que no hay condiciones sobre las
tuplas a seleccionar (TODAS las tuplas son seleccionadas). Por ejemplo:
Consulta 4
Recuperar todos los nmeros de NPERSONAL de los empleados.
Q4:

SELECT NPERSONAL
FROM

EMPLEADO;

Si ms de una relacin es especificada en la clusula FROM, y no existe clusula WHERE, entonces


el producto cruz (todas las posibles combinaciones de tuplas) de estas relaciones es seleccionado.
Por ejemplo:
Consulta 5
Recuperar todas las combinaciones de nmeros de NPERSONAL de los empleados y nombre de
departamentos.
Q5:

SELECT NPERSONAL, DNOMBRE


FROM

EMPLEADO, DEPARTAMENTO;

Es importante especificar cada condicin de seleccin y cada condicin de asociacin en la clusula


WHERE. Si alguna de estas condiciones es omitida, relaciones incorrectas o muy grandes pueden
dar como resultado.

Para recuperar todos los valores de los atributos de las tuplas seleccionadas, se puede usar un
asterisco (no es necesario poner todos los nombres), el cual significa todos los atributos. Por ejemplo:
Consulta 6
Recuperar los valores de todos los atributos de EMPLEADO que trabajan en el departamento nmero
"5".
Q6:

SELECT *

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

53

FROM

EMPLEADO

WHERE NDEPTO = 5;

Consulta 7
Recuperar los valores de todos los atributos de EMPLEADO y los atributos del DEPARTAMENTO en
que el empleado trabaja, para cada empleado del departamento de "Investigacin".
Q7:

SELECT *
FROM

EMPLEADO, DEPARTAMENTO

WHERE DNOMBRE = "Investigacin" AND NDEPTO = DNUMERO;

Consulta 8
Recuperar el producto cruz de las relaciones EMPLEADO y DEPARTAMENTO.
Q8:

SELECT *
FROM

EMPLEADO, DEPARTAMENTO;

En una consulta SQL pueden aparecer tuplas duplicadas. Si no queremos que esto suceda, se puede
usar la palabra DISTINCT en la clusula SELECT, en cuyo caso slo tuplas distintas aparecen en la
relacin. Por ejemplo:
Consulta 9
Recuperar el salario de cada empleado.
Q9:

SELECT SUELDO
FROM

EMPLEADO;

En la consulta anterior obtenemos una tabla con la lista de salarios de todos los empleados. Sin
embargo, si dos o ms empleados ganan lo mismo, el mismo valor aparece varias veces en la tabla.
Si queremos que no se repitan los salarios, usamos DISTINCT:
Q9A:

SELECT DISTINCT SUELDO


FROM

EMPLEADO;

En SQL existe una operacin UNION que regresa la unin (como en conjuntos) de relaciones, es
decir, regresa todas las tuplas que aparecen en alguna de las relaciones. Las tuplas duplicadas son
eliminadas del resultado, a menos que se especifique la clusula ALL despus de la operacin. Por
ejemplo:
Consulta 10
Regresar una lista con todos los nmeros de proyecto que involucran un empleado de apellido
"Prez", ya sea como trabajador o como gerente del departamento que controla ese proyecto.
Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

54

Q10:

( SELECT PNUMERO
FROM

PROYECTO, DEPARTAMENTO, EMPLEADO

WHERE

DNUM = DNUMERO AND NPERSONALGERENTE = NPERSONAL AND APPAT = "Prez" )

UNION
( SELECT PNO
FROM

TRABAJA_EN, EMPLEADO

WHERE

ENPERSONAL = NPERSONAL AND APPAT = "Prez" );

El primer SELECT recupera los proyectos que involucran a "Prez" como gerente del departamento
que controla el proyecto, y el segundo SELECT regresa los proyectos que involucran a "Prez" como
trabajador en el proyecto. Note que si varios empleados tienen como primer apellido "Prez", se
recuperan los nmeros de proyecto en que estn involucrados todos ellos. Al aplicar la operacin
UNION a los dos SELECT, se obtiene el resultado deseado.
Consultas en SQL
Algunas consultas requieren que ciertos valores de la base de datos sean antes recuperados y luego
usados en las condiciones de comparacin. Estas consultas pueden ser implementadas a travs de
consultas anidadas, donde hay consultas completas dentro de las clusulas WHERE de otras
consultas. Por ejemplo, la consulta anterior (Q10) podra ser implementada as:
Q10A:

SELECT DISTINCT
PNUMERO
FROM

PROYECTO

WHERE PNUMERO IN

( SELECT PNUMERO
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE DNUM = DNUMERO AND NPERSONALGERENTE = NPERSONAL AND
APPAT = "Prez" )

OR
PNUMERO IN

( SELECT PNO
FROM TRABAJA_EN, EMPLEADO
WHERE ENPERSONAL = NPERSONAL AND APPAT = "Prez" );

La primera consulta anidada selecciona los nmeros de proyecto de los proyectos que tienen a
"Prez" como gerente, mientras que la segunda selecciona los nmeros de proyecto que tienen a
"Prez" como trabajador. El operador de comparacin IN compara un valor v con un conjunto de
valores V, y regresa TRUE si v es uno de los elementos en V.
Adems del operador IN, pueden ser usados otros operadores para comparar un valor v (tpicamente
un nombre de atributo) con un conjunto V (tpicamente una consulta anidada). El operador "= ANY" (o
"= SOME") regresa TRUE si el valor v es igual a algn valor en el conjunto V. ANY y SOME tienen el

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

55

mismo significado, y en este caso son equivalentes a IN. Otros operadores que pueden ser
combinados con ANY (o con SOME) incluyen >, >=, <, <= y <>. Por ejemplo, la condicin "v > ALL V"
regresa TRUE si el valor v es mayor que todos los valores del conjunto V.
Consulta 11
Recuperar los nombres de los empleados cuyo salario es mayor que el salario de todos los
empleados del departamento 5.

SELECT NPILA, APPAT


Q11:
FROM

EMPLEADO

WHERE SUELDO > ALL ( SELECT SUELDO


FROM EMPLEADO
WHERE NDEPTO = 5 );

En las consultas anidadas pueden usarse atributos de las consultas exteriores. Por ejemplo:
Consulta 12
Recuperar el nombre de cada empleado que tenga un dependiente con el mismo nombre de pila y
sexo que el empleado.
Q12:

SELECT

E.NPILA,
E.APPAT

FROM

EMPLEADO

WHERE

E.NPERSONAL
IN (

SELECT ENPERSONAL

FROM DEPENDIENTE
WHERE ENPERSONAL = E.NPERSONAL AND E.NPILA = NOMBRE_DEPENDIENTE
AND DEPENDIENTE.SEXO = E.SEXO );

Las consultas anidadas siempre pueden ser escritas como consultas de un slo bloque. Por ejemplo,
la consulta anterior puede ser escrita as:
Q12A:

SELECT E.NPILA, E.APPAT


FROM

EMPLEADO E, DEPENDIENTE C

WHERE E.NPERSONAL = C.ENPERSONAL AND E.SEXO = C.SEXO AND E.NPILA =


C.NOMBRE_DEPENDIENTE;

La clusula EXISTS es usada para verificar cundo el resultado de una consulta anidada est vaco
(no contiene tuplas). Por ejemplo:

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

56

Consulta 13
Recuperar los nombre de los empleados que no tienen dependientes.
Q13:

SELECT

NPILA,
APPAT

FROM

EMPLEADO

WHERE NO EXISTS (

SELECT *
FROM DEPENDIENTE
WHERE ENPERSONAL = NPERSONAL );

Es posible renombrar los atributos que aparecen en el resultado de una consulta, agregando el
calificador AS seguido del nuevo nombre. Por ejemplo, la consulta 3 podra ser modificada para
distinguir el nombre del empleado del nombre de su supervisor, de la siguiente manera:
Q3A:

SELECT E.NPILA AS NOMBRE_EMP, E.APPAT AS APELLIDO_EMP, S.NPILA AS NOMBRE_SUP, S.APPAT AS


APELLIDO_SUP
FROM

EMPLEADO AS E, EMPLEADO AS S

WHERE E.NPERSONAL = S.NPERSONALSUPERV;

SQL permite usar algunas funciones como COUNT (cuenta el nmero de tuplas en una consulta),
SUM (regresa la suma de algn atributo numrico), MIN (regresa el mnimo), MAX (regresa el
mximo) y AVG (regresa el promedio). Por ejemplo:
Consulta 14
Regresar la suma de los salarios de todos los empleados, el salario mximo, el salario mnimo y el
promedio de los salarios.
Q14:

SELECT SUM(SUELDO), MAX(SUELDO), MIN(SUELDO), AVG(SUELDO)


FROM

EMPLEADO;

Consulta 15
Regresar el nmero de empleados del departamento de "Investigacin".
Q15:

SELECT COUNT(*)
FROM

EMPLEADO, DEPARTAMENTO

WHERE DNUMERO = NDEPTO AND DNOMBRE = "Investigacin"

;
Consulta 16
Cuente el nmero de salarios distintos en la base de datos.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

57

Q16:

SELECT COUNT(DISTINCT SUELDO)


FROM

EMPLEADO;

Consulta 17
Regrese los nombres de todos los empleados que tienen ms de dos dependientes.
Q17:

SELECT NPILA, APPAT


FROM

EMPLEADO

WHERE ( SELECT COUNT (*)


FROM DEPENDIENTE
WHERE ENPERSONAL = NPERSONAL ) >= 2;

En muchos casos se quiere aplicar una funcin a grupos de tuplas en una relacin. Por ejemplo, si
queremos conocer el promedio de salarios de empleados por cada departamento. En estos casos
necesitamos agrupar por cierto(s) atributo(s). Para hacer esto, SQL provee la clusula GROUP BY.
Consulta 18
Para cada departamento regrese: el nmero de departamento, el nmero de empleados en ese
departamento y el salario promedio.
Q18:

SELECT

NDEPTO, COUNT(*), AVG(SUELDO)

FROM

EMPLEADO

GROUP BY NDEPTO;

Consulta 19
Para cada proyecto regrese su nmero, nombre, y nmero de empleados que trabajan en l.

Q19:

SELECT

PNUMERO, PNOMBRE, COUNT(*)

FROM

PROYECTO, TRABAJA_EN

WHERE

PNUMERO = PNO

GROUP BY PNUMERO, PNOMBRE

En el ejemplo anterior, el agrupamiento y las funciones son aplicados despus de la unin de las dos
relaciones. Sin embargo, algunas veces se desea recuperar los valores de estas funciones solamente
para grupos que satisfacen ciertas condiciones. Por ejemplo, suponer que queremos modificar la
consulta anterior para que solamente aparezcan los proyectos con ms de dos empleados. Para
hacer esto, SQL provee la clusula HAVING, la cual puede aparecer junto con la clusula GROUP
BY. HAVING provee una condicin sobre el grupo de tuplas asociadas con cada valor de los atributos

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

58

agrupados, y en el resultado aparecen solamente los grupos que satisfacen esta condicin. Por
ejemplo:
Consulta 20
Para cada proyecto en que trabajan ms de dos empleados, recuperar el nmero de proyecto, el
nombre del proyecto, y el nmero de empleados que trabajan en el proyecto.
Q20:

SELECT

PNUMERO, PNOMBRE, COUNT(*)

FROM

PROYECTO, TRABAJA_EN

WHERE

PNUMERO = PNO

GROUP BY PNUMERO, PNOMBRE


HAVING

COUNT(*) > 2;

Consulta 21
Para cada departamento que tenga ms de cinco empleados, recuperar el nmero de departamento y
el nmero de empleados que ganan ms de $350.000.
Q21:

SELECT DNOMBRE, COUNT(*)


FROM

DEPARTAMENTO, EMPLEADO

WHERE DNUMERO = NDEPTO AND SUELDO > 350.000 AND NDEPTO IN


( SELECT NDEPTO
FROM EMPLEADO
GROUP BY NDEPTO
HAVING COUNT(*) > 5 );

Finalmente, SQL permite ordenar las tuplas que resultan de las consultas, por los valores de uno o
ms atributos, usando la clusula ORDER BY. Por ejemplo:
Consulta 22
Regrese una lista de empleados y los proyectos en los que trabajan, ordenada por departamento, y
dentro de cada departamento, ordenada alfabticamente por nombre y apellido.
Q22:

SELECT

DNOMBRE, NPILA, APPAT, PNOMBRE

FROM

DEPARTAMENTO, EMPLEADO, TRABAJA_EN, PROYECTO

WHERE

DNUMERO = NDEPTO AND NPERSONAL = ENPERSONAL AND PNO = PNUMERO

ORDER BY DNOMBRE, APPAT, NPILA;

Por defecto, el ordenamiento es en orden ascendente (ASC). Tambin se puede especificar un orden
descendiente (DESC). Por ejemplo, si en la consulta anterior se desea tener ordenado

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

59

descendentemente por nombre de departamento, y ordenado ascendentemente por nombre de


empleado, se puede especificar as:
ORDER BY DNOMBRE DESC, APPAT ASC, NPILA ASC

Conjunto Explcitos y valores NULOS en SQL


Es posible utilizar un conjunto explcito de valores en lugar de una consulta anidada.
Ejemplo: Obtener el nmero del seguro social de todos los empleados que trabajan en los proyectos
1,2,3

Select Distinct ENPERSONAL


From TRABAJA_EN
Where PNO IN (1,2,3);

Obtener los nombres de todos los empleados que no tienen supervisores


Select NPILA, APPAT,APMA
From Empleado
Where NPERSONALSUPERV IS NULL;

Tablas Reunidas(JOIN)
El concepto de tabla reunida (o relacin reunida) se incorpor en SQL para que los usuarios
pudieran especificar una tabla resultante de una operacin de reunin en la clasula FROM de una
consulta.
SELECT NPLIA, APPAT, APMAT, SUELDO
FROM (EMPLEADO JOIN DEPARTAMENTO ON NDEPT=DNUMERO)
WHERE DNOMBRE = Investigacin;

Esta consulta obtiene el nombre y el salario de todos los empleados que trabajan para el
departamento de Investigacin.

COMPARACIONES DE SUBCADENAS (CLASULA LIKE)


Ejemplo: Obtener todos los empleados cuya direccin est en vila Camacho, Xalapa

SELECT NPILA, APPAT; APMAT


FROM EMPLEADO
WHERE DIRECCIN LIKE %<Camacho, Xa%;

% sustituye a un nmero arbitrario de caracteres.

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

60

Ejemplo: Encontrar todos los empleados de nacieron en la dcada de 1970

SELECT NPILA, APPAT, APMAT


FROM EMPLEADO
WHERE FNAC LIKE --7-------;

sustituye a un solo carcter arbitrario

Ejemplo: Mostrar los salarios resultantes si cada empleado que trabaja en el proyecto Producto X
recibe un aumento del 10%
SELECT NPILA, APPAT, APMAT,1.1 * SUELDO
FROM EMPLEADO, TRABAJA_EN, PROYECTO
WHERE NPERSONAL=TRABAJA_EN.ENPERSONAL AND PNO=PNUMERO AND
PNOMBRE=Producto X;

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

61

Instancia de la Base de Datos.


Los siguientes datos corresponden a una instancia de la base de datos.

EMPLEADO

NPILA

APPAT

APMAT

Npersonal

FNAC

DIRECCION

SE
XO

SUELDO

NpersonalSuperv

NDEPTO

Juan

Prez

Garca

12345678

9-1-55

vila
Camacho

120

33344555

Alicia

Zelaya

Roa

99988777

19-7-58

Murillo Vidal

105

98765432

Juana

Meja

Martnez

98765432

20-6-31

Enrquez

240

88866555

Francisco Zea

Garca

33344555

8-12-45

310

88866555

Jaime

Salas

88866555

10-11-30

360

98765432

Ramos

DEPARTAMENTO DNOMBRE

Papantla

DNUMERO RUTGERENTE GERFECHAINIC

Of. Central

88866555

19-6-71

Administracin 4

98765432

1-1-85

Investigacin

33344555

22-5-78

UBICACIONES_DEPTO DNUMERO DUBICACION

PROYECTO PNOMBRE

Xalapa

Coatepec

Veracruz

Xalapa

PNUMERO PUBICACION DNUM

Producto X

Veracruz

Producto Y

Coatepec

Xalapa

Computarizacin 10

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

62

Reorganizacin

TRABAJA_EN ERUT

20

PNO HORAS

12345678 1

32.5

12345678 2

7.5

33344555 2

10.0

99988777 10

10.0

98765432 10

10.0

98765432 20

15.0

88866555 20

NULL

CARGA ERUT

Xalap

NOMBRE_CARGA SEXO FNAC

PARENTESCO

33344555 Alicia

5-4-86

Hija

33344555 Pedro

25-10-83 Hijo

33344555 Ximena

3-5-54

Cnyuge

98765432 Rodolfo

28-2-32

Cnyuge

12345678 Alejandra

5-5-57

cnyuge

Bibliografa:
Navathe y Elmasri
"Sistemas de Base de datos
Conceptos Fundamentales
Tercera Edicin 2002
Addison Wesley Iberoamericana

Gua de Ejercicios Prcticos Fundamentos de Bases de Datos

63

Вам также может понравиться