SlideShare ist ein Scribd-Unternehmen logo
1 von 63
Downloaden Sie, um offline zu lesen
LICENCIATURA EN SISTEMAS
     COMPUTACIONALES ADMINISTRATIVOS




GUÍA DE EJERCICIOS PRÁCTICOS



     EXPERIENCIA EDUCATIVA
     FUNDAMENTOS DE BASES DE
     DATOS




PRESENTAN:
M.T.E MARIA LUISA VELASCO RAMIREZ
M.E PATRICIA ARIETA MELGAREJO
Í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” .................................................................................................................. 13
4. “Hospital General”............................................................................................................................. 14
5. “Agencia de Viajes” ........................................................................................................................... 15
6. “Zoológico” ........................................................................................................................................ 16
7. “Institución Educativa” ...................................................................................................................... 17
8. “Casa Limpia” .................................................................................................................................... 18
9. “Servicio Militar” ............................................................................................................................... 19
10. “Sedes Olímpicas” ........................................................................................................................... 20
11. “Agencias de Viajes” ........................................................................................................................ 21
12. “Biblioteca del Instituto Técnico de Georgia” (BTG) ....................................................................... 22
13. “Museo de Arte”.............................................................................................................................. 24
14. “Consultorio Dental” ....................................................................................................................... 25
15. “Firma de Diseño de Interiores” ...................................................................................................... 26
   Bibliografía: ....................................................................................................................................... 27
Ejercicios Prácticos Diseño de Bases de Datos ...................................................................................... 28
   Fundamento Teórico ......................................................................................................................... 28
Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                                                                    2
Saberes a reforzar ............................................................................................................................. 28
   Estrategia metodológica propuesta .................................................................................................. 28
   Ejercicios Reducción Diagramas de Clase a Tablas............................................................................ 28
   Ejercicios Normalización.................................................................................................................... 28
   Bibliografía: ....................................................................................................................................... 30
   Bibliografía Complementaria ............................................................................................................ 30
Ejercicios Prácticos Introducción a un lenguaje de consulta ................................................................ 31
   Fundamento Teórico ......................................................................................................................... 31
   Saberes a reforzar ............................................................................................................................. 31
   Estrategia metodológica propuesta .................................................................................................. 31
   Álgebra Relacional ............................................................................................................................. 32
   Ejercicio: ............................................................................................................................................ 38
   Bibliografía: ....................................................................................................................................... 38
   SQL. Lenguaje de consulta en BD relacionales .................................................................................. 39
   Creando una Base de Datos en Mysql ............................................................................................... 39
      A continuación se describe el proceso completo de creación y uso de una base de datos
      en MySQL. ................................................................................................................................... 39
      Conectándose y desconectándose al servidor MySQL .................................................................. 39
   Creando y usando una base de datos ............................................................................................... 43
   Creando una tabla ............................................................................................................................. 44
      Modificación de la Base de Datos. ................................................................................................ 49
      Load Data Infile.............................................................................................................................. 50
      Actualizaciones .............................................................................................................................. 50
      Consultas en SQL....................................................................................................................... 51
      Consulta 0 .................................................................................................................................... 51
      Consulta 1 .................................................................................................................................... 52
      Consulta 2 .................................................................................................................................... 52
      Consulta 3 .................................................................................................................................... 53
      Consulta 4 .................................................................................................................................... 53
      Consulta 5 .................................................................................................................................... 53
      Consulta 6 .................................................................................................................................... 54
      Consulta 7 .................................................................................................................................... 54
      Consulta 8 .................................................................................................................................... 54
      Consulta 9 .................................................................................................................................... 54
      Consulta 10.................................................................................................................................. 55
Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                                                                             3
Consultas en SQL....................................................................................................................... 55
      Consulta 11.................................................................................................................................. 56
      Consulta 12.................................................................................................................................. 56
      Consulta 13.................................................................................................................................. 57
      Consulta 14.................................................................................................................................. 57
      Consulta 15.................................................................................................................................. 58
      Consulta 16.................................................................................................................................. 58
      Consulta 17.................................................................................................................................. 58
      Consulta 18.................................................................................................................................. 58
      Consulta 19.................................................................................................................................. 58
      Consulta 20.................................................................................................................................. 59
      Consulta 21.................................................................................................................................. 59
      Consulta 22.................................................................................................................................. 59
   Conjunto Explícitos y valores NULOS en SQL .................................................................................... 60
   Tablas Reunidas(JOIN) ....................................................................................................................... 60
   Instancia de la Base de Datos. ........................................................................................................... 62
   Bibliografía: ....................................................................................................................................... 63




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                                                                           4
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.




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                              5
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.

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                    6
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.




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




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos   8
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.


Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                              9
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 Número, Nombre,
Lugares, Gerente y FechaInicGerente. Lugares es el único atributo multivaluado. Se
puede especificar que 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.


Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                        10
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.




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                 11
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.




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                        12
3. “Club de Embarcaciones”
    Un club     desea tener informatizados los datos correspondientes a sus
