guia eejerciciospracticos

62
LICENCIATURA EN SISTEMAS COMPUTACIONALES ADMINISTRATIVOS EXPERIENCIA EDUCATIVA FUNDAMENTOS DE BASES DE DATOS GUÍA DE EJERCICIOS PRÁCTICOS PRESENTAN: M.T.E MARIA LUISA VELASCO RAMIREZ M.E PATRICIA ARIETA MELGAREJO

Upload: maria-luisa-velasco

Post on 17-Jun-2015

1.216 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Guia eejerciciospracticos

LICENCIATURA EN SISTEMAS

COMPUTACIONALES ADMINISTRATIVOS

EXPERIENCIA EDUCATIVA FUNDAMENTOS DE BASES DE DATOS

GUÍA DE EJERCICIOS PRÁCTICOS

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

Page 2: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 2

Índice

Introducción ............................................................................................................................................ 5

Ejercicios Prácticos Conceptos Básicos .................................................................................................. 6

Fundamento Teórico ........................................................................................................................... 6

Saberes a reforzar ............................................................................................................................... 6

Estrategia metodológica propuesta .................................................................................................... 7

Ejercicio 1 ............................................................................................................................................ 7

Ejercicio 2 ............................................................................................................................................ 7

Ejercicio 3 ............................................................................................................................................ 7

Ejercicio 4 ............................................................................................................................................ 7

Ejercicio 5 ............................................................................................................................................ 7

Bibliografía: ......................................................................................................................................... 8

Bibliografía Complementaria .............................................................................................................. 8

Ejercicios Prácticos Teoría de Modelo de Datos ..................................................................................... 9

Fundamento Teórico ........................................................................................................................... 9

Saberes a reforzar ............................................................................................................................... 9

Estrategia metodológica propuesta .................................................................................................... 9

1. Compañía Mini-Mundo ..................................................................................................................... 10

2. “Biblioteca”........................................................................................................................................ 12

3. “Club de Embarcaciones” .................................................................................................................. 14

4. “Hospital General” ............................................................................................................................. 15

5. “Agencia de Viajes” ........................................................................................................................... 16

6. “Zoológico” ........................................................................................................................................ 17

7. “Servicio Militar” ............................................................................................................................... 18

8. “Institución Educativa” ...................................................................................................................... 19

9. “Casa Limpia” .................................................................................................................................... 20

10. “Sedes Olímpicas” ........................................................................................................................... 21

11. “Agencias de Viajes” ........................................................................................................................ 22

12. “Biblioteca del Instituto Técnico de Georgia (BTG) ......................................................................... 23

13. “Museo de Arte”.............................................................................................................................. 25

Bibliografía: ....................................................................................................................................... 26

Ejercicios Prácticos Diseño de Bases de Datos ...................................................................................... 27

Fundamento Teórico ......................................................................................................................... 27

Saberes a reforzar ............................................................................................................................. 27

Estrategia metodológica propuesta .................................................................................................. 27

Page 3: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 3

Ejercicios Reducción Diagramas de Clase a Tablas ............................................................................ 27

Ejercicios Normalización.................................................................................................................... 27

Bibliografía: ....................................................................................................................................... 29

Bibliografía Complementaria ............................................................................................................ 29

Ejercicios Prácticos Introducción a un lenguaje de consulta ................................................................ 30

Fundamento Teórico ......................................................................................................................... 30

Saberes a reforzar ............................................................................................................................. 30

Estrategia metodológica propuesta .................................................................................................. 30

Álgebra Relacional ............................................................................................................................. 31

Ejercicio: ............................................................................................................................................ 37

Bibliografía: ....................................................................................................................................... 37

SQL. Lenguaje de consulta en BD relacionales .................................................................................. 38

Creando una Base de Datos en Mysql ............................................................................................... 38

A continuación se describe el proceso completo de creación y uso de una base de datos

en MySQL. ................................................................................................................................... 38

Conectándose y desconectándose al servidor MySQL .................................................................. 38

Creando y usando una base de datos ............................................................................................... 42

Creando una tabla ............................................................................................................................. 43

Modificación de la Base de Datos. ................................................................................................ 48

Load Data Infile .............................................................................................................................. 48

Actualizaciones .............................................................................................................................. 49

Consultas en SQL....................................................................................................................... 50

Consulta 0 .................................................................................................................................... 50

Consulta 1 .................................................................................................................................... 50

Consulta 2 .................................................................................................................................... 51

Consulta 3 .................................................................................................................................... 51

Consulta 4 .................................................................................................................................... 52

Consulta 5 .................................................................................................................................... 52

Consulta 6 .................................................................................................................................... 52

Consulta 7 .................................................................................................................................... 53

Consulta 8 .................................................................................................................................... 53

Consulta 9 .................................................................................................................................... 53

Consulta 10 .................................................................................................................................. 53

Consultas en SQL....................................................................................................................... 54

Consulta 11 .................................................................................................................................. 55

Page 4: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 4

Consulta 12 .................................................................................................................................. 55

Consulta 13 .................................................................................................................................. 56

Consulta 14 .................................................................................................................................. 56

Consulta 15 .................................................................................................................................. 56

Consulta 16 .................................................................................................................................. 56

Consulta 17 .................................................................................................................................. 57

Consulta 18 .................................................................................................................................. 57

Consulta 19 .................................................................................................................................. 57

Consulta 20 .................................................................................................................................. 58

Consulta 21 .................................................................................................................................. 58

Consulta 22 .................................................................................................................................. 58

Conjunto Explícitos y valores NULOS en SQL .................................................................................... 59

Tablas Reunidas(JOIN) ....................................................................................................................... 59

Instancia de la Base de Datos. ........................................................................................................... 61

Bibliografía: ....................................................................................................................................... 62

Page 5: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 5

Introducción

El objetivo de esta guía es favorecer a través de una serie de ejercicios prácticos el

aprendizaje del estudiante, comenzando con los conceptos básicos de Bases de Datos,

continuando con una serie de ejemplificación de requerimientos de diversos autores, a

través de los cuales se pretende que el estudiante analice los requerimientos para el diseño

de una base de datos específica, identificando entidades, atributos y relaciones

correspondientes, de la misma forma que partiendo de un diseño conceptual y una vez que

se tiene seleccionado el sistema manejador de bases de datos a utilizar, el estudiante

deberá realizar el diseño lógico de la base de datos. Posteriormente se deben aplicar las

formas normales, en caso de que el diseño lógico sea relacional. Una vez diseñada la base

de datos, ésta deberá ser definida en un lenguaje seleccionado, que a su vez permitirá la

actualización y manipulación de la misma. La presente guía de ejercicios muestra una serie,

ejercicios propuestos, especificación de requerimientos y prácticas necesarias para

fortalecer la capacidad de los estudiantes al modelar bases de datos.

Page 6: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 6

Ejercicios Prácticos Conceptos Básicos

Fundamento Teórico

Los estudiantes serán capaces de distinguir un panorama general de los sistemas de Bases

de Datos, la terminología básica de su arquitectura, así como las generalidades de los

modelos de dato básicos: Relacional, Orientado a Objetos.

Saberes a reforzar

Introducción

Definición de bases de datos y sistema de administración de base de datos.

Objetivos de los sistemas de bases de datos.

Comparación de las BD contra los sistemas basados en archivos.

Modelos de datos.

Modelos lógicos basados en objetos.

Modelos lógicos basados en registros.

Modelo relacional.

Modelo físico de datos.

Arquitectura para los sistemas de bases de datos.

Objetivo de la arquitectura ANSI/SPARC.

Niveles de la arquitectura.

Sistema de Administración de Base de Datos.

Administrador de comunicación de datos.

Independencia de datos.

Definición y manipulación de Datos.

Catálogo del sistema.

Lenguaje de manipulación de datos.

Catálogo del sistema.

Consultas al catálogo.

Actualización al catálogo.

Administrador y usuarios de Base de Datos.

Page 7: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 7

Estrategia metodológica propuesta

A través de una lluvia de ideas, el estudiante contextualizará el entorno de una base de

datos, aplicaciones, con una discusión dirigida se plantearan las ventajas de las mismas,

