UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN Escuela Profesional de Ingeniería en Informática y Sistemas Integrantes : ➢ Jampier Smith Vasquez Mija 2018-119070 ➢ Patrick Peralta Villegas 2018-119066 ➢ Luis Padilla Bacas 2018-119065 Docentes : ➢ Ing. Oliver Santana ➢ Ing. Israel Chaparro Curso : Base de Datos II Tarea encargada : Sistema para Parque Recreacional Ciclo : 6to Ciclo Año de estudios : 3er año TACNA - PERÚ 2020 Sistema para Parque Recreacional 1. Objetivo del proyecto: Brindar un sistema que dé soporte al Parque Recreacional Jurásico, con la finalidad de solucionar los problemas que se mencionan en función a las necesidades que hayan y mejorar aspectos que también necesiten mejoras o algún agregado. 2. Ventajas de la solución propuesta: El sistema ofrecerá un mejor desempeño y control en las actividades que se realicen, con la información que se recolecte seguir contribuyendo a la mejora del parque jurásico, con la finalidad de brindar un mejor servicio a los clientes, obtener un buen reconocimiento y las ganancias correspondientes. 3. Metodología de trabajo: 4. Alcance del trabajo: Sistema Informático de control y reportes para la empresa Jurasic Park S.A. 5. Requerimientos funcionales: - Reporte del listado con las visitas que haya reservadas para el día siguiente, de manera de que la misma sepa a quienes debe dejar entrar y cuanto cobrarles. - El listado debe contener (para cada reserva del día pedido): - Número de reserva de visita, Hora, Código de la escuela, Nombre de la escuela, y por cada tipo de visita de la reserva: - Código de tipo de visita, Descripción de tipo de visita, Arancel por alumno del tipo de visita, Cantidad de alumnos y grado(s). - También debe informar la cantidad real de ingresantes que fueron por cada reserva. - Se debe entregar todos los días un listado con las visitas reservadas para el día siguiente para el Supervisor de Guías, cuando el mismo lo solicite. El supervisor debe, en base al listado, asignar las distintas visitas a su personal a cargo. - El listado debe contener (para cada visita del día pedido): Número de reserva de visita, Hora, Código de la escuela, Nombre de la escuela, y por cada tipo de visita de la reserva: Código de tipo de visita, Descripción de tipo de visita, grado(s). - Al final del día el supervisor informa los guías que se encargaron de cada tipo de visita en cada reserva. - El gerente del área desea poder pedir, en cualquier momento, un listado con la cantidad de alumnos (reales) que ingresaron. Dicha información debe salir discriminada día por día para el periodo de tiempo que él determine, y por cada día discriminado por tipo de visita. Y otro listado donde pueda observar qué cantidad de cada uno de los grados reservaron, entre dos fechas a determinar, cada una de los tipos de visitas que existen. - El sistema debe permitir, además, permitir que el responsable de Recepción de reservas, consulte quienes fueron los guías (Código de guía, y Nombre de guía), que participaron en una reserva específica, teniendo identificado cuál fue el guía responsable por cada tipo de visita de la misma, ya que puede existir una queja de alguna escuela. - 6. 7. Además se desea poder realizar un mailing, con Nombre, Domicilio y Teléfono(s), de todas las escuelas que alguna vez realizaron una reserva”. Requerimientos no funcionales: - La empresa tiene un área (VISITAS PREHISTÓRICAS) que se encarga de ofrecer visitas guiadas para escuelas. - El área Visitas Prehistóricas vende a las escuelas visitas guiadas al parque para sus alumnos. - Las escuelas realizan reservas telefónicas de las visitas que van a realizar, y se les cobra el día que realizan la visita, en el momento de ingresar (según los tipos de visitas que realicen) - Las escuelas en el momento de realizar la reserva informan, día, hora, tipos de visitas, cantidad de alumnos por visita - Pueden en una misma reserva contratar distintos tipos de visitas, para distintos grados de la escuela. - Pueden en una misma reserva contratar distintos tipos de visitas, para distintos grados de la escuela. Cronograma de trabajo: 8. Equipo de trabajo: - 9. Jampier Smith Vásquez Mija (Analista de Sistemas) Luis Benito Padilla (Elicitador de Requerimientos y Requisitos) Patrick Villegas Peralta (Programador SQL y Base de Datos) Forma de pago y propuesta económica: Los pagos se harán por. Objetivos de entregables, mediante efectivo o transferencia bancaria del BCP 5409889--xxxa la empresa de desarrolladores. Entregables: 1. Diseño conceptual (entidades): 2. Diseño lógico aplicando el modelo entidad relación: 3. Diccionario de datos: Mapa de tablas TABLA DE ESCUELA Descripción Nombre de la Tabla escuela Descripción de la Tabla Contiene información respecto a la escuela, que es considerada como una entidad cliente, la cual hace una reserva en el parque recreacional. Objetivo Almacenar la información respecto a la escuela para futuras reservas del parque recreacional. Relaciones Tiene relación con la tabla: reserva, telefono, email_escuela y distrito_escolar. Índices de búsqueda Los Índices de búsqueda son los campos: Nº Nombre de Campo Tipo Dato Valor Nulo Valo r PK FK Descripción del Campo 1 codigo_esc uela int No - Si No Identifica el código de la escuela 2 codigo_distr ito_escolar int No - No Si Identifica el código del distrito 3 nombre_es cuela varchar (45) No - No No Indica el nombre de la escuela 4 calle_escue la varchar (45) No - No No Indica la calle de donde se encuentra la escuela 5 altura_escu ela varchar (45) No - No No Identifica a qué altura está la escuela TABLA TELEFONO Descripción Nombre de la Tabla telefono Descripción de la Tabla Contiene información respecto al o los teléfono(s) que pueda tener la escuela. Objetivo Almacenar la información respecto al o los teléfono(s) de la escuela para que pueda haber un medio de comunicación en que caso haya algo que se necesite coordinar o atender alguna consulta. Relaciones Tiene relación con la tabla: escuela Índices de búsqueda Los Índices de búsqueda son los campos: Nº Nombre de Campo Tipo Dato Valor Nulo Valo r PK FK Descripción del Campo 1 codigo_telef ono int No - Si No Identifica el código de teléfono 2 telefono varchar (12) No - No No Indica el teléfono 3 codigo_esc uela int No - No Si Identifica el código de la escuela TABLA EMAIL_ESCUELA Descripción Nombre de la Tabla email_escuela Descripción de la Tabla Contiene información respecto al o los correo(s) electrónico(s) que pueda tener la escuela. Objetivo Almacenar la información respecto al o los correo(s) electrónicos(s) de la escuela para que pueda haber un medio de comunicación en que caso haya algo que se necesite coordinar o atender alguna consulta. Relaciones Tiene relación con la tabla: escuela Índices de búsqueda Los Índices de búsqueda son los campos: Nº Nombre de Campo Tipo Dato Valor Nulo Valo r PK FK Descripción del Campo 1 id_email_es cuela int No - Si No Identifica el código de email 2 email varchar (100) No - No No Indica el email 3 codigo_esc uela int No - No Si Identifica el código de la escuela TABLA DISTRITO_ESCOLAR Descripción Nombre de la Tabla distrito_escolar Descripción de la Tabla Contiene información respecto a los distritos que existen en tal lugar. Objetivo Almacenar la información de los distritos que hayan, para poder relacionarlas con las escuelas, y saber a donde pertenecen estas. Relaciones Tiene relación con la tabla: escuela Índices de búsqueda Los Índices de búsqueda son los campos: Nº Nombre de Campo Tipo Dato Valor Nulo Valo r PK FK Descripción del Campo 1 codigo_distr ito_escolar int No - Si No Identifica el código del distrito 2 distrito_esc olar varchar (70) No - No No Indica el distrito TABLA RESERVA Descripción Nombre de la Tabla reserva Descripción de la Tabla Contiene información respecto a la reserva hecha por la escuela. Objetivo Almacenar la información más relevante de la reserva. Relaciones Tiene relación con la tabla: escuela, reserva_tipo_visita y reserva_por_grado Índices de búsqueda Los Índices de búsqueda son los campos: TABLA TIPO VISITA Descripción Nombre de la Tabla tipo_visita Descripción de la Tabla Contiene información respecto a la descripción del tipo de visita. Objetivo Almacenar la información respecto a la descripción del tipo de visita. Relaciones Tiene relación con la tabla: escuela, reserva_tipo_visita y reserva_por_grado. Índices de búsqueda Los Índices de búsqueda son los campos: TABLA RESERVA_TIPO_VISITA Descripción Nombre de la Tabla reserva_tipo_visita Descripción de la Tabla Contiene información respecto a detalles de la reserva. Objetivo Almacenar la información respecto a los detalles de la reserva, para poder hacer las preparaciones necesarias para realizar la reserva o satisfacer cualquier duda referente a ello.. Relaciones Tiene relación con la tabla: reserva, tipo_visita y guia. Índices de búsqueda Los Índices de búsqueda son los campos: TABLA RESERVA_POR_GRADO Descripción Nombre de la Tabla reserva_por_grado Descripción de la Tabla Contiene información respecto al grado de la escuela que hizo la reserva. Objetivo Almacenar la información respecto al grado correspondiente a la escuela que realizó la reserva.. Relaciones Tiene relación con la tabla: reserva y tipo_visita. Índices de búsqueda Los Índices de búsqueda son los campos: TABLA GUIA Descripción 4. Nombre de la Tabla guia Descripción de la Tabla Contiene los datos personales del guía. Objetivo Almacenar la información respecto al guía que sirve para poder identificarlo, relacionarlo con las reservas y saber cuales atendió. Relaciones Tiene relación con la tabla: reserva_tipo_visita Índices de búsqueda Los Índices de búsqueda son los campos: Arquitectura del sistema (plataforma): El sistema se hará vía web. Se comprará dominio y hosting para almacenamiento y gestor de base de datos phyadmin incluido en hosting Go Daddy. 5. Requerimientos de hardware y software mínimos: El sistema Web funcionará en cualquier dispositivo conectado a Internet. Como Computadora, laptop, tablet y/o móvil. 6. Codigo sql SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,N O_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; -- ------------------------------------------------------ Schema mydb -- ------------------------------------------------------ Schema jurassicpark -- ----------------------------------------------------CREATE SCHEMA IF NOT EXISTS `jurassicpark` DEFAULT CHARACTER SET utf8 ; USE `jurassicpark` ; -- ------------------------------------------------------ Table `jurassicpark`.`distrito_escolar` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `jurassicpark`.`distrito_escolar` ( `codigo_distrito_escolar` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`codigo_distrito_escolar`)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8; -- ------------------------------------------------------ Table `jurassicpark`.`escuela` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `jurassicpark`.`escuela` ( `codigo_escuela` INT NOT NULL AUTO_INCREMENT, `distrito_escolar_codigo_distrito_escolar` INT NOT NULL, `nombre_escuela` VARCHAR(45) NOT NULL, `calle_escuela` VARCHAR(45) NOT NULL, `altura_escuela` VARCHAR(45) NOT NULL, PRIMARY KEY (`codigo_escuela`, `distrito_escolar_codigo_distrito_escolar`), INDEX `fk_ESCUELA_distrito_escolarl_idx` (`distrito_escolar_codigo_distrito_escolar` ASC) VISIBLE, CONSTRAINT `fk_ESCUELA_distrito_escolarl` FOREIGN KEY (`distrito_escolar_codigo_distrito_escolar`) REFERENCES `jurassicpark`.`distrito_escolar` (`codigo_distrito_escolar`)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8; -- ------------------------------------------------------ Table `jurassicpark`.`email_escuela` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `jurassicpark`.`email_escuela` ( `id email_escuela` INT NOT NULL AUTO_INCREMENT, `email` VARCHAR(100) NOT NULL, `ESCUELA_codigo_escuela` INT NOT NULL, `ESCUELA_distrito_escolar_codigo_distrito_escolar` INT NOT NULL, PRIMARY KEY (`id email_escuela`, `ESCUELA_codigo_escuela`, `ESCUELA_distrito_escolar_codigo_distrito_escolar`), INDEX `fk_email_escuela_ESCUELA1_idx` (`ESCUELA_codigo_escuela` ASC, `ESCUELA_distrito_escolar_codigo_distrito_escolar` ASC) VISIBLE, CONSTRAINT `fk_email_escuela_ESCUELA1` FOREIGN KEY (`ESCUELA_codigo_escuela` , `ESCUELA_distrito_escolar_codigo_distrito_escolar`) REFERENCES `jurassicpark`.`escuela` (`codigo_escuela` , `distrito_escolar_codigo_distrito_escolar`)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8; -- ------------------------------------------------------ Table `jurassicpark`.`guia` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `jurassicpark`.`guia` ( `codigo_guia` INT NOT NULL AUTO_INCREMENT, `nombre_guia` VARCHAR(45) NOT NULL, `apellido_guia` VARCHAR(45) NOT NULL, `sueldo_hora` DECIMAL(10,0) NOT NULL, `domicilio` VARCHAR(90) NOT NULL, PRIMARY KEY (`codigo_guia`)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8; -- ------------------------------------------------------ Table `jurassicpark`.`reserva` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `jurassicpark`.`reserva` ( `numero_reserva` INT NOT NULL AUTO_INCREMENT, `fecha_visita` DATETIME NOT NULL, `hora_visita` TIME NOT NULL, `ESCUELA_codigo_escuela` INT NOT NULL, PRIMARY KEY (`numero_reserva`, `ESCUELA_codigo_escuela`), INDEX `fk_RESERVA_codigo_escuela1_idx` (`ESCUELA_codigo_escuela` ASC) VISIBLE, CONSTRAINT `fk_RESERVA_codigo_escuela1` FOREIGN KEY (`ESCUELA_codigo_escuela`) REFERENCES `jurassicpark`.`escuela` (`codigo_escuela`)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8; -- ------------------------------------------------------ Table `jurassicpark`.`tipo_visita` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `jurassicpark`.`tipo_visita` ( `codigo_tipo_visita` INT NOT NULL AUTO_INCREMENT, `descripcion_tipo_visita` VARCHAR(120) NOT NULL, `arancel_por_alumno` DECIMAL(5,2) NOT NULL, `ESCUELA_codigo_escuela` INT NOT NULL, PRIMARY KEY (`codigo_tipo_visita`, `ESCUELA_codigo_escuela`), INDEX `fk_TIPO_VISITA_ESCUELA1_idx` (`ESCUELA_codigo_escuela` ASC) VISIBLE, CONSTRAINT `fk_TIPO_VISITA_ESCUELA1` FOREIGN KEY (`ESCUELA_codigo_escuela`) REFERENCES `jurassicpark`.`escuela` (`codigo_escuela`)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8; -- ------------------------------------------------------ Table `jurassicpark`.`reserva_por_grado` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `jurassicpark`.`reserva_por_grado` ( `grado` VARCHAR(10) NOT NULL, `RESERVA_numero_reserva` INT NOT NULL, `TIPO_VISITA_codigo_tipo_visita` INT NOT NULL, `TIPO_VISITA_ESCUELA_codigo_escuela` INT NOT NULL, PRIMARY KEY (`grado`, `RESERVA_numero_reserva`, `TIPO_VISITA_codigo_tipo_visita`, `TIPO_VISITA_ESCUELA_codigo_escuela`), INDEX `fk_RESERVA_POR_GRADO_RESERVAl_idx` (`RESERVA_numero_reserva` ASC) VISIBLE, INDEX `fk_RESERVA_POR_GRADO_TIPO_VISITAl_idx` (`TIPO_VISITA_codigo_tipo_visita` ASC, `TIPO_VISITA_ESCUELA_codigo_escuela` ASC) VISIBLE, CONSTRAINT `fk_RESERVA_POR_GRADO_RESERVA1` FOREIGN KEY (`RESERVA_numero_reserva`) REFERENCES `jurassicpark`.`reserva` (`numero_reserva`), CONSTRAINT `fk_RESERVA_POR_GRADO_TIPO_VISITA1` FOREIGN KEY (`TIPO_VISITA_codigo_tipo_visita` , `TIPO_VISITA_ESCUELA_codigo_escuela`) REFERENCES `jurassicpark`.`tipo_visita` (`codigo_tipo_visita` , `ESCUELA_codigo_escuela`)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8; -- ------------------------------------------------------ Table `jurassicpark`.`reserva_tipo_visita` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `jurassicpark`.`reserva_tipo_visita` ( `TIPO_VISITA_codigo_tipo_visita` INT NOT NULL, `RESERVA_numero_reserva` INT NOT NULL, `GUIA_codigo_guia` INT NOT NULL, `cantidad_alumnos_reservados` INT NOT NULL, `cantidad_alumnos_reales` INT NOT NULL, PRIMARY KEY (`TIPO_VISITA_codigo_tipo_visita`, `RESERVA_numero_reserva`), INDEX `fk_RESERVA_TIPO_VISITA_numero_reserva1_idx` (`RESERVA_numero_reserva` ASC) VISIBLE, INDEX `fk_TIPO_VISITA_has_RESERVA_TIPO_VISITA_idx` (`TIPO_VISITA_codigo_tipo_visita` ASC) VISIBLE, INDEX `fk_RESERVA_TIPO_VISITA_GUIA1_idx` (`GUIA_codigo_guia` ASC) VISIBLE, CONSTRAINT `fk_RESERVA_TIPO_VISITA_GUIA1` FOREIGN KEY (`GUIA_codigo_guia`) REFERENCES `jurassicpark`.`guia` (`codigo_guia`), CONSTRAINT `fk_RESERVA_TIPO_VISITA_numero_reserva1` FOREIGN KEY (`RESERVA_numero_reserva`) REFERENCES `jurassicpark`.`reserva` (`numero_reserva`), CONSTRAINT `fk_TIPO_VISITA_has_RESERVA_TIPO_VISITA` FOREIGN KEY (`TIPO_VISITA_codigo_tipo_visita`) REFERENCES `jurassicpark`.`tipo_visita` (`codigo_tipo_visita`)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8; -- ------------------------------------------------------ Table `jurassicpark`.`telefono` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `jurassicpark`.`telefono` ( `codigo_telefono` INT NOT NULL AUTO_INCREMENT, `telefono` VARCHAR(12) NULL DEFAULT NULL, `ESCUELA_codigo_escuela` INT NOT NULL, PRIMARY KEY (`codigo_telefono`), INDEX `fk_telefono_codigo_escuela1_idx` (`ESCUELA_codigo_escuela` ASC) VISIBLE, CONSTRAINT `fk_telefono_codigo_escuela1` FOREIGN KEY (`ESCUELA_codigo_escuela`) REFERENCES `jurassicpark`.`escuela` (`codigo_escuela`)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;