instalaciones, empleados, socios y embarcaciones que se encuentran en dicho club.
El club está organizado de la siguiente forma:

      Los socios pertenecientes al club vienen definidos por su nombre, 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.




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                      13
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 entregará 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, la hora en que inicia y en la
       que termina una visita al enfermo.
      A un paciente le puede atender varios médicos, siendo significativa por cada
       visita médica la fecha y hora de ésta. Y un paciente puede tener diferentes
       diagnósticos de enfermedad, siendo relevante la fecha de diagnóstico. 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.




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                          14
5. “Agencia de Viajes”
   Una cadena de agencias de viajes desea disponer de una base de datos que
contemple 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 número 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.




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                       15
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.




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                        16
7. “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 imparte cada materia en cada aula. Los profesores
pueden impartir varias materias, pero una materia solo puede ser impartida por un
profesor. Un alumno pertenece a una sección, de esta última interesa conocer el
número de sección y carrera a la que corresponde, en cada sección puede haber
varias alumnos. Un alumno puede ser representante de la sección y representar a
los demás alumnos.
Elaboración propia




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                     17
8. “Casa Limpia”
       A partir de los siguientes requerimientos para una empresa que vende
diversos productos de limpieza para la casa, realizar el modelo entidad-relación.

       La empresa Casa Limpia vende productos de limpieza a varios clientes. Se
necesita conocer los datos de los clientes, tales como códigoC, RFC, nombre,
apellidos, dirección, teléfonos. Cada producto tiene un código, un nombre, una
descripción así como un precio unitario. Un cliente puede adquirir varios productos a
través de una orden_de _venta, esta orden detalla los productos que aparecen en
ella, siendo relevante la cantidad que detalla           de cada producto. De la
orden_de_venta se debe registrar el folio, la fecha y el total, un cliente puede hacer
más de una orden de venta, pero esta orden solo se registra para un cliente.

       Los productos son suministrados por diferentes proveedores, a través de un
pedido, definido por Nopedido, fecha y total. Se debe tener en cuenta que un pedido
detalla cada producto que surte o suministra el proveedor, siendo significativa la
cantidad de producto que se detalla en este pedido. Un proveedor puede suministrar
diferentes pedidos, pero estos últimos son facturados por un solo proveedor. De
cada proveedor se desea conocer el códigoP, la RazónSocial, nombre, dirección y
teléfonos donde se le pueda localizar.
Elaboración Propia




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                       18
9. “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.




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                      19
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.).




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                     20
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
       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áficas, 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.




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

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                 22
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.




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                23
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 hecha (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.




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                 24
14. “Consultorio Dental”
 Diseñe un esquema conceptual para la siguiente aplicación:

 Un grupo dental necesita mantener la información de pacientes, visitas que hacen al
consultorio, el trabajo que se debe realizar, los procedimientos realizados durante las visitas,
los cargos y pagos por el tratamiento, y los suministros y servicios de laboratorio. Suponer
que existen varios dentistas en el grupo. Los pacientes realizan muchas visitas y durante
cada visita se les puede practicar muchos servicios o procedimientos. Aunque los pacientes
usualmente hacen cita para ver al mismo dentista, pueden ver a otro en cado de urgencia o
por otras razones. La base de datos debe almacenar información acerca de los servicios y
procedimientos, incluidos un código, descripción y cargos por cada uno. Algunos servicios
pueden abarcar varias visitas. La oficina usa tres laboratorios dentales, uno para suministros
regulares, uno para fabricación de dentaduras y uno para otros suministros y servicios.

Definir los atributos de cada entidad o clase que identifique.




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




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


Ricardo M. Catherine
Bases de Datos
McGrawHill, 2009.


Rob Peter, Coronel Carlos
“Sistemas de Bases de Datos”
Diseño, Implementación y Administración
Thomson
Quinta edición 2004




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 vendido 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?




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:

                                                      Empleado_trabaja_Proyecto
NombredelEmpleado                   Teléfono          ProyectoID TareasID HorasTotales                        Descripción_Proyecto
Domínguez                           12345             100S        B-1       12                                Reingeniería
Domínguez                           12345             100S        P-1       12                                Reingeniería
Domínguez                           12345             200B        B-1       15                                Sustentable
Domínguez                           12345             200B        P-1       15                                Sustentable
Palacios                            67890             100S        C-1       22                                Reingeniería
Palacios                            67890             200D        C-1       26                                Innovación
Palacios                            67890             200D        P-1       16                                Innovación

Empleado_trabaja_Proyecto (NombredelEmpleado, ProyectoID, TareasID, Horas Totales,
Teléfono) 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?




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




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.




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                        RXS
         cartesiano
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      Pes     Ciudad
                                                                                               o
 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


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

                   Vno         Pno           Cant




Proyección

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

             *                     *
             *                     *
             *                     *



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

          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

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.




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.



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




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



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




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 se ejecuta este comando, se pedirá que se proporcione 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: ******




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.


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>




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                       41
De nuevo, se 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;
">




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>

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 se necesita crear.

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)



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