utilizando mapas conceptuales representarán los conceptos básicos.

Ejercicio 1

Investigar en fuentes de información 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 capítulos del libro de Navathe y Elmasri “Sistemas de

Base de datos” Conceptos Fundamentales. Una vez realizadas las lecturas deberán concluir

el ejercicio con un glosario de términos, esto con el fin de que el estudiante identifique los

conceptos básicos 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 pequeños de no más de tres integrantes, para abordar un tema en

particular, de las lecturas realizadas, previamente señaladas por el profesor. Realizar

preguntas al azar entre los diferentes equipos, de manera que se refuercen los conceptos

vistos en clase y a través de las lecturas realizadas

Ejercicio 5

Diseñar un mapa conceptual o mental de manera individual, sobre las Bases de Datos, qué

son, como se modelan, a través de que herramienta se definen y manipulan, qué tipo de

aplicaciones existen, etc.

Page 8: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 8

Bibliografía:

Navathe y Elmasri

"Sistemas de Base de datos”

Conceptos Fundamentales

Tercera Edición 2002

Addison Wesley Iberoamericana

Silberschatz, F. Korth, Sudarshan

Fundamentos de Bases de Datos

Mc Graw Hill

Quinta Edición 2006

Bibliografía Complementaria

Ricardo Catherine M.

Bases de Datos

Mc Graw Hill

Primera Edición 2009

Page 9: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 9

Ejercicios Prácticos Teoría de Modelo de Datos

Fundamento Teórico

Los estudiantes podrán aplicar los conceptos básicos del modelado conceptual de bases de

datos, así como los diferentes enfoques para realizarlo.

Saberes a reforzar

Modelo Entidad-Relación

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-Relación.

Generalización y Agregación.

Modelo Orientado a Objetos.

Clases y Objetos.

Tipos de asociaciones entre las clases.

Multiplicidad de las relaciones.

Generalización.

Estrategia metodológica propuesta

Fomentar la capacidad de análisis de los estudiantes, a través del planteamiento específico

de requerimientos de información de diversos autores, el estudiante debe modelar los datos

bajo el enfoque del modelo entidad-relación y el modelo orientado a objetos en los que

identificarán objetos, atributos y relaciones correspondientes, diseñando los esquemas

conceptuales adecuados.

Nota: La redacción de la mayoría de ejercicios fue adaptada para facilitar la comprensión de

los mismos.

Page 10: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 10

1. Compañía Mini-Mundo Suponer que una vez concluida la fase de recolección y análisis de

requerimientos de una compañía, los diseñadores de la base de datos redactaron la

siguiente descripción del “Minimundo” (la parte de la compañía que se presentará en

la base de datos). Según los requerimientos especificados se pueden identificar

cuatro tipos de entidades.

1.- Un tipo de entidades DEPARTAMENTO con los atributos Nombre, Lugares,

Gerente y FechaInicGerente. Lugares es el único atributo multivaluado. Se puede

especificar qué Número sea atributo clave.

2.- Un tipo de entidades PROYECTO con los atributos Nombre, Número, Lugar.

Tanto Número como Nombre son atributos clave.

3.- Un tipo de entidades EMPLEADO con los atributos NoPersonal, Nombre, Sexo,

Dirección, Salario, FechaNac. Tanto Nombre como Dirección 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

vínculos;

1.- DIRIGE, un tipo de vínculos de 1:1 entre EMPLEADO y DEPARTAMENTO. La

participación del EMPLEADO es parcial pero la de DEPARTAMENTO es total.

2.- PERTENECE_A, un tipo de vínculos 1:N entre DEPARTAMENTO y EMPLEADO.

Ambas participaciones son totales.

3.- CONTROLA, un tipo de vínculos 1:N entre DEPARTAMENTO y PROYECTO. La

participación de PROYECTO es total; luego de consultar con los usuarios, se

determina que la participación de DEPARTAMENTO es parcial.

4.- SUPERVISION un tipo de vínculos 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, después 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, un tipo de vínculos 1:N entre EMPLEADO y

DEPENDIENTE.

Page 11: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 11

DEPENDIENTE_DE resulta ser un vinculo identificador del tipo de entidades débil

DEPENDIENTE. La participación 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 través del EMPLEADO.

Page 12: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 12

2. “Biblioteca” Se va a tomar como ejemplo el diseñar una base de datos relacional que

permita la gestión de préstamos de libros en una biblioteca y, como primer paso, se

a desarrollar el diseño 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 características (Código, nombre, tipo, etc.).

Lectores con las características (Nombre, apellidos, domicilio. etc.).

Información de los préstamos de libros que se han efectuado, incluyendo el

lector a quien se le ha prestado, la fecha, etc.

Además de estos datos, en nuestras conversaciones con los empleados,

obtenemos algunas informaciones y comentarios útiles para el diseño que son

las siguientes:

De cada libro pueden existir varios ejemplares.

Se está interesado en obtener información 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 información se debe obtener el diseño del esquema conceptual,

donde se deberá definir los atributos claves de cada entidad e incluir las

restricciones de carnalidad y participación. Tomar en cuenta que se debe completar

la información mostrada, de tal manera que permita modelar la base de datos de

manera lógica y adecuada.

Page 13: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 13

Page 14: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 14

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, dirección,

número de socio, teléfono y fecha de ingreso en el club.

Las embarcaciones vienen definidas por: matricula, nombre, tipo y

dimensiones.

Los amarres tienen como datos de interés el número 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 embarcación pertenece a un

socio aunque un socio puede tener varias embarcaciones. Una embarcación

ocupará un amarre y un amarre está ocupado por una sola embarcación. Es

importante la fecha en la que una embarcación 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 relación directa entre la fecha en la que se

compra un amarre y en la que una embarcación se asigna a un amarre.

Un club náutico está dividido en varias zonas definidas por una letra, el tipo

de barcos que tiene, el número 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 código, nombre,

dirección, teléfono y especialidad. Un empleado está asignado a varias zonas

y en una zona puede haber más de un empleado, siendo de interés el número

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.

Page 15: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 15

4. “Hospital General” En un centro hospitalario se desea informatizar parte de la gestión relativa a

pacientes. Tras el análisis realizado, se establecen los siguientes requerimientos:

Los datos de interés que se desea almacenar del paciente son: número 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 asignación de cama y el número de

esta. Habrá que tener en cuenta que las camas se numeran de manera

correlativamente por cada planta, es decir, existirá la cama número 12 de la

tercera planta y también la número 12 de la séptima planta. Las plantas del

hospital estarán identificadas por número de planta, su nombre y número de

que dispone.

Por cada paciente se entregara hasta un máximo de 4 tarjetas de visita. Estas

tarjetas de visita serán válidas para visitar un único paciente. La tarjeta de

visita se definirá por: número de tarjeta de visita y la hora de comienzo y de

final en que se puede visitar al enfermo.

A un paciente le puede atender varios médicos, siendo significativa por cada

visita médica la fecha y hora de esta. Y un paciente puede tener diferentes

diagnósticos de enfermedad, siendo significativa la fecha de diagnostico. Por

otra parte, un médico puede tratar diferentes tipos de diagnósticos y

viceversa.

Los datos de interés de los médicos serán: código del médico, nombre y

apellidos. Los datos de interés de los diagnósticos serán: código de

diagnóstico y descripción.

NOTA: una vez dado de alta un paciente se traslada toda la información relativa a

éste a un archivo histórico.

Page 16: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 16

5. “Agencia de Viajes” Una cadena de agencias de viajes desea disponer de una base de datos que

contemple información 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 código de sucursal, dirección y teléfono.

La cadena tiene contratados una serie de hoteles de forma exclusiva. Cada

hotel estará definido por el código de hotel, nombre, dirección, ciudad,

teléfono, y número de plazas disponibles.

De igual forma, la cadena tiene contratados una serie de vuelos regulares de

forma exclusiva. Cada vuelo viene definido por el numero de vuelo, fecha y

hora, origen y destino, plazas totales y plazas de clase turista de las que

dispone.

La información que se desea almacenar por cada turista es el código de

turista, nombre, apellidos, dirección y teléfono.

