Está en la página 1de 7

Rosana Margarita Reyes Serrano

Actividad No 3.

Presentación y objetivos
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

Ing. De Software
V Semestre
This study source was downloaded by 100000848578282 from CourseHero.com on 06-09-2022 19:06:32 GMT -05:00
Universidad De Cartagena

https://www.coursehero.com/file/129710190/Actividad-3-BDIIpdf/
Rosana Margarita Reyes Serrano

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.

Ing. De Software
V Semestre
This study source was downloaded by 100000848578282 from CourseHero.com on 06-09-2022 19:06:32 GMT -05:00
Universidad De Cartagena

https://www.coursehero.com/file/129710190/Actividad-3-BDIIpdf/
Rosana Margarita Reyes Serrano

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/DB,
utilizando InnoDB.

CREATE TABLE persona (


id_persona SERIAL PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
apellido VARCHAR(50) NOT NULL,
telefono VARCHAR(9) NOT NULL,
direccion VARCHAR(100) NOT NULL,
cod_postal VARCHAR(100) NOT NULL,
fecha nam date NOT NULL,
fecha_def date DEFAULT NULL CHECK (fecha_def>fecha_nam),
genero enum ("H', 'M'),
id_trabajo INT NOT NULL
);
CREATE TABLE tipo Trabajo (
id_trabajo INT PRIMARY KEY,
id_waiter INT NOT NULL UNIQUE,
id_company VARCHAR (10) UNIQUE,
Ing. De Software
V Semestre
This study source was downloaded by 100000848578282 from CourseHero.com on 06-09-2022 19:06:32 GMT -05:00
Universidad De Cartagena

https://www.coursehero.com/file/129710190/Actividad-3-BDIIpdf/
Rosana Margarita Reyes Serrano

FOREIGN KEY (id_trabajo) REFERENCES persona (id_trabajo) ON DELETE


CASCADE ON UPDATE CASCADE
);
CREATE TABLE waiter (
id_waiter INT PRIMARY KEY,
tipoWaiter enum('Maitre','"NORMAL"),
id_restaurante INT NOT NULL UNIQUE,
FOREIGN KEY (id_waiter) REFERENCES tipotrabajo (id_waiter) ON DELETE
CASCADE ON UPDATE CASCADE
);
CREATE TABLE company (
id_company VARCHAR (10)PRIMARY KEY,
nom_company VARCHAR(50) NOT NULL UNIQUE,
id_emp INT NOT NULL UNIQUE,
id_vale INT NOT NULL UNIQUE,
FOREIGN KEY (id_company) REFERENCES tipotrabajo (id_company) ON DELETE
CASCADE ON UPDATE CASCADE
);
CREATE TABLE empleado (
id_emp INT NOT NULL PRIMARY KEY,
id_vale INT NOT NULL UNIQUE,
tiempo Trabajo INT NOT NULL UNIQUE,
id_especialidad INT NOT NULL UNIQUE,
FOREIGN KEY (id_emp) REFERENCES company (id_emp) ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE tiempo Trabajo (
tiempo Trabajo INT PRIMARY KEY,
ini_trab date NOT NULL,
fin_trab date,
FOREIGN KEY (tiempoTrabajo) REFERENCES empleado (tiempo Trabajo) ON
DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE especialidad Laboral ( id_especialidad INT PRIMARY KEY,
especialidad TEXT NOT NULL,
descripcion TEXT NOT NULL,
FOREIGN KEY (id_especialidad) REFERENCES empleado (id_especialidad) ON
DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE restaurante (

Ing. De Software
V Semestre
This study source was downloaded by 100000848578282 from CourseHero.com on 06-09-2022 19:06:32 GMT -05:00
Universidad De Cartagena

https://www.coursehero.com/file/129710190/Actividad-3-BDIIpdf/
Rosana Margarita Reyes Serrano

id_restaurante INT PRIMARY KEY,


id_nom VARCHAR(100) NOT NULL UNIQUE,
direccion VARCHAR (100) NOT NULL,
precio_menu FLOAT NULL,
especialidadRestaurante INT NOT NULL UNIQUE,
FOREIGN KEY (id_restaurante) REFERENCES waiter (id_restaurante) ON DELETE
CASCADE ON UPDATE CASCADE
);
CREATE TABLE especialidadRestaurante (
especialidadRestaurante INT PRIMARY KEY, especialidad TEXT NOT NULL,
descripcion TEXT NOT NULL,
FOREIGN KEY (especialidadRestaurante) REFERENCES (especialidadRestaurante) ON
DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE vale (
id_vale INT PRIMARY KEY,
denominacion VARCHAR (100) NOT NULL,
precio DOUBLE UNSIGNED NOT NULL,
id_company VARCHAR (10) NOT NULL UNIQUE,
id_restaurante INT NOT NULL UNIQUE,
FOREIGN KEY (id_company) REFERENCES company (id_company) ON DELETE
CASCADE ON UPDATE CASCADE,
FOREIGN KEY (id_restaurante) REFERENCES restaurante (id_restaurante) ON
DELETE CASCADE ON UPDATE CASCADE
);

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

Ing. De Software
V Semestre
This study source was downloaded by 100000848578282 from CourseHero.com on 06-09-2022 19:06:32 GMT -05:00
Universidad De Cartagena

https://www.coursehero.com/file/129710190/Actividad-3-BDIIpdf/
Rosana Margarita Reyes Serrano

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:

Nombre tabla Núm. Total


registros
Restaurant 5
Waiter 5
Company 5
Specialty 5

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

SELECT ‘tickets’.’ id_vale’AS Tickets, ‘tickets’. Denominacion ’AS’ denominacion’

‘Restaurante’. Id_ nom’ AS ‘Nombre Restaurante’. ‘especialidad’. ‘especialidad’ AS

‘Especialidad’

FROM ‘vale’ AS ‘tickets’

LEFT JOIN ‘restaurante’ AS ‘Restaurante’ ON ‘Tickets’.’id_ restaurante’=

‘Restaurante’.’ id _ restaurante’

Ing. De Software
V Semestre
This study source was downloaded by 100000848578282 from CourseHero.com on 06-09-2022 19:06:32 GMT -05:00
Universidad De Cartagena

https://www.coursehero.com/file/129710190/Actividad-3-BDIIpdf/
Rosana Margarita Reyes Serrano

LEFT JOIN ‘especialidad restaurante’ AS ‘especialidad’ ON

‘Especialidad’ especialidadRestaurante= ‘Restaurante. EspecialidadRestaurante. ;

Tickets Denominacion Nombre restaurante Especialidad


1 Almuerzo de trabajo Sazón Arroz chino
2 Desayuno laboral Asador Carne a la plancha
3 Corrientazo Braza Pollo broster
4 Almuerzo ejecutivo Gourmet Sopa de fideos
5 Almuerzo de negocio Don sancocho Sancocho trifásico

Ing. De Software
V Semestre
This study source was downloaded by 100000848578282 from CourseHero.com on 06-09-2022 19:06:32 GMT -05:00
Universidad De Cartagena

https://www.coursehero.com/file/129710190/Actividad-3-BDIIpdf/
Powered by TCPDF (www.tcpdf.org)

También podría gustarte