Documente Academic
Documente Profesional
Documente Cultură
CURSO
FUNDAMENTO DE BASE DE DATOS
DOCENTE
RIOS CAMPOS PILAR
TRABAJO
Final SQL
INTEGRANTES
Este trabajo, tiene como objetivo, tal y como se verá durante su desarrollo,
recabar la información necesaria para elaborar un modelo de base de datos relacional
que le permita al hostal Moon Light manejar los datos relacionados con clientes,
empleados, habitaciones, formas de pago de manera confiable.
Este modelo será llevado al proceso de Normalización para pasar luego a un modelo
lógico que servirá como materia prima para la posterior implementación del modelo
físico de datos, todo esto apegado a las necesidades de la empresa en cuanto a manejo
de información y los datos.
Objetivo General
Crear un modelo de una base de datos relacional para el hostal Moon Light con el
fin de aportar una solución viable a los problemas de control sobre el inventario,
proveedores y clientes, empleados que tienen en la actualidad.
Objetivos Específicos
Aplicar los conocimientos adquiridos en el curso de bases de datos uno con el fin
crear un modelo de bases de datos relacional eficiente y acorde con la
necesidades del hostal Moon Light.
Metodología Aplicada:
Entrevista (anexo Nº 1)
Observación directa sobre los procesos objetos de estudio.
Análisis de documentación de la empresa (anexo Nº 2)
Análisis de la información y elaboración del modelo de datos.
Descripción de la Empresa
El hostal Moon Light está ubicado en la Victoria, es un lugar ideal para un plácido
descanso contamos con personal de calidad además brindamos los servicios de Jacuzzi,
agua caliente y fría, tv con cable, wifi, eventos sociales, estacionamiento privado,
Karaoke, amplias habitaciones y seguridad permanente garantizada.
Filosofía al Cliente
La satisfacción del cliente es crítico para nuestro éxito, así que vamos a ofrecer una
garantía incondicional de regreso de dinero a cualquiera que no esté satisfecho con sus
muebles. Esta garantía de retorno va a demostrar nuestro compromiso de ofrecer una
calidad excelente y al mismo tiempo asegurar la satisfacción del cliente.
Descripción del problema
Por ser un hostal mediano y recientemente fundado su dueño se permitía llevar los datos
de la empresa en cuadernos, sin embargo al ver el aumento en las ganancias, estos
recursos no le han sido suficientes y últimamente han propiciado una serie de desórdenes
que han dado al traste con un buen servicio al cliente.
El hostal Moon Light necesita implementar un sistema que le permita ejercer un mayor
control sobre clientes, las habitaciones, asistencia de los empleados. Es por este motivo
que se hace viable la creación de un sistema de información que permitiría ejercer el
control que el dueño requiere.
Solución propuesta
Creación de un modelo de base de datos relacional que gestione los aspectos de los
cuales se carece control en la empresa. Este sistema debe proporcionar los medios para
el manejo de la información del hostal de manera correcta y ordenada.
Descripción de Requerimientos
El hostal Moon Light necesita implantar un sistema que le permita ejercer un mayor
control sobre clientes, las habitaciones disponibles, el stock del almacén; todo lo anterior
orientado al área de producción de la misma.
Con el análisis de los datos suministrado por los instrumentos de recopilación utilizados
para el estudio de los procesos realizados en el área de producción del Hostal fue posible
establecer cuáles son las fuentes de información necesarias que deben ser cubiertas por
este modelo.
El hostal realiza negocios con varios proveedores los cuales pueden ser particulares o
empresas el proceso de facturación y pago de los productos adquiridos es realizado en
forma independiente por el dueño del hostal por medio de un sistema que tiene un
rendimiento aceptable en este momento y son ajenos a este modelo de datos. Los
clientes del hostal realizan la cantidad de pedidos a recepción q deseen, los límites de
tiempo con respecto a la entrega son impuestos por el tipo de pedido y la cantidad de
trabajo existente en el hostal.
Los servicios que solicita el cliente a recepción con más frecuencia son:
Servicio de taxi
Servicio de comida rápida
SUPUESTOS
Supuesto 1:
Para registrar a un empleado el administrador del hotel emplea un código(DNI) para
cada uno de los empleados del hotel ,además de su nombre, número de teléfono y las
horas trabajadas.
Supuesto 2:
Un jefe es responsable de dirigir a otros empleados.
Supuesto 3:
El proceso del alquiler de una habitación es de acuerdo al tipo de habitación que deseen
y por qué tiempo.
Supuesto 4:
Para registrar a cada cliente el hostal almacena el DNI de cada cliente y el número de
habitación que se les otorgo.
Supuesto 5:
El hostal cuenta con diferentes tipos de habitaciones, a cada una ellas les pertenece un
número único asignado de acuerdo a su ubicación.
Supuesto 6:
Las formas de pago para acceder al servicio de alquiler de habitaciones se pueden dar de
muchas maneras para facilidad del cliente, se aceptan todo tipo de tarjetas o efectivo.
DETALLES DE ENTIDADES, ATRIBUTOS Y RELACIONES
Empleado Código *
Nombre Empleado
O Teléfono
H. de Trabajo
Relación Cliente
Relación Habitación
Relación hostal
Relación cochera
Relación cliente
PROCEDURE EXEC_STATEMENT (
current_step NUMBER,
sql_statement VARCHAR2,
comments VARCHAR2) IS
err_num NUMBER;
err_msg VARCHAR2(250);
out_msg VARCHAR2(1000);
raise_again boolean;
error_fl boolean;
st_time VARCHAR2(25);
end_time VARCHAR2(25);
BEGIN
END;
PROCEDURE INIT_STEPS(
start_step_in NUMBER,
stop_step_in NUMBER,
log_option_in NUMBER) IS
BEGIN
start_step := start_step_in;
stop_step := stop_step_in;
log_options := log_option_in;
END;
BEGIN
start_step :=0;
stop_step :=0;
-- dynamic settings - depends on log options set in Oracle SQL Developer Modeler
log_options := 2;
-- dynamic settings - depends on list of errors to skip set in Oracle SQL Developer Modeler
END adv_scripting;
-- static part
define start_in = 0;
define stop_in = 0;
define log_option_in = 1;
SET SERVEROUTPUT ON
begin
DBMS_OUTPUT.ENABLE(500000);
end;
/
execute adv_scripting.INIT_STEPS(&start_in,&stop_in,&log_option_in)
spool &log_file
-- Step10
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
CREATE TABLE CLIENTE
(
D.N.I CHAR (8) NOT NULL ,
nombre VARCHAR2 ,
nombre1 VARCHAR2 (60) NOT NULL
)
';
comments := 'CREATE TABLE CLIENTE ';
adv_scripting.EXEC_STATEMENT(10,statement,comments);
end;
/
-- end Step10
-- Step20
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE CLIENTE
ADD CONSTRAINT CLIENTE_PK PRIMARY KEY ( D.N.I )
';
comments := 'ALTER TABLE CLIENTE
ADD CONSTRAINT CLIENTE_PK ';
adv_scripting.EXEC_STATEMENT(20,statement,comments);
end;
/
-- end Step20
-- Step30
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
CREATE TABLE COCHERA
(
n°_de_estacionamiento CHAR NOT NULL ,
D.N.I CHAR (8) NOT NULL
)
';
comments := 'CREATE TABLE COCHERA ';
adv_scripting.EXEC_STATEMENT(30,statement,comments);
end;
/
-- end Step30
-- Step40
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
CREATE UNIQUE INDEX COCHERA__IDX ON COCHERA
(
D.N.I ASC
)
';
comments := 'CREATE UNIQUE INDEX COCHERA__IDX ';
adv_scripting.EXEC_STATEMENT(40,statement,comments);
end;
/
-- end Step40
-- Step50
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE COCHERA
ADD CONSTRAINT COCHERA_PK PRIMARY KEY ( n°_de_estacionamiento )
';
comments := 'ALTER TABLE COCHERA
ADD CONSTRAINT COCHERA_PK ';
adv_scripting.EXEC_STATEMENT(50,statement,comments);
end;
/
-- end Step50
-- Step60
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
CREATE TABLE EMPLEADO
(
código CHAR NOT NULL ,
nombre VARCHAR2 NOT NULL ,
teléfono CHAR (8) ,
h."_de_trabajo" CHAR NOT NULL ,
código1 CHAR NOT NULL ,
nombre1 VARCHAR2 (60) NOT NULL ,
nombre11 VARCHAR2 (60) NOT NULL
)
';
comments := 'CREATE TABLE EMPLEADO ';
adv_scripting.EXEC_STATEMENT(60,statement,comments);
end;
/
-- end Step60
-- Step70
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
CREATE UNIQUE INDEX EMPLEADO__IDX ON EMPLEADO
(
código1 ASC ,
nombre11 ASC
)
';
comments := 'CREATE UNIQUE INDEX EMPLEADO__IDX ';
adv_scripting.EXEC_STATEMENT(70,statement,comments);
end;
/
-- end Step70
-- Step80
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE EMPLEADO
ADD CONSTRAINT EMPLEADO_PK PRIMARY KEY ( código, nombre1 )
';
comments := 'ALTER TABLE EMPLEADO
ADD CONSTRAINT EMPLEADO_PK ';
adv_scripting.EXEC_STATEMENT(80,statement,comments);
end;
/
-- end Step80
-- Step90
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
CREATE TABLE FORMA_DE_PAGO
(
"código-forma" INTEGER NOT NULL ,
monto FLOAT NOT NULL ,
D.N.I1 CHAR (8) NOT NULL ,
D.N.I CHAR (8) NOT NULL
)
';
comments := 'CREATE TABLE FORMA_DE_PAGO ';
adv_scripting.EXEC_STATEMENT(90,statement,comments);
end;
/
-- end Step90
-- Step100
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE FORMA_DE_PAGO
ADD CONSTRAINT FORMA_DE_PAGO_PK PRIMARY KEY ( "código-forma", D.N.I1 )
';
comments := 'ALTER TABLE FORMA_DE_PAGO
ADD CONSTRAINT FORMA_DE_PAGO_PK ';
adv_scripting.EXEC_STATEMENT(100,statement,comments);
end;
/
-- end Step100
-- Step110
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
CREATE TABLE HABITACIÓN
(
n°_de_habitación CHAR NOT NULL ,
D.N.I CHAR (8) NOT NULL ,
nombre VARCHAR2 (60) NOT NULL ,
Precio FLOAT (2) NOT NULL
)
';
comments := 'CREATE TABLE HABITACIÓN ';
adv_scripting.EXEC_STATEMENT(110,statement,comments);
end;
/
-- end Step110
-- Step120
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE HABITACIÓN
ADD CONSTRAINT HABITACIÓN_PK PRIMARY KEY ( n°_de_habitación, nombre )
';
comments := 'ALTER TABLE HABITACIÓN
ADD CONSTRAINT HABITACIÓN_PK ';
adv_scripting.EXEC_STATEMENT(120,statement,comments);
end;
/
-- end Step120
-- Step130
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
CREATE TABLE HOSTAL
(
nombre VARCHAR2 (60) NOT NULL
)
';
comments := 'CREATE TABLE HOSTAL ';
adv_scripting.EXEC_STATEMENT(130,statement,comments);
end;
/
-- end Step130
-- Step140
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE HOSTAL
ADD CONSTRAINT HOSTAL_PK PRIMARY KEY ( nombre )
';
comments := 'ALTER TABLE HOSTAL
ADD CONSTRAINT HOSTAL_PK ';
adv_scripting.EXEC_STATEMENT(140,statement,comments);
end;
/
-- end Step140
-- Step150
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
CREATE TABLE NORMAL
(
n°_de_habitación CHAR NOT NULL ,
valor INTEGER NOT NULL ,
nombre VARCHAR2 (60) NOT NULL
)
';
comments := 'CREATE TABLE NORMAL ';
adv_scripting.EXEC_STATEMENT(150,statement,comments);
end;
/
-- end Step150
-- Step160
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE NORMAL
ADD CONSTRAINT NORMAL_PK PRIMARY KEY ( valor )
';
comments := 'ALTER TABLE NORMAL
ADD CONSTRAINT NORMAL_PK ';
adv_scripting.EXEC_STATEMENT(160,statement,comments);
end;
/
-- end Step160
-- Step170
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
CREATE TABLE SIMPLE
(
n°_de_habitación CHAR NOT NULL ,
código INTEGER NOT NULL ,
nombre VARCHAR2 (60) NOT NULL
)
';
comments := 'CREATE TABLE SIMPLE ';
adv_scripting.EXEC_STATEMENT(170,statement,comments);
end;
/
-- end Step170
-- Step180
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE SIMPLE
ADD CONSTRAINT SIMPLE_PK PRIMARY KEY ( código )
';
comments := 'ALTER TABLE SIMPLE
ADD CONSTRAINT SIMPLE_PK ';
adv_scripting.EXEC_STATEMENT(180,statement,comments);
end;
/
-- end Step180
-- Step190
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
CREATE TABLE VIP
(
id INTEGER NOT NULL ,
n°_de_habitación CHAR NOT NULL ,
nombre VARCHAR2 (60) NOT NULL
)
';
comments := 'CREATE TABLE VIP ';
adv_scripting.EXEC_STATEMENT(190,statement,comments);
end;
/
-- end Step190
-- Step200
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE VIP
ADD CONSTRAINT VIP_PK PRIMARY KEY ( id )
';
comments := 'ALTER TABLE VIP
ADD CONSTRAINT VIP_PK ';
adv_scripting.EXEC_STATEMENT(200,statement,comments);
end;
/
-- end Step200
-- Step210
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE NORMAL
ADD CONSTRAINT Relation_10 FOREIGN KEY
(
n°_de_habitación,
nombre
)
REFERENCES HABITACIÓN
(
n°_de_habitación,
nombre
)
ON DELETE CASCADE
';
comments := 'ALTER TABLE NORMAL
ADD CONSTRAINT Relation_10 FOREIGN KEY ';
adv_scripting.EXEC_STATEMENT(210,statement,comments);
end;
/
-- end Step210
-- Step220
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE CLIENTE
ADD CONSTRAINT Relation_10 FOREIGN KEY
(
nombre1
)
REFERENCES HOSTAL
(
nombre
)
';
comments := 'ALTER TABLE CLIENTE
ADD CONSTRAINT Relation_10 FOREIGN KEY ';
adv_scripting.EXEC_STATEMENT(220,statement,comments);
end;
/
-- end Step220
-- Step230
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE FORMA_DE_PAGO
ADD CONSTRAINT Relation_13 FOREIGN KEY
(
D.N.I1
)
REFERENCES CLIENTE
(
D.N.I
)
ON DELETE CASCADE
';
comments := 'ALTER TABLE FORMA_DE_PAGO
ADD CONSTRAINT Relation_13 FOREIGN KEY ';
adv_scripting.EXEC_STATEMENT(230,statement,comments);
end;
/
-- end Step230
-- Step240
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE EMPLEADO
ADD CONSTRAINT Relation_2 FOREIGN KEY
(
código1,
nombre11
)
REFERENCES EMPLEADO
(
código,
nombre1
)
ON DELETE CASCADE
';
comments := 'ALTER TABLE EMPLEADO
ADD CONSTRAINT Relation_2 FOREIGN KEY ';
adv_scripting.EXEC_STATEMENT(240,statement,comments);
end;
/
-- end Step240
-- Step250
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE EMPLEADO
ADD CONSTRAINT Relation_4 FOREIGN KEY
(
nombre1
)
REFERENCES HOSTAL
(
nombre
)
ON DELETE CASCADE
';
comments := 'ALTER TABLE EMPLEADO
ADD CONSTRAINT Relation_4 FOREIGN KEY ';
adv_scripting.EXEC_STATEMENT(250,statement,comments);
end;
/
-- end Step250
-- Step260
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE COCHERA
ADD CONSTRAINT Relation_5 FOREIGN KEY
(
D.N.I
)
REFERENCES CLIENTE
(
D.N.I
)
';
comments := 'ALTER TABLE COCHERA
ADD CONSTRAINT Relation_5 FOREIGN KEY ';
adv_scripting.EXEC_STATEMENT(260,statement,comments);
end;
/
-- end Step260
-- Step270
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE VIP
ADD CONSTRAINT Relation_8 FOREIGN KEY
(
n°_de_habitación,
nombre
)
REFERENCES HABITACIÓN
(
n°_de_habitación,
nombre
)
ON DELETE CASCADE
';
comments := 'ALTER TABLE VIP
ADD CONSTRAINT Relation_8 FOREIGN KEY ';
adv_scripting.EXEC_STATEMENT(270,statement,comments);
end;
/
-- end Step270
-- Step280
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE HABITACIÓN
ADD CONSTRAINT Relation_8 FOREIGN KEY
(
nombre
)
REFERENCES HOSTAL
(
nombre
)
ON DELETE CASCADE
';
comments := 'ALTER TABLE HABITACIÓN
ADD CONSTRAINT Relation_8 FOREIGN KEY ';
adv_scripting.EXEC_STATEMENT(280,statement,comments);
end;
/
-- end Step280
-- Step290
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE SIMPLE
ADD CONSTRAINT Relation_9 FOREIGN KEY
(
n°_de_habitación,
nombre
)
REFERENCES HABITACIÓN
(
n°_de_habitación,
nombre
)
ON DELETE CASCADE
';
comments := 'ALTER TABLE SIMPLE
ADD CONSTRAINT Relation_9 FOREIGN KEY ';
adv_scripting.EXEC_STATEMENT(290,statement,comments);
end;
/
-- end Step290
-- Step300
declare
statement varchar2(32000);
comments varchar2(200);
begin
statement :=
'
ALTER TABLE HABITACIÓN
ADD CONSTRAINT Relation_9 FOREIGN KEY
(
D.N.I
)
REFERENCES CLIENTE
(
D.N.I
)
';
comments := 'ALTER TABLE HABITACIÓN
ADD CONSTRAINT Relation_9 FOREIGN KEY ';
adv_scripting.EXEC_STATEMENT(300,statement,comments);
end;
/
-- end Step300
spool off
set termout on
set verify on
set feedback on