Está en la página 1de 4

Actividad de aprendizaje unidad #3

Universidad de Cartagena
Programa: Ingeniería de Software
Asignatura: Base de Datos II
Estudiante:

La actividad No3, consta de dos preguntas; la primera sobre diseño e


implementación, la segunda sobre manipulación de datos (incluye consultas
SQL).

1. Diseño e implementación.

Nos disponemos a diseñar una base de datos para almacenar información


sobre el servicio de tickets restaurant que utilizan algunas empresas para
las comidas de los empleados durante su jornada laboral. Para ello, la base
de datos contendrá información sobre los tipos de vales de restaurante que
se utilizan.

Las empresas se identifican con el CIF y todas tienen un nombre único


identificador.

Los restaurantes se identifican con el nombre. De ellos guardaremos la


dirección, el precio del menú (si lo ofrecen) y el detalle de la posible
especialidad de cocina que tienen de entre las diversas posibles.

Existen diferentes tipos de vales y dada uno de ellos tiene una


denominación distinta. Todos los vales son aceptados en todos los
restaurantes y se quiere registrar el uso de estos como medio de pago de
las comidas de los empleados. Nos interesa también guardar el precio de
cada tipo de vale y qué empresas utilizan cada tipo de vale.

Los restaurantes pueden tener contratados camareros. Un camarero no


puede estar contratado por más de un restaurante y entre los camareros de
un restaurante hay que pueden considerarse sustitutos los unos de los
otros. Existen algunos camareros que
pueden ejercer de 'maître' en el restaurant donde trabajan. En un restaurant
únicamente puede haber un maître.

Los empleados de las empresas pueden ser contratados por unos periodos
de tiempo determinados para su especialidad laboral y nos interesa tener
constancia de dicho histórico. Tanto la especialidad con la descripción de
los estudios que le corresponde se especificará textualmente. Un empleado
puede tener diversas especialidades laborales.
De tota persona que trabaja en una empresa o que hace de camarero se
desean almacenar los siguientes datos; el nombre, el apellido, la calle
donde vive, el código postal correspondiente, la fecha de nacimiento, la
fecha de defunción (si existe) y el género.

Se pide:

a. Realizad el diagrama entidad/relación para la base de datos que dará


soporte al sistema informático que almacenará todos los datos, según el
modelo descrito (se deben incluir exclusivamente las entidades y
relaciones básicas que se pueden extraer del enunciado).

b. Realizad la transformación del modelo ER al modelo relacional. Cread


claves identificadoras sintéticas siempre que lo creáis necesario.

NOTA: Las tablas que se piden crear/cargar en el segundo ejercicio deben


servir para comprobar la idoneidad de las entidades, atributos y relaciones aquí
propuestas (por coherencia, se pide conservar el nombre de las tablas que
existen en el segundo ejercicio).

c. Cread las tablas según atributos, claves (primarias y foráneas) y


restricciones que se entrevean en el SCHEMA, según las creadas en el
modelo relacional.

Nota: No utilicéis herramientas de generación automática de código. No


declaréis las restricciones a posteriori (no utilicéis ALTER TABLE para
añadir restricciones después de la creación de las tablas). Dad nombre a
todas las restricciones. Indentad/tabulad el código SQL para que sea
muy legible (mostrad un único campo por línea).

INDICACIONES: Utilizad claves primarias sintéticas para la tabla que


contendrá los datos de las especialidades y para el identificador de la
tabla donde se almacenan los tickets cambiados. Cread concretamente
estos campos cómo tipo 'SERIAL'.

RESTRICCIONES A TENER EN CUENTA OBLIGATORIAMENTE AL


CREAR LAS TABLAS:

- Un camarero únicamente puede ser maître del restaurante donde


trabaja.
- De estar informada la fecha de defunción de una persona, ha de ser
posterior a la de nacimiento.
- El nombre y los apellidos de una persona siempre han de estar
informados.
- El género de una persona puede no estar informado, pero de estarlo,
deberá contener una H o una M.

2. CREACIÓN DE LAS TABLAS:


Implementar sentencias SQL, para la creación de tablas.

Ejercicio voluntario:
Repetid las sentencias de creación de las tablas con la sintaxis SQL de
MySQL/MariaDB, utilizando InnoDB.

3. Manipulación y consultas

Para probar la base de datos diseñada la empresa gestora de los vales


restaurante nos ceden un conjunto de datos semisintéticos de
restaurantes, tickets y camareros.

a. Teniendo en cuenta la estructura de las tablas realizadas y el


contenido de los ficheros a realizar por los estudiantes, se pide
poblar de datos las siguientes tablas:

Tabla COMPANY

Utilizar la instrucción COPY para cargar los datos en la tabla del


mismo nombre, los datos pueden ser proporcionados por el alumno,
por medio de un archivo txt.

Tabla SPECIALTY

Utilizar la instrucción COPY para cargar los datos en la tabla del


mismo nombre, los datos pueden ser proporcionados por el alumno,
por medio de un archivo txt.

Tabla RESTAURANT

Utilizar la instrucción COPY para cargar los datos en la tabla del


mismo nombre, los datos pueden ser proporcionados por el alumno,
por medio de un archivo txt.

Tabla WAITER

Utilizar la instrucción COPY para cargar los datos en la tabla del


mismo nombre, los datos pueden ser proporcionados por el alumno,
por medio de un archivo txt

Cumplimentad con el número de registros, según los datos disponible


después de realizar los procesos de carga de datos, la tabla
correspondiente:
b. Realizad la siguiente consulta SQL:

Se desea obtener el tipo de especialidad de los restaurantes en que


se han entregado más tickets. En concreto, se desea recuperar el
número total de tickets cambiados y el tipo de especialidad de dichos
restaurantes.

También podría gustarte