Nota: No crear la lleve foránea NPERSONALSUPERV, marcará un error, debido a que debe existir
primero como primaria para existir como foránea y como no se ha creado la tabla no existe aún.
Agregarla después con ALTER TABLE ADD FOREIGN KEY (NPERSONALSUPERV) REFERENCES
EMPLEADO (NPERSONAL)




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                       45
CREATE TABLE UBICACIONES_DEPTO

    ( DNUMERO        INT              NOT NULL,

    DUBICACION VARCHAR(15) NOT NULL,


    PRIMARY KEY (DNUMERO, DUBICACION),
    FOREIGN KEY (DNUMERO) REFERENCES DEPARTAMENTO (DNUMERO));



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



Guía de Ejercicios Prácticos Fundamentos de Bases de Datos       46
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
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:




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                      47
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 );


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


Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                     48
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:

          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)




Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                          49
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:

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:

Guía de Ejercicios Prácticos Fundamentos de Bases de Datos                                           50
Delete from r.
                               Where P;


Ejemplos:

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


                     Delete from Empleado
                     Where No_per= 12345678;


             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




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

Weitere ähnliche Inhalte

Was ist angesagt?

LA ADMINISTRACIÓN DE LA ESCASEZ.Luis Arroyo Jiménez y Dolores Utrilla. ISBN:9...
LA ADMINISTRACIÓN DE LA ESCASEZ.Luis Arroyo Jiménez y Dolores Utrilla. ISBN:9...LA ADMINISTRACIÓN DE LA ESCASEZ.Luis Arroyo Jiménez y Dolores Utrilla. ISBN:9...
LA ADMINISTRACIÓN DE LA ESCASEZ.Luis Arroyo Jiménez y Dolores Utrilla. ISBN:9...Marcial Pons Argentina
 
Postgres tutorial
Postgres tutorialPostgres tutorial
Postgres tutorialt763rm3n
 
Apuntes sobre PowerPoint 2007
Apuntes sobre PowerPoint 2007Apuntes sobre PowerPoint 2007
Apuntes sobre PowerPoint 2007tallerdenovatos
 
Excel, Tecnicas Avanzadas.pdf
Excel, Tecnicas Avanzadas.pdfExcel, Tecnicas Avanzadas.pdf
Excel, Tecnicas Avanzadas.pdfhome
 
Sistema experto/soporte para la optimización de líneas ferroviaria, Juan pavó...
Sistema experto/soporte para la optimización de líneas ferroviaria, Juan pavó...Sistema experto/soporte para la optimización de líneas ferroviaria, Juan pavó...
Sistema experto/soporte para la optimización de líneas ferroviaria, Juan pavó...Juan Pavón
 
Introduccion a la Informatica
Introduccion a la InformaticaIntroduccion a la Informatica
Introduccion a la InformaticaMarco Polo
 
Trabajo del mes el equipo de computo partes y funciones
Trabajo del mes el equipo de computo partes y funciones Trabajo del mes el equipo de computo partes y funciones
Trabajo del mes el equipo de computo partes y funciones Alma_16
 
como hacer una auditoria-administrativa paso a paso
como hacer una auditoria-administrativa paso a paso como hacer una auditoria-administrativa paso a paso
como hacer una auditoria-administrativa paso a paso David Arce
 