Por otra parte hay que tener en cuenta la siguiente información:

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 régimen de hospedaje (media pensión o

pensión completa). Siendo significativa la fecha de llegada y partida.

Page 17: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 17

6. “Zoológico” Un Zoológico necesita una aplicación informática para llevar una organización

respecto a las especies que posee, los empleados (cuidadores y guías), y los

distintos itinerarios de visita que ofrece. La información está estructurada de la

siguiente manera:

Especies, de las especies se interesa saber el nombre en español, el nombre

científico y una descripción general. Hay que tener en cuenta que una especie

puede vivir en diferentes hábitats naturales y que un hábitat 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.

Hábitats, los diferentes hábitats naturales vienen definidos por el nombre, el

clima y el tipo de vegetación 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 extensión que ocupan.

Itinerarios, los itinerarios discurren por distintas zonas del parque. La

información de interés para los itinerarios es código de itinerario, la duración

del recorrido, la longitud del itinerario, el máximo número de visitantes

autorizado y el número 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.

Guías, los guías del parque vienen definidos por el nombre, dirección,

teléfono y fecha en la que comenzaron a trabajar en el zoo. Interesa saber

que guías llevan itinerarios, teniendo en cuenta que un guía puede llevar

varios itinerarios y que un itinerario puede ser asignado a diferentes guías en

diferentes horas, siendo estás un dato de interés.

Cuidadores, los cuidadores vienen definidos por el nombre, dirección, teléfono 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 interés la fecha en la que un cuidador se hace cargo de una

especie.

Page 18: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 18

7. “Servicio Militar” El Ministerio de Defensa desea diseñar 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 código de soldado (único), su nombre y apellidos

y su graduación.

Existen varios cuarteles, cada uno se define por su código de cuartel, nombre

y ubicación.

Hay que tener en cuenta que existen diferentes cuerpos del ejército,

(Infantería, Artillería, Armada,…), y cada uno se define por su código de

Cuerpo y Denominación.

Los soldados están agrupados en compañías, siendo significativa para cada

uno de estás, el número de compañía y la actividad principal que realiza.

Se desea controlar los servicios que realizan los soldados (guardias,

imaginarias, cuarteleros,…), y se definen por el código de servicio y

descripción.

Consideraciones de diseño:

Un soldado pertenece a un único cuerpo y a una única compañía, durante

todo el servicio militar. A una compañía pueden pertenecer soldados de

diferentes cuerpos, no habiendo relación directa entre compañías y cuerpos.

Los soldados de una misma compañía pueden estar definidos en diferentes

cuarteles, es decir, una compañía puede estar ubicada en varios cuarteles, y

en un cuartel puede haber varias compañías. Eso sí, un soldado sólo está en

un cuartel.

Un soldado realiza varios servicios a lo largo de la milicia. Un mismo servicio puede

ser realizado por más de un soldado (con independencia de la compañía), siendo

significativa la fecha de realización.

Realiza

Pertenece

Page 19: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 19

8. “Institución Educativa” Se desea diseñar la base de datos de una Institución Educativa. En la base de datos

se desea guardar los datos de los profesores de dicho instituto: Npersonal, nombre,

dirección y teléfono. Los profesores imparten materias, y cada materia se describe

mediante un código, un nombre, una descripción 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 número y ubicación de cada una de ellas,

así como la hora y día en que se imparten la materia en cada salón ó aula. Los

profesores pueden impartir varias materias, pero una materia solo puede ser

impartida por un profesor. Un alumno pertenece a un grupo y en el grupo puede

haber varias alumnos. Un alumno puede ser delegado del grupo y representar a los

demás alumnos.

Elaboración propia

Page 20: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 20

9. “Casa Limpia” A partir de los siguientes requerimientos para una empresa que vende

diversos productos de limpieza para la casa, realizar el modelo entidad-relacion.

La empresa Casa Limpia vende productos de limpieza a varios clientes. Se

necesita conocer los datos de los clientes código, RFC, nombre, apellidos, dirección,

teléfonos. Cada producto tiene un código y un nombre así como un precio unitario.

Un cliente puede adquirir varios productos a través de un pedido, y un mismo

producto puede aparecer en más de un pedido, del pedido ó venta se debe registrar

el folio, la fecha y el total de la venta o pedido, un cliente puede hacer más de un

pedido.

Los productos son suministrados por diferentes proveedores. Se debe tener

en cuenta que un producto solo puede ser suministrado por un proveedor, y que un

proveedor puede suministrar diferentes productos. De cada proveedor se desea

conocer la RazonSocial, nombre, dirección y teléfonos donde se le pueda localizar.

Elaboración Propia

Page 21: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 21

10. “Sedes Olímpicas” Se desea diseñar una base de datos para las sedes olímpicas. Las sedes

olímpicas 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 localización (ejemplo: centro, esquina-NE, etc.). Un

complejo tiene una localización, un jefe de organización individual y un área total

ocupada.

Los dos tipos de complejos (deporte único y polideportivo) tendrán diferentes

tipos de información. Para cada tipo de sede, se conservará el número 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,

duración, número de participantes, número 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, pértigas, barras paralelas, etc.).

Page 22: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 22

11. “Agencias de Viajes” Diseñe una base de datos para una agencia de viajes que, para ofrecer un mejor

servicio a sus clientes, considera de interés tener registrada la información referente

a los diferentes tours que puede ofrecer. Para ello, se cuenta con los siguientes

antecedentes:

Un tour, según su finalidad (cultural, histórica, deportiva,…), tiene unos

determinados puntos de ruta y puede repetirse varias veces al año.

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

geográfixas, etc., y se consideran de visita solamente o de visita y estancia.

En este último caso, el punto de ruta tiene asignado uno ó más hoteles.

Se entiende por cliente de un viaje la persona que ha decidido hacerlo y ha

efectuado la respectiva confirmación.

Un cliente puede confirmar su participación en más 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.

Page 23: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 23

12. “Biblioteca del Instituto Técnico 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 clasificación (tipos de entidad y tipos de relación) agregación, identificación

y especialización/ generalización. Especifique las restricciones de carnalidad (Mínimos y

Máximos) siempre que sea posible. Enumere los detalles que impacten en el diseño final

pero que no tengan efecto en el diseño conceptual. Enumere por separado las restricciones

semánticas. Dibuje un diagrama EER de la base de datos biblioteca.

Caso de estudio: La biblioteca del Instituto Técnico de Georgia (BTG) tiene

aproximadamente 16.000 socios, 100.000 títulos y 250.000 volúmenes (o un promedio de

aproximadamente 2.5 copias por libro). Aproximadamente el 10% de los volúmenes siempre

esta prestado. Los bibliotecarios se aseguran de que los libros que los socios quieran pedir

prestados estén disponibles cuando los socios los quieran. Los bibliotecarios también deben

conocer en todo momento cuantas copias de cada libro están en la biblioteca o prestadas.

Un catalogo de libros por autor, titulo y tema está disponible en on-line. Para cada título en

la biblioteca, se guarda en el catalogo una descripción del libro, que abarca desde una línea

hasta varias páginas. Los bibliotecarios de consulta quieren poder acceder a esta

descripción cuando los socios soliciten información 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 préstamos y ayudantes de bibliotecas. Los libros

pueden ser prestados por un periodo de 21 días. A los socios solo se les permite tener en

préstamos 5 libros a la vez. Los socios generalmente devuelven los libros al cabo de 3 o 4

semanas. La mayoría de los socios saben que tienen una semana de gracia antes de que

les envíen una notificación, 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 préstamo un mínimo

de 10 veces durante el año son considerados como los socios más activos. El 1 % de los

socios solicita el 15 % de los préstamos y el 10 % de los socios lleva a cabo el 40 % de los

préstamos. Cerca del 20 % de los socios son inactivos, en el sentido de que son socios pero

nunca solicitan préstamos. Para ser socio de la biblioteca, los solicitantes rellenan un

formulario incluyendo un NSS, direcciones de correo personales y del campus y números de

teléfono. Los bibliotecarios tramitan entonces una tarjeta magnética numerada y con una

foto del socio. Esta tarjeta es válida durante 4 años. Un mes antes de que la tarjeta

caduque, se envía una notificación al socio para la renovación. Los profesores del instituto

