Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Actividad de Aprendizaje de Base de Datos Ii Unidad 3
Actividad de Aprendizaje de Base de Datos Ii Unidad 3
FACULTAD DE INGENIERÍA
QUINTO SEMESTRE
BASE DE DATOS II
ACTIVIDAD DE APRENDIZAJE 3
TUTOR
MARIO CORPAS
INTEGRANTES
TITO MANUEL
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.
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 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.
Respuesta:
Para diseñar la base de datos que almacena la información sobre el servicio de tickets
restaurant, se pueden utilizar las siguientes tablas:
Nombre
Dirección
Especialidad de cocina
Precio
ID (clave primaria)
Nombre
Apellido
Dirección
Código postal
Fecha de nacimiento
Fecha de defunción
Género
Nombre
Apellido
Dirección
Código postal
Fecha de nacimiento
Fecha de defunción
Género
ID (clave primaria)
Descripción de la especialidad
Estudios correspondientes
Fecha de fin del periodo laboral (puede ser nulo si el empleado sigue
trabajando en la empresa)
Con estas tablas, se pueden almacenar todos los datos necesarios para el servicio de
tickets restaurant. Se pueden utilizar claves foráneas para establecer las relaciones entre
las tablas. Por ejemplo, la tabla Vale tiene una clave foránea a la tabla Empresa para indicar
qué empresas utilizan cada tipo de vale. De esta forma, se pueden realizar consultas que
relacionen los datos de distintas tablas, como, por ejemplo, obtener qué empresas utilizan
cada tipo de vale.
Se pide:
Respuesta:
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).
Respuesta:
ESPECIALIDAD(descripcion_especialidad (PK))
Donde:
(FK) indica que el atributo es clave foránea y hace referencia a la clave primaria de
otra tabla.
Se han agregado las claves foráneas necesarias para representar las relaciones entre las
entidades, y se han creado claves identificadoras sintéticas solo cuando fue necesario para
garantizar la unicidad de las filas en las tablas.
Cabe destacar que no se han incluido las relaciones "sustituto" entre los camareros ni la
relación entre los empleados y los vales utilizados para pagar sus comidas, ya que no se
especificaron en el enunciado.
Respuesta:
CREATE TABLE Empresa (
CIF CHAR(9) PRIMARY KEY,
nombre VARCHAR(255) UNIQUE NOT NULL
);
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'.
Ejercicio voluntario:
Repetid las sentencias de creación de las tablas con la sintaxis SQL de MySQL/MariaDB,
utilizando InnoDB.
Respuesta:
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.
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
Respuesta:
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
Respuesta:
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
.
Respuesta:
COPY nombre_tabla FROM 'ruta_del_archivo' DELIMITER ',' CSV HEADER;
Donde:
nombre_tabla: es el nombre de la tabla donde se cargarán los datos.
ruta_del_archivo: es la ubicación del archivo de texto plano que contiene los datos.
DELIMITER: es el separador utilizado en el archivo de texto plano para separar los
valores de cada campo.
CSV: indica que el archivo de texto plano utiliza el formato CSV (comma-separated
values).
HEADER: indica que la primera fila del archivo de texto plano contiene los nombres
de las columnas.
Es importante tener en cuenta que el usuario que ejecuta la instrucción COPY debe tener
permisos de lectura sobre el archivo de texto plano.
Una vez que se tiene el archivo de texto plano con los datos a cargar y se ha utilizado la
instrucción COPY, se puede verificar que los datos se hayan cargado correctamente con
una consulta SELECT a la tabla correspondiente.
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
Respuesta:
Para poblar la tabla WAITER utilizando la instrucción COPY, se deben seguir los siguientes
pasos:
1. Crear un archivo de texto (con extensión .txt) que contenga los datos a insertar en la
tabla. El archivo debe estar en formato CSV (valores separados por comas), con una
fila por cada registro y una coma separando cada valor.
Por ejemplo, el archivo waiter.txt podría tener la siguiente estructura:
John,Doe
Jane,Smith
Bob,Johnson
Donde cada fila representa un camarero y los valores separados por comas corresponden
al nombre y apellido del camarero.
2. Conectar a la base de datos en PostgreSQL utilizando un cliente como psql o
PgAdmin.
3. Crear la tabla WAITER con la estructura correspondiente. La estructura podría ser la
siguiente:
CREATE TABLE WAITER (
WAITER_ID SERIAL PRIMARY KEY,
FIRST_NAME VARCHAR(50) NOT NULL,
LAST_NAME VARCHAR(50) NOT NULL
);
4. Utilizar la instrucción COPY para cargar los datos desde el archivo waiter.txt en la
tabla WAITER. La sintaxis de la instrucción COPY es la siguiente:
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:
Respuesta:
Esta consulta utiliza las tablas restaurant, ticket, waiter y specialty para obtener la
especialidad de los restaurantes con más tickets. Se realiza una unión de estas tablas a
través de las claves foráneas restaurant_id, waiter_id y specialty_id. Se utiliza la función de
agregación COUNT() para contar el número total de tickets, y se agrupa por el tipo de
especialidad en la tabla specialty. Finalmente, se ordena por el número total de tickets en
orden descendente y se limita a la primera fila con LIMIT 1 para obtener el restaurante con
más tickets y su especialidad correspondiente.