Postgres programmer josue
Postgres programmer josuePostgres programmer josue
Postgres programmer josueJosué Ruiz
 
Guia javaparadocentes2012
Guia javaparadocentes2012Guia javaparadocentes2012
Guia javaparadocentes2012Gabriel Cruz
 
Manual microsoft office excel 2010
Manual microsoft office excel 2010Manual microsoft office excel 2010
Manual microsoft office excel 2010proneulsa
 

Was ist angesagt? (16)

LA ADMINISTRACIÓN DE LA ESCASEZ.Luis Arroyo Jiménez y Dolores Utrilla. ISBN:9...
LA ADMINISTRACIÓN DE LA ESCASEZ.Luis Arroyo Jiménez y Dolores Utrilla. ISBN:9...LA ADMINISTRACIÓN DE LA ESCASEZ.Luis Arroyo Jiménez y Dolores Utrilla. ISBN:9...
LA ADMINISTRACIÓN DE LA ESCASEZ.Luis Arroyo Jiménez y Dolores Utrilla. ISBN:9...
 
Postgres tutorial
Postgres tutorialPostgres tutorial
Postgres tutorial
 
Apuntes sobre PowerPoint 2007
Apuntes sobre PowerPoint 2007Apuntes sobre PowerPoint 2007
Apuntes sobre PowerPoint 2007
 
Word 2013
Word 2013Word 2013
Word 2013
 
Manual cobol
Manual cobolManual cobol
Manual cobol
 
Excel, Tecnicas Avanzadas.pdf
Excel, Tecnicas Avanzadas.pdfExcel, Tecnicas Avanzadas.pdf
Excel, Tecnicas Avanzadas.pdf
 
Tutorial moodle, paideia pucp
Tutorial moodle, paideia pucpTutorial moodle, paideia pucp
Tutorial moodle, paideia pucp
 
Sistema experto/soporte para la optimización de líneas ferroviaria, Juan pavó...
Sistema experto/soporte para la optimización de líneas ferroviaria, Juan pavó...Sistema experto/soporte para la optimización de líneas ferroviaria, Juan pavó...
Sistema experto/soporte para la optimización de líneas ferroviaria, Juan pavó...
 
Introduccion a la Informatica
Introduccion a la InformaticaIntroduccion a la Informatica
Introduccion a la Informatica
 
Trabajo del mes el equipo de computo partes y funciones
Trabajo del mes el equipo de computo partes y funciones Trabajo del mes el equipo de computo partes y funciones
Trabajo del mes el equipo de computo partes y funciones
 
como hacer una auditoria-administrativa paso a paso
como hacer una auditoria-administrativa paso a paso como hacer una auditoria-administrativa paso a paso
como hacer una auditoria-administrativa paso a paso
 
Sql server desde0
Sql server desde0Sql server desde0
Sql server desde0
 
Informatica 1
Informatica 1Informatica 1
Informatica 1
 
Postgres programmer josue
Postgres programmer josuePostgres programmer josue
Postgres programmer josue
 
Guia javaparadocentes2012
Guia javaparadocentes2012Guia javaparadocentes2012
Guia javaparadocentes2012
 
Manual microsoft office excel 2010
Manual microsoft office excel 2010Manual microsoft office excel 2010
Manual microsoft office excel 2010
 

Andere mochten auch (20)

Bases de datos
Bases de datosBases de datos
Bases de datos
 
Induccion fundbd2012
Induccion fundbd2012Induccion fundbd2012
Induccion fundbd2012
 
Modulos sgbd
Modulos sgbdModulos sgbd
Modulos sgbd
 
Java básico
Java  básicoJava  básico
Java básico
 
Induccion fundbd2012
Induccion fundbd2012Induccion fundbd2012
Induccion fundbd2012
 
Respaldando bd
Respaldando bdRespaldando bd
Respaldando bd
 
Normalizacion
NormalizacionNormalizacion
Normalizacion
 
Ejercicio java1.1
Ejercicio java1.1Ejercicio java1.1
Ejercicio java1.1
 
Ejercicio java
Ejercicio javaEjercicio java
Ejercicio java
 
Proyecto finalprogramacion
Proyecto finalprogramacionProyecto finalprogramacion
Proyecto finalprogramacion
 
Ejecutando mi primer programa en java
Ejecutando mi primer programa en javaEjecutando mi primer programa en java
Ejecutando mi primer programa en java
 