son considerados socios de forma automática. Cuando un nuevo profesor entra al instituto,

su información se transmite desde el registro de empleados y la tarjeta de la biblioteca se

envía por correo a su dirección 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 envían a la dirección 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. Además, los bibliotecarios

tienen una lista de algunos libros que están interesados en adquirir pero que no pueden

Page 24: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 24

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

permita mantener información de los libros que no pueden prestarse así como de aquellos

que están interesados en conseguir. Puede que algunos libros tengan el mismo título; por

tanto, el titulo no puede usarse como una clave de identificación. Cada libro se identifica por

su número del estándar internacional de numeración de libros (ISBN), que es un código

único internacional asignado a todos los libros. Dos libros con el mismo título pueden tener

diferentes ISBN si están en diferentes idiomas o tienen diferentes encuadernaciones

(cubierta dura o cubierta blanda). Las ediciones de un mismo libro tienen diferentes ISBN.

Deben diseñarse el sistema de base de datos propuestos para conservar información de los

socios, los libros, el catalogo y las operaciones de préstamo.

Page 25: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 25

13. “Museo de Arte” Diseñe una base de datos para seguir la pista a la información para un museo de arte.

Asegurase de que se recogieron los siguientes requisitos:

El museo tiene una colección de Objetos_Arte. Cada Objeto_Arte tiene un único

NumId, un artista (si se conoce), un año (cuando fue creado, si se conoce), un título

y una descripción. Los objetos de arte se clasifican en categorías de varias formas

según se comenta debajo.

Los Objetos_Arte se clasifican basándose en su tipo. Existen tres tipos principales:

Pintura, Escultura y Estatua, más 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 echa (madera, piedra, etc.), altura,

peso y estilo.

Un objeto de arte en la categoría Otro tiene un tipo (impresión, foto, etc.) y un estilo.

Los Objetos_Arte se clasifican también como Colección_Permanente que es

propiedad del museo (que tiene información sobre la FechaAdquisicion, si está

EnExhibición también o EnAlmacen y su costo) o como Tomada_En_Prestamo, que

tiene información sobre la colección (de la cual fue tomada como prestada),

FechaPeticiónPrestamo, FechaDevolución.

Los Objetos_Arte tienen también información que describe su país/ cultura mediante

información sobre el país/ cultura de origen (romano, egipcio, americano, indio, etc.),

y época (renacimiento, moderna, antiguo, etc.).

El museo conserva información sobre el Artista si se conoce: Nombre,

FechaNacimiento, FechaDeFunsion (si ya no vive), PaísDeOrigen, Época,

EstiloPrincipal, Descripción. 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 exhibición.

La información se conserva en otras Colecciones con las que el museo interactúa

incluyendo nombre (único), tipo (museo, personal, etc.), descripción, dirección,

teléfono, y PersonaContacto actual.

Page 26: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 26

Bibliografía:

Navathe y Elmasri

"Sistemas de Base de datos”

Conceptos Fundamentales

Tercera Edición 2002

Addison Wesley Iberoamericana

Piattini Mario, Marcos Esperanza, Calero Coral, Vela Belén “Tecnologías y Diseño de Bases de datos” Alfaomega/Ra-ma Primera Edición 2007 Rob Peter, Coronel Carlos “Sistemas de Bases de Datos” Diseño, Implementación y Administración Thomson Quinta edición 2004

Page 27: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 27

Ejercicios Prácticos Diseño de Bases de Datos

Fundamento Teórico

Los estudiantes deben conocer los conceptos del Modelo relacional y el orientado a objetos,

para poder realizar el diseño lógico 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 aceptación en el

mercado, será el que se utilizará para el diseñar la base de datos, no obstante se darán

ejemplos de diseños orientados a objetos.

Saberes a reforzar

Reducción de Diagramas Entidad-Relación a Tablas.

Reducción de Diagramas de Clase a Tablas y a clases.

Problemática en el diseño de base de datos relaciónales.

Normalización por medio de dependencias funcionales

Estrategia metodológica propuesta

Contando con la guía del profesor, el estudiante realizará el análisis de esquemas

conceptuales para su transformación a tablas o clases, dependiendo del modelo lógico del

sistema gestor de bases de datos elegido. Para obtener el diseño lógico de la base de

datos, el estudiante debe poner en práctica su capacidad de examinar cada una de las

entidades, vínculos y correspondencias entre estos, para determinar el tipo de relación a

obtener.

Ejercicios Reducción Diagramas de Clase a Tablas

Transformar cada uno de los ejercicios realizados en el tema Teoría de modelos de datos, al

esquema relacional correspondiente.

Ejercicios Normalización

Ejercicio 1

Considere la siguiente relación:

VENTA_COCHES (IdCoche, Fecha_Venta, IdVendedor, Comisión, cant_descuento)

Suponga que un coche puede ser venido por múltiples vendedores y por lo tanto, {IdCoche,

IdVendedor} es la clave primaria. Otras dependencias adicionales son:

Fecha_Venta →cant_descuento y Vendedor#, →Comisión.

Basándose en la clave primaria dada, ¿Está esta relación en 1FN, 2FN ó 3FN?

Page 28: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 28

Ejercicio 2 Considere la siguiente definición de relación y datos muestra:

Relación PROYECTO-HORAS

NombredelEmpleado ProyectoID TareasID Teléfono HorasTotales

Domínguez 100A B-1 12345 12

Domínguez 100A P-1 12345 12

Domínguez 200B B-1 12345 12

Domínguez 200B P-1 12345 12

Palacios 100A C-1 67890 26

Palacios 200A C-1 67890 26

Palacios 200D C-1 67890 26

Horas-Proyecto (NombredelEmpleado, ProyectoID, TareasID, Teléfono, HorasTotales) Donde NombredelEmpleado es el nombre de un empleado ProyectoID es el número de un proyecto TareasID es el nombre estándar de la tarea(s) que se realiza(n) en el proyecto Teléfono es el número telefónico del empleado HorasTotales son las horas que ha trabajado el empleado en este proyecto

Considerar (NombredelEmpleado,ProyectoID,TareasID) como llave primaria

¿Está esta relación en 1FN, 2FN ó 3FN?

Ejercicio 3

Dada la siguiente tabla

numero-préstamo nombre-sucursal nombre-cliente ciudad-sucursal activo calle-cliente importe

P-17 Centro Santos Xalapa 9.000.000 Enríquez 1.000

P-23 Centro Gómez Coatepec 2.100.000 Miguel Lerdo 2.000

P-15 Clavijero López Veracruz 1.700.000 Clavijero 1.500

P-14 Centro Sánchez Xalapa 9.000.000 Arenal 1.500

P-93 Plaza Américas Santos Veracruz 400.000 Boulevard Ávila C. 500

P-11 Centro Altamirano Veracruz 8.000.000 Centro 900

P-29 Ávila Camacho Velázquez Xalapa 300.000 Ávila Camacho 1.200

P-16 Zona Centro López Córdoba 3.700.000 Av. 3 1.300

P-18 Centro González Xalapa 9.000.000 Carrillo Puerto 2.000

P-25 Clavijero Rodríguez Veracruz 1.700.000 Clavijero 2.500

P-10 Plaza Ánimas Arellano Xalapa 7.100.000 Boulevard Lázaro C. 2.200

Dependencias Funcionales nombre-sucursal → ciudad-sucursal nombre-sucursal → activo nombre-cliente → calle-cliente numero-préstamo, nombre-sucursal, nombre-cliente → importe

¿Está esta relación en 1FN, 2FN ó 3FN?

Page 29: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 29

Bibliografía:

Navathe y Elmasri

"Sistemas de Base de datos”

Conceptos Fundamentales

Tercera Edición 2002

Addison Wesley Iberoamericana

Kroenke David M. Procesamiento de Bases de Datos. Fundamentos, diseño e Implementación Pearson/Prentice Hall Octava edición 2003

Silberschatz, F. Korth, Sudarshan

Fundamentos de Bases de Datos

Mc Graw Hill

Quinta Edición 2006

Bibliografía Complementaria

Ricardo Catherine M.

Bases de Datos

Mc Graw Hill

Primera Edición 2009

Page 30: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 30

Ejercicios Prácticos Introducción a un lenguaje de consulta

Fundamento Teórico

Es necesario que los estudiantes conozcan los lenguajes que les permitirán definir, consultar

o actualizar una base de datos

Saberes a reforzar

Los Lenguajes de Consulta de las Bases de Datos Relacionales.

Introducción a los lenguajes de la tecnología relacional.

Álgebra Relacional.

Estructura del lenguaje SQL.

Estrategia metodológica propuesta

Contando con la guía 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 través de un sistema gestor de base de datos, utilizado en el laboratorio

de cómputo.

Page 31: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 31

Álgebra Relacional

El Modelo Relacional fue presentado por Codd en una publicación en 1970, refiriéndose a un modelo de datos específico, 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 cálculos sobre el modelo. El álgebra relacional se inspira en la teoría de conjuntos para especificar consultas en una base de datos relacional. Posteriormente, Codd presentó otro lenguaje basado en el Cálculo de Predicados de la Lógica de Primer Orden, mostrando que era equivalente en su poder expresivo al AR primeramente presentada; a este segundo lenguaje lo denominó Cálculo Relacional (CR). Álgebra relacional es un lenguaje de consulta procedural (se indica el procedimiento para obtener la relación resultante). Consta de un conjunto de operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva relación, 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.Selección 2.Proyección 3.Producto

4.Unión 5. Intersección 6. Diferencia

7. JOIN 8 División

Las cinco operaciones fundamentales en el álgebra relacional, selección, proyección,

producto cartesiano, unión y diferencia de conjuntos, permiten realizar la mayoría de las

operaciones de extracción de datos que nos interesan. Además, están definidas las

operaciones de combinación (JOIN), intersección, y división, que pueden expresarse en

términos de las cinco operaciones básicas.

La mayoría de los autores representan cada operación con un símbolo:

Operación Fórmula

Selección σ predicado (R)

Proyección Π a1, …, an (R )

Unión R ∪S

Intersección R ∩ S

Diferencia R − S

Producto cartesiano

R X S

Con el objetivo de familiarizarse con el uso de comandos, tal como se realizarán las

consultas en SQL, se van a realizar las operaciones del álgebra relacional utilizando

comandos u órdenes equivalentes a los símbolos. Teniendo como ejemplo las siguientes

relaciones:

Proveedor Parte

Vno Vnombre Status Ciudad Pno Pnombre Color Peso

Ciudad

V1 Suárez 20 Guadalajara P1 Tuerca Rojo 12 Guadalajara

V2 Camacho 10 Monterrey P2 Perno Verde 17 Monterrey

V3 Velázquez 30 Monterrey P3 Tornillo Azul 17 México

V4 López 20 Guadalajara P4 Tornillo Rojo 14 Guadalajara

V5 Jiménez 30 Xalapa P5 Rondana Azul 12 Monterrey

Page 32: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 32

Suministra

VNO PNO CANT

V1 P1 300

V1 P2 200

V1 P3 400

V1 P4 200

V1 P5 100

V1 P6 100

V2 P1 300

V2 P2 400

V3 P2 400

V4 P2 200

V4 P4 300

V4 P5 400

Selección

La selección de una relación es un subconjunto horizontal de la misma, en este subconjunto

aparecen las tuplas que cumplen alguna condición especificada, gráficamente esto se ve:

• Proveedor Where Ciudad = “Guadalajara”

VNO Vnombre Status Ciudad

V1 Suárez 20 Guadalajara

V4 López 20 Guadalajara

• Parte Where (Peso < 14)

PNO Pname Color Peso Ciudad

P1 Tuerca Rojo 12 Guadalajara

P5 Rondana Azul 12 Monterrey

Suministra Where Vno= V6 OR Pno=P7

Proyección

La proyección de una relación es un subconjunto vertical con la eliminación de duplicados.

* *

* *

* *

Vno Pno Cant

Page 33: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 33

Proveedor Where Ciudad = “Londres” [Vnombre]

Vnombre

Suárez

López

Producto Cartesiano

Representa al producto cartesiano usual de conjuntos. Combina tuplas de cualquieras dos (o más) relaciones, realiza la combinación de todos con todos. Si las relaciones a operar tienen N y M tuplas de n y m componentes respectivamente, la relación resultante del producto cartesiano tiene N × M tuplas de n + m componentes. Suponer que se tiene la relación Proyectos (Y) y se desea obtener el producto cartesiano entre la relación Proveedores (V) y Proyectos (Y). Proyecto

Yno Ynombre Ciudad

Y1 Móvil México

Y2 Sustetable Monterrey

Proveedor TIMES Proyecto

Unión

La unión de dos relaciones A y B que deben ser compatibles a la unión es el conjunto de

tuplas que pertenecen a la relación A, a la relación B o a ambas relaciones, y se designa

por:

• Dos relaciones son compatibles a la unión si tienen el mismo número 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 relación A debe estar definido en el mismo dominio del atributo 1

de la relación B, el atributo 2 de la relación A debe estar definido en el mismo

dominio del atributo 2 de la relación B, y así sucesivamente.

Vno Vnombre Status Ciudad YNO Ynombre Ciudad

V1 Suárez 20 Guadalajara Y1 Móvil México

V1 Suárez 20 Guadalajara Y2 Sustentable Monterrey

V2 Camacho 10 Monterrey Y1 Móvil México

V2 Camacho 10 Monterrey Y2 Sustentable Monterrey

V3 Velázquez 30 Monterrey Y1 Móvil México

V3 Velázquez 30 Monterrey Y2 Sustentable Monterrey

V4 López 20 Guadalajara Y1 Móvil México

V4 López 20 Guadalajara Y2 Sustentable Monterrey

V5 Jiménez 30 Xalapa Y1 Móvil México

V5 Jiménez 30 Xalapa Y2 Sustentable Monterrey

Page 34: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 34

Ejemplo:

Proveedor

Vno Vnombre Status Ciudad

V1 Suárez 20 Guadalajara

V2 Camacho 10 Monterrey

V3 Velázquez 30 Monterrey

V4 López 20 Guadalajara

V5 Jiménez 30 Xalapa

Proveedor1

Vno Vnombre Status Ciudad

V2 Camacho 10 Monterrey

V6 Lozano 20 Guadalajara

V7 García 10 Monterrey

Proveedor UNION Proveedor1

Vno Vnombre Status Ciudad

V1 Suárez 20 Guadalajara

V2 Camacho 10 Monterrey

V3 Velázquez 30 Monterrey

V4 López 20 Guadalajara

V5 Jiménez 30 Xalapa

V6 Lozano 20 Guadalajara

V7 García 10 Monterrey

El resultado de la unión conserva los nombres de los atributos de la primera relación.

Intersección

La intersección de dos relaciones A y B que deben ser compatibles a la unión, es el conjunto

de tuplas que pertenecen a la relación A y a la relación B.

Proveedor INTERSECT Proveedor1

Vno Vnombre Status Ciudad

V2 Camacho 10 Monterrey

Nota: La intersección puede expresarse en términos 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 unión, es el conjunto

de tuplas que pertenecen a la relación A y no a la relación B.

Page 35: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 35

Proveedor MINUS Proveedor1

Vno Vnombre Status Ciudad

V1 Suárez 20 Guadalajara

V3 Velázquez 30 Monterrey

V4 López 20 Guadalajara

V5 Jiménez 30 Xalapa

Proveedor1 MINUS Proveedor

Vno Vnombre Status Ciudad

V6 Lozano 20 Guadalajara

V7 García 10 Monterrey

JOIN

Hace un producto cartesiano de sus dos argumentos y realiza una selección forzando la igualdad de atributos que aparecen en ambas relaciones. Elimina repetidos (como toda operación de conjuntos).

Ejemplo:

Proveedor JOIN Suministra

Vno Vnombre Status Ciudad Pno Cant

V1 Suárez 20 Guadalajara P1 300

V1 Suárez 20 Guadalajara P2 200

V1 Suárez 20 Guadalajara P3 400

V1 Suárez 20 Guadalajara P4 200

V1 Suárez 20 Guadalajara P5 100

V1 Suárez 20 Guadalajara P6 100