Elementos básicos del lenguaje java alumno
Elementos básicos del lenguaje java alumnoElementos básicos del lenguaje java alumno
Elementos básicos del lenguaje java alumno
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datos
 
Practicar metodos
Practicar metodosPracticar metodos
Practicar metodos
 
Planclase programacion
Planclase programacionPlanclase programacion
Planclase programacion
 
Java
JavaJava
Java
 
Arreglos java
Arreglos javaArreglos java
Arreglos java
 
Ejercicio java1
Ejercicio java1Ejercicio java1
Ejercicio java1
 
Guia normalización
Guia normalizaciónGuia normalización
Guia normalización
 
Tema 5 ejercicio 05 - normalizacion
Tema 5   ejercicio 05 - normalizacionTema 5   ejercicio 05 - normalizacion
Tema 5 ejercicio 05 - normalizacion
 

Ähnlich wie Guia eejerciciospracticos

Ähnlich wie Guia eejerciciospracticos (20)

Componentes básicos de una computadora
Componentes básicos de una computadoraComponentes básicos de una computadora
Componentes básicos de una computadora
 
Alianzas Multiactor para la Cooperación al Desarrollo Rafael Zamora Riesco
Alianzas Multiactor para la Cooperación al Desarrollo   Rafael Zamora RiescoAlianzas Multiactor para la Cooperación al Desarrollo   Rafael Zamora Riesco
Alianzas Multiactor para la Cooperación al Desarrollo Rafael Zamora Riesco
 
proceso unificado de software
proceso unificado de softwareproceso unificado de software
proceso unificado de software
 
Herramientas abcd
Herramientas abcdHerramientas abcd
Herramientas abcd
 
Master simce-2ºmedio
Master simce-2ºmedioMaster simce-2ºmedio
Master simce-2ºmedio
 
Fwpa doc-desarrollo
Fwpa doc-desarrolloFwpa doc-desarrollo
Fwpa doc-desarrollo
 
Teacher manual spanish
Teacher manual spanishTeacher manual spanish
Teacher manual spanish
 
37MSEC_FOL.pdf
37MSEC_FOL.pdf37MSEC_FOL.pdf
37MSEC_FOL.pdf
 
Apunte Rup
Apunte RupApunte Rup
Apunte Rup
 
Algoritmosy estructurasdedatos2015 1
Algoritmosy estructurasdedatos2015 1Algoritmosy estructurasdedatos2015 1
Algoritmosy estructurasdedatos2015 1
 
Manual de inf para negocios
Manual de inf para negociosManual de inf para negocios
Manual de inf para negocios
 
Postgres tutorial
Postgres tutorial Postgres tutorial
Postgres tutorial
 
Unidad3 fds
Unidad3 fdsUnidad3 fds
Unidad3 fds
 
Oracle introduccion
Oracle introduccionOracle introduccion
Oracle introduccion
 
Flash as3 components_help
Flash as3 components_helpFlash as3 components_help
Flash as3 components_help
 
Bases de-datos
Bases de-datosBases de-datos
Bases de-datos
 
Bases de-datos
Bases de-datosBases de-datos
Bases de-datos
 
Postgres tutorial
Postgres tutorialPostgres tutorial
Postgres tutorial
 
Enseñanza mesclada
Enseñanza mescladaEnseñanza mesclada
Enseñanza mesclada
 
ASP.NET y VB.NET paramanejo de base de datos
ASP.NET y VB.NET paramanejo de base de datosASP.NET y VB.NET paramanejo de base de datos
ASP.NET y VB.NET paramanejo de base de datos
 

Mehr von María Luisa Velasco (20)

Sql
SqlSql
Sql
 
Sql
SqlSql
Sql
 
Ejercicios normalización
Ejercicios normalizaciónEjercicios normalización
Ejercicios normalización
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Proyecto final de algoritmica
Proyecto final de algoritmicaProyecto final de algoritmica
Proyecto final de algoritmica
 
Ejercicios arreglos4
Ejercicios arreglos4Ejercicios arreglos4
Ejercicios arreglos4
 
Ejercicios arreglos2
Ejercicios arreglos2Ejercicios arreglos2
Ejercicios arreglos2
 
Seguridad bd
Seguridad bdSeguridad bd
Seguridad bd
 
Ejercicios3parte
Ejercicios3parteEjercicios3parte
Ejercicios3parte
 