V2 Camacho 10 Monterrey P1 300

V2 Camacho 10 Monterrey P2 400

V3 Velázquez 30 Monterrey P2 400

V4 López 20 Guadalajara P2 200

V4 López 20 Guadalajara P4 300

V4 López 20 Guadalajara P5 400

Page 36: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 36

División

R DIVIDEBY S

La división de dos relaciones es otra relación cuya extensión estará constituida por las

tuplas que al completarse con las tuplas de la segunda relación permiten obtener la primera.

Esto significa que, para cada tupla t que aparezca en el resultado T de la división, los

valores de t deben aparecer en R en combinación con todas las tuplas de S.

Ejemplo:

Obtener los proyectos provistos por todos los proveedores

ProveedorProyecto Proveedor

Vno YnoNO Vno

V1 Y1 V1

V1 Y2 V2

V1 Y3 V3

V1 Y4

V2 Y1

V2 Y3

V3 Y1

V3 Y3

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 ProveedorProyecto

Vno Pno Yno Vno Pno

V1 P1 Y1 V1 P1

V1 P1 Y4 V1 P2

V1 P2 Y1 V2 P3

V1 P1 Y2

V1 P4 Y1

V1 P3 Y3

V1 P2 Y2

V2 P3 Y1

V2 P3 Y2

V2 P3 Y3

V2 P3 Y4

Page 37: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 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 códigos 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 código P4. 7. Obtener el nombre de los proveedores que no suministran la pieza con el código P4. 8. Obtener el código 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

Bibliografía:

Date C. J.

Introducción a los

Sistemas de Bases de Datos

Prentice Hall

Séptima edición 2001

Page 38: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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 después de algunas modificaciones fue estandarizado en 1986.

SQL usa los términos tabla, fila y columna para relación, tupla y atributo, respectivamente.

Para realizar la práctica se crea la base de datos Compañía,

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 continuación se

dará una guía tomada de un tutorial de Mysql, de cómo acceder al monitor de mysql y algunas

consultas básicas.

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 también 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 máquina 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 opción --help:

mysql> mysql --help

A continuación se describe el proceso completo de creación y uso de una base de datos en MySQL.

Conectándose y desconectándose al servidor MySQL

Para conectarse al servidor, usualmente se necesita de un nombre de usuario (login) y de una contraseña (password), y si el servidor al que se desea conectar está en una máquina diferente de la nuestra, también se necesita indicar el nombre o la dirección IP de dicho servidor. Una vez que se conocen estos tres valores, la conexión se realiza de la siguiente manera:

mysql> mysql -h NombredelServidor -u NombredeUsuario -p

Cuando ejecutamos este comando, se nos pedirá que proporcionemos también la contraseña para el nombre de usuario que estamos usando. Si la conexión 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: ******

Page 39: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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 anónima al servidor corriendo en la máquina local. Si es el caso, se debe poder conectar al servidor invocando a mysql sin ninguna opción:

mysql> mysql

Después de que la conexión 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 continuación 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 más 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 están utilizando en alguna consulta. Si lo que se esta recuperando es el valor de una expresión, las etiquetas en las columnas son la expresión en sí.

mysql muestra cuántas 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 comunicación en una red.

Las palabras clave pueden ser escritas utilizando tanto mayúsculas como minúsculas.

Page 40: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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 línea, es posible escribir más de una sentencia por línea, siempre y cuando estén 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 línea, así que los comandos que requieran de varias líneas no son un problema. mysql determinará en dónde finaliza la sentencia cuando encuentre el punto y coma, no cuando encuentre el fin de línea.

Aquí está un ejemplo que muestra una consulta simple escrita en varias líneas:

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 líneas. Esta es la manera en cómo 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>

Page 41: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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 descripción de su significado para mysql:

Prompt Significado

mysql> Listo para una nueva consulta.

-> Esperando la línea siguiente de una consulta multi-línea.

'> Esperando la siguiente línea para completar una cadena que comienza con una comilla sencilla ( ' ).

"> Esperando la siguiente línea para completar una cadena que comienza con una comilla doble ( " ).

Los comandos multi-línea comúnmente 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 múltiples líneas. 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 más 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; ">

Page 42: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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 más 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 después \c :

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

El prompt cambiará de nuevo al ya conocido mysql>, indicándo que mysql está listo para una nueva consulta.

Es sumamente importante conocer lo que significan los prompts '> y ">, ya que si en algún momento aparece alguno de ellos, todas la líneas que se escriban a continuación serán 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 después algún 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 cuáles 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" estarán entre ellas. En particular, la base de datos "mysql" es requerida, ya que ésta tiene la información de los privilegios de los usuarios de MySQL. La base de datos "test" es creada durante la instalación de MySQL con el propósito de servir como área de trabajo para los usuarios que inician en el aprendizaje de MySQL.

Se debe anotar también 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>

Page 43: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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 ningún problema. El comando USE es especial también de otra manera: éste debe ser usado en una sola línea.

Se podría usar la base de datos "test" (si se tiene acceso a ella) para los ejemplos que vienen a continuación, pero cualquier cosa que se Suponer que se desea tener una base de datos llamada companía (nótese 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 automática; se debe hacer de manera explícita, por ello se utiliza el comando USE.

La base de datos se crea sólo una vez, pero se debe seleccionar cada vez que se inicia una sesión 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 contraseña que se está proporcionando desde la línea de comandos, sino el nombre de la base de datos a la que se desea acceder. Si se desea proporcionar la contraseña en la línea de comandos después de la opción "-p", se puede hacer sin dejar espacios (por ejemplo, -phola123, no como -p hola123). Sin embargo, escribir la contraseña nuestra contraseña desde la línea de comandos no es recomendado, ya que es bastante inseguro.

Creando una tabla

Crear la base de datos es la parte más fácil, pero en este momento la base de datos está vacía, como lo indica el comando SHOW TABLES:

mysql> SHOW TABLES; Empty set (0.00 sec)

Page 44: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 44

La instrucción CREATE TABLE es usada para especificar una nueva relación, dándole 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 creación de datos en SQL.

CREATE TABLE DEPARTAMENTO

( DNOMBRE VARCHAR(15) NOT NULL,

DNUMERO INT NOT NULL,

NPERSONALGERENTE VARCHAR(10) NOT NULL,

GERFECHAINIC 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));

Page 45: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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

( ENPERSONAL VARCHAR(10) NOT NULL,

NOMBRE_DEPENDIENTE VARCHAR(15) NOT NULL,

SEXO CHAR,

FNAC DATE,

PARENTESCO VARCHAR(8),

PRIMARY KEY (ENPERSONAL, NOMBRE_DEPENDIENTE),

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

También se puede agregar explícitamente el nombre del schema a cada tabla, separado por un

punto. Por ejemplo:

CREATE TABLE COMPAÑIA.EMPLEADO ...

Esto hace que la tabla EMPLEADO sea parte del schema COMPAÑIA.

Los tipos de datos disponibles para los atributos incluyen: numérico, tira de caracteres, carácter,

fecha y hora. Los tipos numéricos pueden incluir números enteros de varios tamaños (INT y

SMALLINT), números reales de varias precisiones (FLOAT, REAL, DOUBLE PRECISION). Además

se pueden declarar números con formato, usando DECIMAL(i,j). Las tiras de caracteres pueden ser

Page 46: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 46

de largo fijo (CHAR(n)) o de largo variable (VARCHAR(n), donde n es el máximo número de

caracteres). La fecha tiene 10 posiciones, típicamente AAAA-MM-DD. La hora tiene al menos 8

posiciones, típicamente HH:MM:SS. Solamente fechas y horas válidas 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 también se pueden declarar dominios, y usar el nombre de éstos. Esto facilita

hacer cambios en los tipos de datos (cambiando sólo el dominio y no cada dato declarado). Por

ejemplo, podemos crear el dominio TIPO_NPERSONAL con la siguiente instrucción:

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

restricción "NOT NULL" para los atributos que no permiten este valor (por violaciones de integridad).

Esta restricción siempre debe ser especificada para los atributos que son llaves primarias en cada

relación.

Es posible definir un valor por defecto para un atributo agregando la cláusula DEFAULT "valor" en la

definición del atributo.

La cláusula PRIMARY KEY especifica uno o más atributos que forman la llave primaria de la relación.

La cláusula UNIQUE especifica llaves alternas. La integridad de referencia es especificada a través

de la cláusula 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 foránea. Al crear el schema es

posible especificar las acciones a ser tomadas cuando una restricción de integridad referencial es

violada, ya sea por borrado de una tupla referenciada en otra tabla, o por modificación 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 );