Ejercicio privilegios
Ejercicio privilegiosEjercicio privilegios
Ejercicio privilegios
 
Ejercicios2parte
Ejercicios2parteEjercicios2parte
Ejercicios2parte
 
Arreglos
ArreglosArreglos
Arreglos
 
Ejercicios arreglos
Ejercicios arreglosEjercicios arreglos
Ejercicios arreglos
 
Ejercicios arreglos
Ejercicios arreglosEjercicios arreglos
Ejercicios arreglos
 
Practica controlconcurrencia
Practica controlconcurrenciaPractica controlconcurrencia
Practica controlconcurrencia
 
Arreglos
ArreglosArreglos
Arreglos
 
Practicacandados
PracticacandadosPracticacandados
Practicacandados
 
Concurrencia
ConcurrenciaConcurrencia
Concurrencia
 
Ejercicio 2 transacciones
Ejercicio 2 transaccionesEjercicio 2 transacciones
Ejercicio 2 transacciones
 
Commitoracle2
Commitoracle2Commitoracle2
Commitoracle2
 

Guia eejerciciospracticos

  • 1. LICENCIATURA EN SISTEMAS COMPUTACIONALES ADMINISTRATIVOS GUÍA DE EJERCICIOS PRÁCTICOS EXPERIENCIA EDUCATIVA FUNDAMENTOS DE BASES DE DATOS PRESENTAN: M.T.E MARIA LUISA VELASCO RAMIREZ M.E PATRICIA ARIETA MELGAREJO
  • 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” .................................................................................................................. 13 4. “Hospital General”............................................................................................................................. 14 5. “Agencia de Viajes” ........................................................................................................................... 15 6. “Zoológico” ........................................................................................................................................ 16 7. “Institución Educativa” ...................................................................................................................... 17 8. “Casa Limpia” .................................................................................................................................... 18 9. “Servicio Militar” ............................................................................................................................... 19 10. “Sedes Olímpicas” ........................................................................................................................... 20 11. “Agencias de Viajes” ........................................................................................................................ 21 12. “Biblioteca del Instituto Técnico de Georgia” (BTG) ....................................................................... 22 13. “Museo de Arte”.............................................................................................................................. 24 14. “Consultorio Dental” ....................................................................................................................... 25 15. “Firma de Diseño de Interiores” ...................................................................................................... 26 Bibliografía: ....................................................................................................................................... 27 Ejercicios Prácticos Diseño de Bases de Datos ...................................................................................... 28 Fundamento Teórico ......................................................................................................................... 28 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 2
  • 3. Saberes a reforzar ............................................................................................................................. 28 Estrategia metodológica propuesta .................................................................................................. 28 Ejercicios Reducción Diagramas de Clase a Tablas............................................................................ 28 Ejercicios Normalización.................................................................................................................... 28 Bibliografía: ....................................................................................................................................... 30 Bibliografía Complementaria ............................................................................................................ 30 Ejercicios Prácticos Introducción a un lenguaje de consulta ................................................................ 31 Fundamento Teórico ......................................................................................................................... 31 Saberes a reforzar ............................................................................................................................. 31 Estrategia metodológica propuesta .................................................................................................. 31 Álgebra Relacional ............................................................................................................................. 32 Ejercicio: ............................................................................................................................................ 38 Bibliografía: ....................................................................................................................................... 38 SQL. Lenguaje de consulta en BD relacionales .................................................................................. 39 Creando una Base de Datos en Mysql ............................................................................................... 39 A continuación se describe el proceso completo de creación y uso de una base de datos en MySQL. ................................................................................................................................... 39 Conectándose y desconectándose al servidor MySQL .................................................................. 39 Creando y usando una base de datos ............................................................................................... 43 Creando una tabla ............................................................................................................................. 44 Modificación de la Base de Datos. ................................................................................................ 49 Load Data Infile.............................................................................................................................. 50 Actualizaciones .............................................................................................................................. 50 Consultas en SQL....................................................................................................................... 51 Consulta 0 .................................................................................................................................... 51 Consulta 1 .................................................................................................................................... 52 Consulta 2 .................................................................................................................................... 52 Consulta 3 .................................................................................................................................... 53 Consulta 4 .................................................................................................................................... 53 Consulta 5 .................................................................................................................................... 53 Consulta 6 .................................................................................................................................... 54 Consulta 7 .................................................................................................................................... 54 Consulta 8 .................................................................................................................................... 54 Consulta 9 .................................................................................................................................... 54 Consulta 10.................................................................................................................................. 55 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 3
  • 4. Consultas en SQL....................................................................................................................... 55 Consulta 11.................................................................................................................................. 56 Consulta 12.................................................................................................................................. 56 Consulta 13.................................................................................................................................. 57 Consulta 14.................................................................................................................................. 57 Consulta 15.................................................................................................................................. 58 Consulta 16.................................................................................................................................. 58 Consulta 17.................................................................................................................................. 58 Consulta 18.................................................................................................................................. 58 Consulta 19.................................................................................................................................. 58 Consulta 20.................................................................................................................................. 59 Consulta 21.................................................................................................................................. 59 Consulta 22.................................................................................................................................. 59 Conjunto Explícitos y valores NULOS en SQL .................................................................................... 60 Tablas Reunidas(JOIN) ....................................................................................................................... 60 Instancia de la Base de Datos. ........................................................................................................... 62 Bibliografía: ....................................................................................................................................... 63 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 4
  • 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 5
  • 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 6
  • 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 7
  • 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 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 8
  • 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 9
  • 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 Número, Nombre, Lugares, Gerente y FechaInicGerente. Lugares es el único atributo multivaluado. Se puede especificar que 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 10
  • 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 11
  • 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 12
  • 13. 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 13
  • 14. 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 entregará 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, la hora en que inicia y en la que termina una visita al enfermo.  A un paciente le puede atender varios médicos, siendo significativa por cada visita médica la fecha y hora de ésta. Y un paciente puede tener diferentes diagnósticos de enfermedad, siendo relevante la fecha de diagnóstico. 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 14
  • 15. 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 número 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 15
  • 16. 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 16
  • 17. 7. “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 imparte cada materia en cada aula. Los profesores pueden impartir varias materias, pero una materia solo puede ser impartida por un profesor. Un alumno pertenece a una sección, de esta última interesa conocer el número de sección y carrera a la que corresponde, en cada sección puede haber varias alumnos. Un alumno puede ser representante de la sección y representar a los demás alumnos. Elaboración propia Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 17
  • 18. 8. “Casa Limpia” A partir de los siguientes requerimientos para una empresa que vende diversos productos de limpieza para la casa, realizar el modelo entidad-relación. La empresa Casa Limpia vende productos de limpieza a varios clientes. Se necesita conocer los datos de los clientes, tales como códigoC, RFC, nombre, apellidos, dirección, teléfonos. Cada producto tiene un código, un nombre, una descripción así como un precio unitario. Un cliente puede adquirir varios productos a través de una orden_de _venta, esta orden detalla los productos que aparecen en ella, siendo relevante la cantidad que detalla de cada producto. De la orden_de_venta se debe registrar el folio, la fecha y el total, un cliente puede hacer más de una orden de venta, pero esta orden solo se registra para un cliente. Los productos son suministrados por diferentes proveedores, a través de un pedido, definido por Nopedido, fecha y total. Se debe tener en cuenta que un pedido detalla cada producto que surte o suministra el proveedor, siendo significativa la cantidad de producto que se detalla en este pedido. Un proveedor puede suministrar diferentes pedidos, pero estos últimos son facturados por un solo proveedor. De cada proveedor se desea conocer el códigoP, la RazónSocial, nombre, dirección y teléfonos donde se le pueda localizar. Elaboración Propia Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 18
  • 19. 9. “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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 19
  • 20. 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.). Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 20
  • 21. 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 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áficas, 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 21
  • 22. 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 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 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 22
  • 23. 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 23
  • 24. 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 hecha (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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 24
  • 25. 14. “Consultorio Dental” Diseñe un esquema conceptual para la siguiente aplicación: Un grupo dental necesita mantener la información de pacientes, visitas que hacen al consultorio, el trabajo que se debe realizar, los procedimientos realizados durante las visitas, los cargos y pagos por el tratamiento, y los suministros y servicios de laboratorio. Suponer que existen varios dentistas en el grupo. Los pacientes realizan muchas visitas y durante cada visita se les puede practicar muchos servicios o procedimientos. Aunque los pacientes usualmente hacen cita para ver al mismo dentista, pueden ver a otro en cado de urgencia o por otras razones. La base de datos debe almacenar información acerca de los servicios y procedimientos, incluidos un código, descripción y cargos por cada uno. Algunos servicios pueden abarcar varias visitas. La oficina usa tres laboratorios dentales, uno para suministros regulares, uno para fabricación de dentaduras y uno para otros suministros y servicios. Definir los atributos de cada entidad o clase que identifique. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 25
  • 26. 15. “Firma de Diseño de Interiores” Una firma de diseño de interiores quiere tener una base de datos para representar sus operaciones. Un cliente solicita que la firma realice servicios como decorar una casa nueva, decorar habitaciones, localizar y comprar mobiliario, y cosas por el estilo. Los clientes pueden ser individuos privados o corporaciones. El cliente se reúne con uno de los decoradores de la firma, quien trabaja con el cliente hasta que el trabajo esté completo. Los clientes pueden solicitar un decorador particular y también puede cambiar de decoradores para trabajos futuros. Para cada trabajo, la firma proporciona un estimado de la cantidad de tiempo y dinero requerido para completar el trabajo. Un trabajo puede incluir muchas actividades, como pintar, instalar recubrimiento de pisos, fabricar e instalar cortinajes, papel tapiz, construir e instalar gabinetes, etc. Estas actividades se realizan mediante contratistas contratados por la firma para trabajar sobre una base diaria y horaria a una tasa negociada por ambas partes. El contratista proporciona una estimación del tiempo requerido para cada actividad. Algunas actividades las realiza el decorador de la firma. Cada actividad requiere materiales como pinturas o madera, y la firma debe seguir la pista del costo de los materiales, así como de la mano de obra por cada actividad, para cobrar al cliente. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 26
  • 27. 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 Ricardo M. Catherine Bases de Datos McGrawHill, 2009. Rob Peter, Coronel Carlos “Sistemas de Bases de Datos” Diseño, Implementación y Administración Thomson Quinta edición 2004 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 27
  • 28. 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 vendido 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? Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 28
  • 29. Ejercicio 2 Considere la siguiente definición de relación y datos muestra: Empleado_trabaja_Proyecto NombredelEmpleado Teléfono ProyectoID TareasID HorasTotales Descripción_Proyecto Domínguez 12345 100S B-1 12 Reingeniería Domínguez 12345 100S P-1 12 Reingeniería Domínguez 12345 200B B-1 15 Sustentable Domínguez 12345 200B P-1 15 Sustentable Palacios 67890 100S C-1 22 Reingeniería Palacios 67890 200D C-1 26 Innovación Palacios 67890 200D P-1 16 Innovación Empleado_trabaja_Proyecto (NombredelEmpleado, ProyectoID, TareasID, Horas Totales, Teléfono) 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? Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 29
  • 30. 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 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 30
  • 31. 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 31
  • 32. Á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 RXS cartesiano 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 Pes Ciudad o 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 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 32
  • 33. 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 Vno Pno Cant Proyección La proyección de una relación es un subconjunto vertical con la eliminación de duplicados. * * * * * * Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 33
  • 34. 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 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 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 34
  • 35. 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 35
  • 36. 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 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 36
  • 37. 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 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 37
  • 38. 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 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 38
  • 39. 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 se ejecuta este comando, se pedirá que se proporcione 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: ****** Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 39
  • 40. 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. Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 40
  • 41. 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> Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 41
  • 42. De nuevo, se 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; "> Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 42
  • 43. 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> Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 43
  • 44. 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 se necesita crear. 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) Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 44
  • 45. 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)); Nota: No crear la lleve foránea NPERSONALSUPERV, marcará un error, debido a que debe existir primero como primaria para existir como foránea y como no se ha creado la tabla no existe aún. Agregarla después con ALTER TABLE ADD FOREIGN KEY (NPERSONALSUPERV) REFERENCES EMPLEADO (NPERSONAL) Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 45
  • 46. CREATE TABLE UBICACIONES_DEPTO ( DNUMERO INT NOT NULL, DUBICACION VARCHAR(15) NOT NULL, PRIMARY KEY (DNUMERO, DUBICACION), FOREIGN KEY (DNUMERO) REFERENCES DEPARTAMENTO (DNUMERO)); 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)); Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 46
  • 47. 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 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: Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 47
  • 48. 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 ); 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 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 48
  • 49. 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: 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) Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 49
  • 50. 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: 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: Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 50
  • 51. Delete from r. Where P; Ejemplos: Delete from Empleado Where Apellido = “Jiménez”; Delete from Empleado Where No_per= 12345678; 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 Guía de Ejercicios Prácticos Fundamentos de Bases de Datos 51