Page 47: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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. Además, 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 número 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 instrucción DROP SCHEMA, con dos opciones:

CASCADE o RESTRICT. Por ejemplo, para borrar el schema de base de datos COMPAÑIA y todas

sus tablas, dominios y otros elementos, se usa la opción CASCADE:

DROP DATABASE COMPAÑIA CASCADE;

Si en la instrucción anterior se remplaza la opción CASCADE por RESTRICT, el schema es borrado

solamente si no tiene elementos. En caso de que el schema tenga algún elemento, el borrado no es

ejecutado.

Una relación o tabla puede ser borrada del schema de BD usando la instrucción DROP TABLE. Por

ejemplo, si la relación DEPENDIENTE con información de los dependientes de los empleados no va a

ser utilizada más en la BD COMPAÑIA, se puede borrar de la siguiente manera:

DROP TABLE DEPENDIENTE CASCADE;

Si la opción RESTRICT es usada en lugar de CASCADE, la tabla es borrada solamente si ésta no es

referenciada en ninguna restricción (por ejemplo como llave foránea en otra tabla). Con la opción

CASCADE todas las restricciones que referencian esta tabla, son borradas automáticamente del

schema, junto con la tabla.

La definición de una tabla puede ser modificada usando la instrucción ALTER TABLE. Con esta

instrucción es posible agregar o borrar atributos (columnas), cambiar la definición 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 COMPAÑIA.EMPLEADO ADD PUESTO VARCHAR(12);

Agregar una llave foránea a la relación 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 automáticamente del schema, junto con la columna. Por ejemplo:

Page 48: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 48

ALTER TABLE COMPAÑIA.EMPLEADO DROP DIRECCION CASCADE,

Si en la instrucción anterior se usa la opción RESTRICT en lugar de CASCADE, el atributo

DIRECCION es borrado solamente si ninguna restricción lo referencia.

También es posible borrar una cláusula por defecto así como definir una nueva. Por ejemplo:

ALTER TABLE COMPAÑIA.EMPLEADO ALTER NDEPTO DROP DEFAULT;

ALTER TABLE COMPAÑIA.EMPLEADO ALTER NDEPTO SET DEFAULT "5";

Finalmente, se pueden borrar o agregar restricciones en una tabla. Para borrar una restricción ésta

debe tener un nombre (dado con CONSTRAINT). Por ejemplo, para borrar la restricción NDEPTOLF

de la tabla EMPLEADO:

ALTER TABLE COMPAÑIA.EMPLEADO DROP CONSTRAINT NDEPTOLF CASCADE;

Modificación de la Base de Datos.

Inserción: para insertar datos en una relación, se específica 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 más sencilla es una solicitud para insertar una tupla.

Insert into Empleado values (‘Juan’, ‘Pérez’, ‘García’, 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, además de que la fecha se debe introducir en el formato de año, mes y día.

*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 relación, el conjunto de valores

de los atributos deberán 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:

Page 49: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 49

Insertar en la tabla Departamento los siguientes datos.

Of.Central 1 8886655 1971-06-19 Administración 4 98765432 1986-01-01 Investigación 5 33344555 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 propósito 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=”Investigación”);

Seleccionar la tabla que se desea examinar: Select Empleado

* Visualizar los resultados con el comando Browse Eliminación: Una solicitud de eliminación se expresa casi en la misma forma que una consulta. Podemos suprimir solamente tuplas completas; no podemos suprimir valores sólo de atributos determinados. En SQL una supresión se expresa por medio de:

Delete from r. Where P;

Ejemplos:

Delete from Empleado Where Apellido = “Jiménez”;

Delete from Empleado Where No_per= 12345678;

Page 50: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 50

Delete from Empleado Where ND in (Select Numerod from Departamento where Nombred=”Investigación”);

Delete from Empleado; (Borra todas las tuplas de la relación) * No hacerlo

Consultas en SQL

SQL tiene una instrucción principal para recuperar información de una base de datos: el comando

SELECT. Esta instrucción tiene muchas opciones. La forma básica de la instrucción SELECT es la

siguiente:

SELECT <lista de atributos>

FROM <lista de tablas>

WHERE <condición>

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.

<condición> es una expresión de búsqueda condicional (lógica) que identifica las tuplas que

van a ser recuperadas por la consulta.

En los siguientes ejemplos se utilizaran las tablas (junto con la información de éstas) definidas en las

secciones anteriores.

Consulta 0

Recuperar la fecha de nacimiento y la dirección del empleado cuyo nombre es "Juan Pérez".

Q0: SELECT FNAC, DIRECCION

FROM EMPLEADO

WHERE NPILA = "Juan" AND APPAT = "Pérez";

Esta consulta involucra solamente la relación EMPLEADO, señalada en la cláusula FROM. La

consulta selecciona la tupla de EMPLEADO que satisface la condición de la cláusula WHERE, y

selecciona los valores de esta tupla correspondientes a los atributos FNAC y DIRECCION.

Consulta 1

Recuperar el nombre y la dirección de todos los empleados que trabajan en el departamento

"Investigación".

Page 51: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 51

Q1: SELECT NPILA, APPAT, DIRECCION

FROM EMPLEADO, DEPARTAMENTO

WHERE DNOMBRE = "Investigación" AND DNUMERO = NDEPTO;

En la cláusula WHERE, la condición DNOMBRE = “Investigación” es una condición de selección. La

condición DNUMERO = NDEPTO es una condición de asociación, y asocia la llave foránea NDEPTO

de la relación EMPLEADO, con el correspondiente número de departamento (DNUMERO) de la

relación DEPARTAMENTO. La siguiente consulta tiene dos condiciones de asociación

Consulta 2

Para todos los proyectos localizados en “Veracruz”, liste el número de proyecto, el número de

departamento que lo controla, y el nombre, dirección 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 condición DNUM = DNUMERO relaciona un proyecto con su correspondiente departamento,

mientras que la condición 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 más) atributos en diferentes relaciones.

Cuando esto sucede, y una consulta se refiere a dos o más atributos con el mismo nombre, el nombre

de la relación debe ser puesto como prefijo del nombre de cada atributo, para Evitar ambigüedad. Por

ejemplo, supongamos que los atributos NDEPTO y NPILA de EMPLEADO se llamaran DNUMERO y

NOMBRE respectivamente, y el atributo DNOMBRE de DEPARTAMENTO también se llamara

NOMBRE. Entonces, para evitar ambigüedad en Q1, deberíamos usar como prefijos de los atributos,

los nombres de las relaciones:

Q1A: SELECT EMPLEADO.NOMBRE, APPAT, DIRECCION

FROM EMPLEADO, DEPARTAMENTO

WHERE DEPARTAMENTO.NOMBRE = "Investigación" AND DEPARTAMENTO.DNUMERO =

EMPLEADO.DNUMERO;

La ambigüedad también aparece en el caso de que la consulta se refiera a la misma relación dos o

más 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

Page 52: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 52

WHERE E.NPERSONALSUPERV = S.NPERSONAL;

En este caso, se pueden declarar nombres alternativos para la misma relación, llamados alias. El

nombre del alias se escribe inmediatamente después del nombre de la relación. También se puede

declarar usando la palabra "AS", por ejemplo: EMPLEADO AS E. También es posible renombrar

(como alias) todos los atributos de una relación en la cláusula FROM, de esta manera: EMPLEADO

AS E(NP, AP1, AP2, NPERSONAL, FN, DIR, SE, SU, NPERSONALS, ND). De este modo, se podría

comparar (en la consulta anterior) E.NPERSONALS = S.NPERSONAL.

Los alias pueden ser usados en cualquier consulta, no sólo cuando hay nombres repetidos. Los alias

tienen sentido sólo en la consulta en que son definidos. Un alias no cambia "físicamente" el nombre

de ninguna relación ni atributo de la BD.

En una consulta puede omitirse la cláusula 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 números de NPERSONAL de los empleados.

Q4: SELECT NPERSONAL

FROM EMPLEADO;

Si más de una relación es especificada en la cláusula FROM, y no existe cláusula 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 números de NPERSONAL de los empleados y nombre de

departamentos.

Q5: SELECT NPERSONAL, DNOMBRE

FROM EMPLEADO, DEPARTAMENTO;

Es importante especificar cada condición de selección y cada condición de asociación en la cláusula

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 número

"5".

Q6: SELECT *

Page 53: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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 "Investigación".

Q7: SELECT *

FROM EMPLEADO, DEPARTAMENTO

WHERE DNOMBRE = "Investigación" 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 cláusula SELECT, en cuyo caso sólo tuplas distintas aparecen en la

relación. 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 más 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 operación UNION que regresa la unión (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 cláusula ALL después de la operación. Por

ejemplo:

Consulta 10

Regresar una lista con todos los números de proyecto que involucran un empleado de apellido

"Pérez", ya sea como trabajador o como gerente del departamento que controla ese proyecto.

Page 54: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 54

Q10: ( SELECT PNUMERO

FROM PROYECTO, DEPARTAMENTO, EMPLEADO

WHERE DNUM = DNUMERO AND NPERSONALGERENTE = NPERSONAL AND APPAT = "Pérez" )

UNION

( SELECT PNO

FROM TRABAJA_EN, EMPLEADO

WHERE ENPERSONAL = NPERSONAL AND APPAT = "Pérez" );

El primer SELECT recupera los proyectos que involucran a "Pérez" como gerente del departamento

que controla el proyecto, y el segundo SELECT regresa los proyectos que involucran a "Pérez" como

trabajador en el proyecto. Note que si varios empleados tienen como primer apellido "Pérez", se

recuperan los números de proyecto en que están involucrados todos ellos. Al aplicar la operación

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 comparación. Estas consultas pueden ser implementadas a través de

consultas anidadas, donde hay consultas completas dentro de las cláusulas WHERE de otras

consultas. Por ejemplo, la consulta anterior (Q10) podría 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 = "Pérez" )

OR

PNUMERO IN ( SELECT PNO

FROM TRABAJA_EN, EMPLEADO

WHERE ENPERSONAL = NPERSONAL AND APPAT = "Pérez" );

La primera consulta anidada selecciona los números de proyecto de los proyectos que tienen a

"Pérez" como gerente, mientras que la segunda selecciona los números de proyecto que tienen a

"Pérez" como trabajador. El operador de comparación IN compara un valor v con un conjunto de

valores V, y regresa TRUE si v es uno de los elementos en V.

Además del operador IN, pueden ser usados otros operadores para comparar un valor v (típicamente

un nombre de atributo) con un conjunto V (típicamente una consulta anidada). El operador "= ANY" (o

"= SOME") regresa TRUE si el valor v es igual a algún valor en el conjunto V. ANY y SOME tienen el

Page 55: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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 condición "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.

Q11:

SELECT NPILA, APPAT

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 sólo 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 cláusula EXISTS es usada para verificar cuándo el resultado de una consulta anidada está vacío

(no contiene tuplas). Por ejemplo:

Page 56: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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 podría 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 número de tuplas en una consulta),

SUM (regresa la suma de algún atributo numérico), MIN (regresa el mínimo), MAX (regresa el

máximo) y AVG (regresa el promedio). Por ejemplo:

Consulta 14

Regresar la suma de los salarios de todos los empleados, el salario máximo, el salario mínimo y el

promedio de los salarios.

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

FROM EMPLEADO;

Consulta 15

Regresar el número de empleados del departamento de "Investigación".

Q15: SELECT COUNT(*)

FROM EMPLEADO, DEPARTAMENTO

WHERE DNUMERO = NDEPTO AND DNOMBRE = "Investigación"

;

Consulta 16

Cuente el número de salarios distintos en la base de datos.

Page 57: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 57

Q16: SELECT COUNT(DISTINCT SUELDO)

FROM EMPLEADO;

Consulta 17

Regrese los nombres de todos los empleados que tienen más 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 función a grupos de tuplas en una relación. 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 cláusula GROUP BY.

Consulta 18

Para cada departamento regrese: el número de departamento, el número 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 número, nombre, y número 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 después de la unión 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 más de dos empleados. Para

hacer esto, SQL provee la cláusula HAVING, la cual puede aparecer junto con la cláusula GROUP

BY. HAVING provee una condición sobre el grupo de tuplas asociadas con cada valor de los atributos

Page 58: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 58

agrupados, y en el resultado aparecen solamente los grupos que satisfacen esta condición. Por

ejemplo:

Consulta 20

Para cada proyecto en que trabajan más de dos empleados, recuperar el número de proyecto, el

nombre del proyecto, y el número 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 más de cinco empleados, recuperar el número de departamento y

el número de empleados que ganan más 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

más atributos, usando la cláusula 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 alfabéticamente 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). También se puede especificar un orden

descendiente (DESC). Por ejemplo, si en la consulta anterior se desea tener ordenado

Page 59: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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 Explícitos y valores NULOS en SQL

Es posible utilizar un conjunto explícito de valores en lugar de una consulta anidada.

Ejemplo: Obtener el número 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 relación reunida) se incorporó en SQL” para que los usuarios

pudieran especificar una tabla resultante de una operación de reunión en la claúsula FROM de una

consulta.

SELECT NPLIA, APPAT, APMAT, SUELDO

FROM (EMPLEADO JOIN DEPARTAMENTO ON NDEPT=DNUMERO)

WHERE DNOMBRE = “Investigación”;

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

departamento de “Investigación”.

COMPARACIONES DE SUBCADENAS (CLAÚSULA LIKE)

Ejemplo: Obtener todos los empleados cuya dirección esté en Ávila Camacho, Xalapa

SELECT NPILA, APPAT; APMAT

FROM EMPLEADO

WHERE DIRECCIÓN LIKE “%<Camacho, Xa%”;

% sustituye a un número arbitrario de caracteres.

Page 60: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 60

Ejemplo: Encontrar todos los empleados de nacieron en la década de 1970

SELECT NPILA, APPAT, APMAT

FROM EMPLEADO

WHERE FNAC LIKE “--7-------”;

- sustituye a un solo carácter 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”;

Page 61: Guia eejerciciospracticos

Guía de Ejercicios Prácticos 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 Pérez García 12345678 9-1-55 Ávila

Camacho M 120 33344555 5

Alicia Zelaya Roa 99988777 19-7-58 Murillo Vidal F 105 98765432 4

Juana Mejía Martínez 98765432 20-6-31 Enríquez F 240 88866555 4

Francisco Zea García 33344555 8-12-45 M 310 88866555 5

Jaime Ramos Salas 88866555 10-11-30 Papantla M 360 98765432 1

DEPARTAMENTO DNOMBRE DNUMERO RUTGERENTE GERFECHAINIC

Of. Central 1 88866555 19-6-71

Administración 4 98765432 1-1-85

Investigación 5 33344555 22-5-78

UBICACIONES_DEPTO DNUMERO DUBICACION

1 Xalapa

4 Coatepec

5 Veracruz

5 Xalapa

PROYECTO PNOMBRE PNUMERO PUBICACION DNUM

Producto X 1 Veracruz 5

Producto Y 2 Coatepec 5

Computarización 10 Xalapa 4

Page 62: Guia eejerciciospracticos

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 62

Reorganización 20 Xalap 1

TRABAJA_EN ERUT 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 NOMBRE_CARGA SEXO FNAC PARENTESCO

33344555 Alicia F 5-4-86 Hija

33344555 Pedro M 25-10-83 Hijo

33344555 Ximena F 3-5-54 Cónyuge

98765432 Rodolfo M 28-2-32 Cónyuge

12345678 Alejandra F 5-5-57 cónyuge

Bibliografía:

Navathe y Elmasri

"Sistemas de Base de datos”

Conceptos Fundamentales

Tercera Edición 2002

Addison Wesley Iberoamericana