Está en la página 1de 63

FACULTAD DE INGENIERA CIVIL, DE SISTEMAS Y ARQUITECTURA

ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS ASIGNATURA : TALLER DE IMPLEMENTACION Y ADMINISTRACION DE SISTEMAS DE BASE DE DATOS DOCENTE : ING. RIOS CAMPOS PILAR INTEGRANTES : HERRERA REQUEJO EBER MESTANZA MENDOZA JOSE REVOREDO JUAREZ DARLING SIGUEAS NUNURA MARTIN SILVA LOPEZ DENYS

EMPRESA

: HOTEL KALU

LAMBAYEQUE, NOVIEMBRE DEL 2012

Hotel kalu

Hotel KALU es una empresa nueva con varios aos de experiencia en el mercado hotelero. Este hotel est estratgicamente ubicado en una de las zonas ms cntricas de Chiclayo, especficamente en la esquina en la Av. Pedro Ruiz N 1038 - Chiclayo. Sus acogedoras y confortantes habitaciones hacen del hotel KALU la mejor eleccin, por su ambientacin, comodidad y tranquilidad y servicio personalizado. 1. Introduccin. La era de la tecnologa y la informacin, en la cual nos encontramos inmersos, obliga a las empresas a sacar el mayor provecho de sus recursos tecnolgicos. En este sentido, el diseo y modelaje de Bases de Datos cumple un papel muy importante en la tarea del manejo de informacin, brindndole a los usuarios y dueos de la informacin la capacidad de tener buena informacin en el momento preciso para la toma de decisiones. Este trabajo, tiene como objetivo, tal y como se ver durante su desarrollo, recabar la informacin necesaria para elaborar un modelo de base de datos relacional que le permita al hotel KALU manejar los datos relacionados con clientes, reservas y alquileres de habitaciones, servicios y artculos de manera confiable. Para ello, se realizar un anlisis de requerimientos de informacin, el cual servir como base para el desarrollo de un modelo conceptual. Este modelo ser llevado al proceso de Normalizacin para pasar luego a un modelo lgico que servir como materia prima para la posterior implementacin del modelo fsico de

datos, todo esto apegado a las necesidades de la empresa en cuanto a manejo de informacin y los datos. 2. Aspectos Generales de la Empresa

a. Descripcin de la Empresa o giro del negocio Nuestra nica opcin es brindar una estada placentera, para poder satisfacer todas las necesidades del cliente.

Contamos con 31 habitaciones completamente equipadas, pensadas y diseadas para una estada corta o prolongada. Cuidando cada detalle para que su permanencia sea placentera y confortable.

Somos una empresa de la regin que cuenta con servicios como: servicio al cuarto, cable, y diversos servicios que cumplirn con las expectativas del cliente. No olvidemos que hacemos reservaciones hasta con dos semanas de anticipacin.

En la actualidad no contamos con un software, que nos facilite el manejo del control de las actividades, toda la labor se documenta, con riesgos a prdidas de informacin y prdidas para la empresa. b. Visin Ser reconocidos como el mejor hotel de la costa norte del Per para ejecutivos y personas de negocios, lder por su excelente servicio, gracias a su cultura organizacional de excelencia y alto desempeo para con nuestros huspedes. c. Misin Hacer de nuestra profesin un estilo de vida, de la amabilidad una filosofa, de nuestros huspedes parte de nuestra familia y mantener nuestra tecnologa siempre a la vanguardia. En resumen somos amantes de los que asemos y nos gua la pasin por el servicio de excelencia.

d. Objetivos Los objetivos de este proyecto son implementar las funciones bsicas para la creacin, mantenimiento y consulta de reservas, alquileres de habitaciones y servicios en una base de datos. El sistema est pensado para responder a las necesidades propias de un hotel y aspira a recoger los datos de la manera ms realista posible, desde los suplementos utilizados en las tarifas hoteleras, hasta las formas de pago del cliente. Adems se tiene en cuenta la usabilidad del sistema, para poder crear un productolo ms amigable posible sin dejar de lado detalles de diseo. 3. Generalidad del Proyecto a. Situacin Problemtica: Debido a la falta de un programa de administracin Sistematizada en el "Hotel KALU", no se le brinda la atencin adecuada a los clientes, puesto que hay demora en la asignacin de habitaciones, a la hora de facturar los servicios consumidos durante su estada, y en la bsqueda de habitaciones a la hora de realizar la reserva. Tampoco existe una base de datos para almacenar los datos de los huspedes, empleados, servicios e inventarios.

Es necesario crear un sistema de gestin administrativa para el Hotel que le KALU permita brindar un servicio oportuno y eficiente al cliente, desde la hora que realiza la reserva, hasta su salida del hotel. Esto se logra debido a que desde el momento que el cliente llama para realizar la reserva el usuario puede consultar las habitaciones disponibles y asignarlas en el menor tiempo posible y sin errores de asignar 2 o ms veces la misma habitacin. Durante la estada del cliente, ste puede tener mltiples consumos que sern cargados a su cuenta mediante este software hotelero, que en el momento de salida del hotel, se generar una factura en detalle de sus gastos. Tambin agilizar el momento del registro puesto que sus datos ya estn almacenados en el sistema mediante un cdigo que es su identificacin personal. El registro de los huspedes en el hotel se realiza sin mayor problema pero el sistema actual no genera las consultas y reportes adecuados sobre este registro, el problema principal se da en los procesos de facturacin ya que es en estos procesos en donde se consume la mayor parte de tiempo y recursos. Entre las deficiencias que ha manifestado la administracin se mencionan los siguientes: - Los reportes carecen de informacin requerida. - Las consultas generadas no son las ms apropiadas. - No realiza la facturacin. - No hay una funcin especfica para obtener el historial por cliente. - No se pueden hacer reservaciones.

b. Objetivos i. Objetivo General Proponer un Modelo de Gestin Hotelero para alcanzar la eficacia organizacional, en el Hotel KALU de la ciudad de Chiclayo. ii. Objetivo Especficos:

Por eso nuestro proyecto busca mejorar la calidad de servicio, al sistematizar los datos y procesarlos de una forma efectiva. Determinar en qu medida la integracin adecuada de Recursos Humanos contribuye a mejorar el desempeo del mismo, en el Hotel KALU de la ciudad de Chiclayo. Personal encargado de la manipulacin del sistema: El personal se ver favorecido por la reduccin de operaciones manuales y de una mayor eficiencia en los servicios brindados. Los huspedes: podrn ser atendidos de una mejor manera, ya que se llevar un buen control de la informacin que de ellos se maneja, sern atendidos conmayor prontitud, se beneficiarn de un buen manejo en las reservaciones.

4.

Desarrollo de la Solucin propuesta a. Descripcin Funcional del proceso o procesos objeto de estudio Descripcin General del modelo de Base de Datos

La base de datos consta con una entidad Usuario que es el cual posee una cuenta de perfil que es otra entidad que se relaciona con el usuario, el usuario es un empleado por lo cual tiene relacin con esta entidad, la cual tiene almacenada los datos personales de cada empleado como su cdigo de empleado, su nombre y apellidos, dni, cargo, telfono y email. Unos de las entidades principales de este modelo es la entidad habitacin la cual cuenta con una descripcin general como es el nmero de habitacin, piso y el costo de la habitacin, por lo que adems se relaciona con la entidad tipo_habitacin la cual almacena una descripcin detallada de cada habitacin y el estado en el que esta se encuentra. Otro elemento principal de este modelo es la entidad cliente el cual posee los datos personales de cada cliente, este cliente puede obtener una habitacin de dos formas: Una es a travs de un alquiler que es de forma instantnea el cual posee un cdigo de alquiler, la fecha, y la hora del alquiler y va a generar un detalle_alquiler el cual relaciona el cliente con la habitacin. La otra forma es por medio de una reserva va telefnica el cual va a generar un detalle_reservaque almacena el cdigo de reserva, fecha de reserva y de alquilerel cual tambin relaciona al cliente con la habitacin.

Adems de el servicio de habitaciones, el hotel cuenta con otros servicios diferentes los cuales estn almacenados en la entidad servicio, el cual es brindado por un empleado por lo que se relaciona con esta entidad. Estos servicios se brindan en base a productos por lo que tambin existe una entidad producto que se relaciona con el servicio. Y por ultimo esta la entidad pago que es la que posee como atributos el cdigo de pago, el tipo de pago, la fecha de pago y la hora de pago, estos pagos van a ser efectuados a los servicios o al detalle de alquiler. b. Anlisis de requerimientos - Controlar la cartera de clientes del hotel. - Controlar detalladamente los datos del hotel como su ubicacin, las habitaciones con que cuenta, los precios, las caractersticas de hotel. - Buscar de los servicios que prefiere los clientes. - Registrar todas las incidencias que corresponde al servicio, como son las reservaciones, establecer los precios, compras y stock de productos. - Controlar todos los procesos y documentos que generan los reportes de un cliente, as como el dinero recaudado por esta actividad. PROCESOS: PROCESO 1: REGISTRO DE LOS CLIENTES DESCRIPCIN: Determinamos como clientes a aquellas personas naturales como tambin jurdicas (empresas) las cuales realizan las reservaciones de las habitaciones, tomamos este criterio ya que no siempre las personas que se hospedan siguientes en el hotel se consideran como los clientes a los cuales se les va a realizar el cobro debido. Para ello se necesita registrar de los clientes los datos: Id de cliente Apellidos Nombres Tipo_documento Numero_doc Telfono Email

PROCESO 2: RESERVACION DE HABITACIONES DESCRIPCIN: De las reservaciones que realizan nuestros clientes necesitamos registrar: Cdigo o numero de reservacin La fecha en la cual se realizo la reservacin La fecha de inicio de la reservacin Debemos tener en cuenta adems que una reservacin debe ser asignada para un cliente y que un cliente puede realizar una o ms reservaciones. PROCESO 3: REGISTRO DE HABITACIONES DESCRIPCIN: De las habitaciones se necesita registrar la siguiente informacin: Asignarle un cdigo o un nmero a la habitacin Registrar el piso en el que se encuentra la habitacin Registrar el estado de la habitacin Debemos tener en cuenta adems que una habitacin puede estar registrada en una o ms reservaciones y que una reservacin puede tener asignada una o ms habitaciones, generando as un detalle de reserva donde registraremos todas las caractersticas de la reserva como el tipo de habitacin hecha para esa reserva PROCESO 4: REGISTRO DE EMPLEADOS DESCRIPCIN: Necesitamos contar con la siguiente informacin respecto de los empleados: Cdigo de empleado Apellidos nombres DNI Cargo Telfono E-mail. Adems debemos determinar que cada empleado debe tener un usuario y un permiso respectivo para el ingreso al sistema.

REQUERIMIENTOS:
NOMBRE REGISTRO REGISTRAR RESERVA REGISTRAR CLIENTE REGISTRAR EMPLEADO REGISTRAR PERFIL REGISTRAR HABITACIN REGISTRAR ALQUILER REGISTRAR USUARIO REGISTRAR FACTURACION REGISTRAR SERVICIO MANTENIMIENTO MODIFICAR RESERVA ELIMINAR RESERVA MODIFICAR CLIENTE ELIMINAR CLIENTE MODIFICAR EMPLEADO ELIMINAR EMPLEADO MODIFICAR HABITACIN ELIMINAR HABITACIN MODIFICAR PERFILES ELIMINAR PERFILES

MODIFICAR ALQUILER MODIFICAR USUARIO ELIMINAR USUARIO MODIFICAR SERVICIO ELIMINAR SERVICIO MODIFICAR FACTURACION ELIMINAR FACTURACION GENERACIN DE DOCUMENTOS CONSULTAR RESERVAS AN NO TOMADAS CONSULTAR RESERVAS ACTIVAS CONSULTAR CLIENTES GENERAR REPORTE DE CLIENTES CONSULTAR EMPLEADOS GENERAR REPORTE DE EMPLEADOS CONSULTAR HABITACIONES DISPONIBLES CONSULTAR SERVICIOS GENERAR REPORTE DE SERVICIOS OFRECIDOS GENERAR FACTURACION IMPRIMIR FACTURACION

c.

Modelo Entidad Relacin

ENTIDAD PERFIL

ATRIBUTOS * id_perfil Nombre Estado *id_usuario Login Password

RELACIONADA CON: Usuario

USUARIO

Perfil Empleado

EMPLEADO

*id_empleado Apellidos Nombres Dni Cargo Telfono Email *id_cliente Apellidos Nombres Tipo_documento Numero_doc Telfono Email *id_reserva Fecha_reserva Fecha_llegada *id_alquiler Fecha_llegada Fecha_salida *id_servicio Fecha

Usuario Servicio

CLIENTE

Reserva Alquiler Servicio

RESERVA

Cliente Det_reserva

ALQUILER

Cliente Det_alquiler Cliente Empleado

SERVICIO

Costo_total COMPROBANTE DE PAGO *id_comprobante Tipo_comprobante *id_TipoHab Descripcin costo *id_habitacion Numero_hab Piso Estado *id_pago Tipo_pago Fecha Costo_total *id_det_res Numero_das *id_det_alq Numero_dias Costo_alquiler *id_detalle_servicio Fecha Costo_servicio

Producto Pago Pago

TIPO_HABITACION

Habitacin

HABITACION

Tipo_habitacin Det_reserva Det_alquiler

PAGO

Det_alquiler Servicio

DETALLE_RESERVA

Reserva Habitacin Alquiler Habitacin Servicio Cliente pago

DETALLE_ALQUILER

DETALLE_SERVICIO

*=Identificador Principal (PK) Descripcin de cada entidad Entidad perfil: Esta entidad es la que verifica los permisos que cada usuario tiene como empleado, la entidad perfil cuenta con los siguientes atributos: Id_perfil Nombre Estado

Esta relacionado con la entidad usuario ya que el usuario verifica su perfil para ver que responsabilidades tiene que desempear. Entidad Usuario: Esta entidad es una cuenta que posee cada trabajador del hotel, esta entidad cuenta con los siguientes atributos: id_usuario Login Password Esta relacionada con la entidad empleado y con la entidad perfil. Entidad Empleado: Esta entidad es la que almacena los datos personales del empleado del hotel con el fin de administrar estos datos, cuenta con los siguientes atributos: id_empleado Apellidos Nombres Dni Cargo Telfono Email Esta entidad esta relacionada con la entidad usuario ya que un empleado puede tener una o mas cuentas de usuario, adems se relaciona con la entidad servicio ya que un empleado puede brindar uno o mas servicios, a la ves que un servicio solo puede ser brindado por un nico empelado. Entidad Cliente: Esta entidad es la que almacena los datos personales de cada cliente que tiene el hotel esta entidad cuenta con los siguientes atributos: *id_cliente Apellidos Nombres Tipo_documento Numero_doc Telfono Email Esta entidad se relaciona con otras tres entidades ya que el cliente tiene dos maneras de obtener una habitacin una es a travs de la entidad alquiler por lo que un cliente puede solicitar uno o mas alquileres, pero un alquiler puede ser solicitado por un solo cliente, la

otra forma es a travs de la entidad reserva la forma de relacin es la misma de la hecha con la entidad alquiler de uno a muchos. Adems el cliente puede realizar otro pedidos de servicios que se brindan en el hotel por lo cual se relaciona con la entidad servicio, un cliente puede solicitar uno o mas servicio pero un servicio solo puedes ser brindado para un solo cliente. Entidad Reserva: Esta entidad es la que se encarga de almacenar los datos de una reservacin que hace un cliente a travs de va telefnica, esta entidad cuenta con los siguientes atributos: id_reserva Fecha_reserva Fecha_llegada Esta entidad se relaciona con la entidad cliente, ya que un cliente puede realizar una o mas reservas mientras que una reserva es realizada nicamente por un cliente. Adems se relaciona con la entidad det_reserva ya que al desarrollar una reserva se genera un detalle de esta reserva. Entidad Alquiler: Esta identidad se encarga de almacenar los datos de un alquiler que haga un cliente de va directa, esta entidad cuenta con los siguientes atributos. id_alquiler Fecha_llegada Fech_salida Esta entidad se relaciona con la entidad cliente, ya que un cliente puede realizar uno o mas alquileres mientras que un alquiler es realizada nicamente por un cliente. Adems se relaciona con la entidad det_alquiler ya que al desarrollar un alquiler se genera un detalle de este alquiler. Entidad Det_Reserva: Esta identidad es generada por una reserva hecha por un cliente es una resolucin de un caso de muchos a muchos, esta entidad consta de los siguientes atributos: id_det_res Numero_das Esta entidad se relaciona con la entidad reserva ya que al desarrollar un reserva se genera un detalle de esta reserva. Adems se relaciona con la entidad habitacin, ya que un det_reserva puede tener uno o ms habitaciones mientras que una habitacin solo puede estar en un det_reserva.

Entidad Det_Alquiler: Esta identidad es generada por un alquiler hecho por un cliente es una resolucin de un caso de muchos a muchos, esta entidad consta de los siguientes atributos: id_det_alq Numero_dias Costo_alquiler Esta entidad se relaciona con la entidad alquiler ya que al desarrollar un alquiler se genera un detalle de este alquiler. Adems se relaciona con la entidad habitacin, ya que un det_Alquiler puede tener uno o ms habitaciones mientras que una habitacin solo puede estar en un det_Alquiler. Y por ultimo se relaciona con la entidad pago, que es el monto pagado por el servicio del cuarto. Entidad Habitacin: Esta identidad se encarga de almacenar los datos generales de una habitacin, esta entidad cuenta con los siguientes atributos. id_habitacion Numero_hab Piso Estado Esta entidad se relaciona con la entidad tipo_habitacin en la cual se desarrolla una descripcin mas detallada de la habitacin, una habitacin tiene un solo tipo_habitacin, mientras que un tipo_habitacin puede ser parte de varias habitaciones. Adems se relaciona con la entidad habitacin, ya que un det_reserva puede tener uno o ms habitaciones mientras que una habitacin solo puede estar en un det_reserva. Y por ultimo se relaciona con la entidad habitacin, ya que un det_Alquiler puede tener uno o ms habitaciones mientras que una habitacin solo puede estar en un det_Alquiler. Entidad Servicio: Esta entidad se encarga de almacenar los datos de los diversos servicios que se brindan en el hotel por un determinado empleado, sus atributos son: id_servicio Fecha Costo_serv Esta entidad se relaciona con la entidad cliente ya que un cliente puede solicitar una o ms servicios, pero un servicio solo puede ser brindado a un cliente. Adems se relaciona con la entidad empleado, ya que un empleado debe realizar uno o ms servicios pero un servicio solo puede ser realizado por un empleado.

Otra entidad con la que se relaciona es con la entidad producto, ya que un producto puede estar presente en uno o ms servicios, mientras un servicio debe tener un producto. Y por ultimo se relaciona con la entidad pago, ya que un servicio debe estar en un pago, y un pago puede tener uno o ms servicios. Entidad Pago: Esta entidad se encarga de almacenar los datos de los pagos que realiza un cliente en el hotel por los servicios brindados, sus atributos son: id_pago Tipo_pago Fecha Costo_total Esta entidad se relaciona con la entidad servicios, ya que un servicio debe estar en un pago, y un pago puede tener uno o ms servicios. Y por ultimo se relaciona con la entidad det_alquiler, que es el monto pagado por el servicio del cuarto.

MODELO LGICO:

MODELO FSICO:

CREACION DE TABLAS:
CREATE TABLE ALQUILER ( id_alquiler NUMBER NOT NULL , fecha_llegada DATE NOT NULL , fecha_salida DATE NOT NULL , id_cliente NUMBER NOT NULL , id_det_res NUMBER NULL ) ; CREATE UNIQUE INDEX ALQUILER__IDX ON ALQUILER ( id_det_res ASC ) ; ALTER TABLE ALQUILER ADD CONSTRAINT "ALQUILER PK" PRIMARY KEY ( id_alquiler ) ; CREATE TABLE CLIENTE ( id_cliente NUMBER NOT NULL , apellidos VARCHAR2 (25) NOT NULL , nombres VARCHAR2 (25) NOT NULL , tipo_doc VARCHAR2 (5) NOT NULL , numero_doc VARCHAR2 (12) NOT NULL , telefono VARCHAR2 (9) , email VARCHAR2 (20) ) ; ALTER TABLE CLIENTE ADD CONSTRAINT "CLIENTE PK" PRIMARY KEY ( id_cliente ) ; CREATE TABLE COMPROBANTE_PAGO ( id_comprobante NUMBER NOT NULL , tipo_comprobante VARCHAR2 (15) NOT NULL , id_pago NUMBER NOT NULL )

; CREATE UNIQUE INDEX COMPROBANTE_PAGO__IDX ON COMPROBANTE_PAGO ( id_comprobante ASC ) ; ALTER TABLE COMPROBANTE_PAGO ADD CONSTRAINT "COMPROBANTE_PAGO PK" PRIMARY KEY ( id_comprobante ) ;

CREATE TABLE DETALLE_ALQUILER ( id_det_alq NUMBER NOT NULL , num_dias NUMBER NOT NULL , costo_alquiler NUMBER NOT NULL , id_alquiler NUMBER NOT NULL , id_habitacion NUMBER NOT NULL ) ; CREATE UNIQUE INDEX DETALLE_ALQUILER__IDX ON DETALLE_ALQUILER ( id_det_alq ASC ) ; ALTER TABLE DETALLE_ALQUILER ADD CONSTRAINT "DETALLE_ALQUILER PK" PRIMARY KEY ( id_det_alq ) ; CREATE TABLE DETALLE_RESERVA ( id_det_res NUMBER NOT NULL , numero_dias NUMBER NOT NULL , id_reserva NUMBER NOT NULL , id_habitacion NUMBER NOT NULL ) ; CREATE UNIQUE INDEX DETALLE_RESERVA__IDX ON DETALLE_RESERVA

( id_det_res ASC ) ; ALTER TABLE DETALLE_RESERVA ADD CONSTRAINT "DETALLE_RESERVA PK" PRIMARY KEY ( id_det_res ) ; CREATE TABLE DETALLE_SERVICIO ( id_det_servicio NUMBER NOT NULL , fecha DATE NOT NULL , costo_total NUMBER NOT NULL , id_servicio NUMBER NOT NULL , id_cliente NUMBER NOT NULL ) ; CREATE UNIQUE INDEX DETALLE_SERVICIO__IDX ON DETALLE_SERVICIO ( id_det_servicio ASC ) ; ALTER TABLE DETALLE_SERVICIO ADD CONSTRAINT "DETALLE_SERVICIO PK" PRIMARY KEY ( id_det_servicio ) ; CREATE TABLE EMPLEADO ( id_empleado NUMBER NOT NULL , apellidos VARCHAR2 (25) NOT NULL , nombres VARCHAR2 (25) NOT NULL , dni CHAR (8) NOT NULL , cargo VARCHAR2 (20) NOT NULL , telefono VARCHAR2 (9) , email VARCHAR2 (25) ) ; ALTER TABLE EMPLEADO ADD CONSTRAINT "EMPLEADO PK" PRIMARY KEY ( id_empleado ) ;

CREATE TABLE HABITACION ( id_habitacion NUMBER NOT NULL , num_hab NUMBER NOT NULL , piso NUMBER NOT NULL , estado CHAR (1) NOT NULL , id_tipohab NUMBER NOT NULL ); ALTER TABLE HABITACION ADD CONSTRAINT "HABITACION PK" PRIMARY KEY ( id_habitacion ) ; CREATE TABLE PAGO ( id_pago NUMBER NOT NULL , tipo_pago VARCHAR2 (10) NOT NULL , fecha DATE NOT NULL , costo_total NUMBER NOT NULL , id_det_servicio NUMBER NOT NULL , id_det_alq NUMBER NOT NULL ) ; CREATE INDEX PAGO__IDX ON PAGO ( id_pago ASC ) ; ALTER TABLE PAGO ADD CONSTRAINT PAGO_PK PRIMARY KEY ( id_pago ) ; CREATE TABLE PERFIL ( id_perfil NUMBER NOT NULL , nombre VARCHAR2 (20) NOT NULL , estado CHAR (1) NOT NULL ) ; ALTER TABLE PERFIL ADD CONSTRAINT "PERFLl PK" PRIMARY KEY ( id_perfil ) ;

CREATE TABLE RESERVA ( id_reserva NUMBER NOT NULL , fecha_reserva DATE NOT NULL , fecha_llegada DATE NOT NULL , id_cliente NUMBER NOT NULL ) ; ALTER TABLE RESERVA ADD CONSTRAINT "RESERVA PK" PRIMARY KEY ( id_reserva ) ; CREATE TABLE SERVICIO ( id_servicio NUMBER NOT NULL , nombre_serv VARCHAR2 (25) NOT NULL , costo_serv NUMBER NOT NULL , id_empleado NUMBER NOT NULL ) ; ALTER TABLE SERVICIO ADD CONSTRAINT "SERVICIO PK" PRIMARY KEY ( id_servicio ) ;

CREATE TABLE TIPO_HABITACION ( id_tipohab NUMBER NOT NULL , descripcion VARCHAR2 (15) NOT NULL , costo NUMBER NOT NULL ) ; ALTER TABLE TIPO_HABITACION ADD CONSTRAINT "TIPO_HABITACION PK" PRIMARY KEY ( id_tipohab ) ; CREATE TABLE USUARIO ( id_usuario NUMBER NOT NULL , login VARCHAR2 (15) NOT NULL , password VARCHAR2 (15) NOT NULL ,

id_perfil NUMBER NOT NULL , id_empleado NUMBER NOT NULL ) ; CREATE UNIQUE INDEX USUARIO__IDX ON USUARIO ( id_empleado ASC ) ; ALTER TABLE USUARIO ADD CONSTRAINT "USUARIO PK" PRIMARY KEY ( id_usuario ) ; ALTER TABLE PAGO ADD CONSTRAINT PAGO_DETALLE_ALQUILER_FK FOREIGN KEY ( id_det_alq ) REFERENCES DETALLE_ALQUILER ( id_det_alq ) ; ALTER TABLE PAGO ADD CONSTRAINT PAGO_DETALLE_SERVICIO_FK FOREIGN KEY ( id_det_servicio ) REFERENCES DETALLE_SERVICIO ( id_det_servicio ) ;

ALTER TABLE ALQUILER ADD CONSTRAINT Relation_10 FOREIGN KEY (

id_cliente ) REFERENCES CLIENTE ( id_cliente ) ; ALTER TABLE DETALLE_RESERVA ADD CONSTRAINT Relation_12 FOREIGN KEY ( id_reserva ) REFERENCES RESERVA ( id_reserva ) ; ALTER TABLE DETALLE_RESERVA ADD CONSTRAINT Relation_13 FOREIGN KEY ( id_habitacion ) REFERENCES HABITACION ( id_habitacion ) ; ALTER TABLE HABITACION ADD CONSTRAINT Relation_15 FOREIGN KEY ( id_tipohab ) REFERENCES TIPO_HABITACION ( id_tipohab ) ON DELETE CASCADE ;

ALTER TABLE DETALLE_ALQUILER ADD CONSTRAINT Relation_16 FOREIGN KEY ( id_alquiler ) REFERENCES ALQUILER ( id_alquiler ); ALTER TABLE DETALLE_ALQUILER ADD CONSTRAINT Relation_17 FOREIGN KEY ( id_habitacion ) REFERENCES HABITACION ( id_habitacion ) ; ALTER TABLE COMPROBANTE_PAGO ADD CONSTRAINT Relation_20 FOREIGN KEY ( id_pago ) REFERENCES PAGO ( id_pago ) ON DELETE CASCADE ; ALTER TABLE ALQUILER ADD CONSTRAINT Relation_22 FOREIGN KEY ( id_det_res ) REFERENCES DETALLE_RESERVA ( id_det_res ) ;

ALTER TABLE USUARIO ADD CONSTRAINT Relation_3 FOREIGN KEY ( id_perfil ) REFERENCES PERFIL ( id_perfil ) ON DELETE CASCADE ; ALTER TABLE USUARIO ADD CONSTRAINT Relation_5 FOREIGN KEY ( id_empleado ) REFERENCES EMPLEADO ( id_empleado ) ;

ALTER TABLE SERVICIO ADD CONSTRAINT Relation_6 FOREIGN KEY ( id_empleado ) REFERENCES EMPLEADO ( id_empleado ) ; ALTER TABLE DETALLE_SERVICIO ADD CONSTRAINT Relation_7 FOREIGN KEY ( id_servicio ) REFERENCES SERVICIO (

id_servicio ) ; ALTER TABLE DETALLE_SERVICIO ADD CONSTRAINT Relation_8 FOREIGN KEY ( id_cliente ) REFERENCES CLIENTE ( id_cliente ) ; ALTER TABLE RESERVA ADD CONSTRAINT Relation_9 FOREIGN KEY ( id_cliente ) REFERENCES CLIENTE ( id_cliente ) ; ALTER TABLE RESERVA ADD CONSTRAINT Relacion_10 check ( fecha_reserva<fecha_llegada ); ALTER TABLE ALQUILER ADD CONSTRAINT Relacion_11 check (fecha_llegada<fecha_salida);

LLENADO DE TABLAS:
Llenado de tabla empleado

Insert into empleado Values (1,'Silva','Denys','47983321','administrador','962513478','denys79') Insert into empleado Values (2,'Fernandez','Juan','32569854','recepcionista','895612345','juander12') Insert into empleado Values (3,'Fernandez','Karla','43215879','camarera','65121315','kadmi21') Insert into empleado Values (4,'Castillo','Miguel','36987451','cuartelero','978796852','mica10') Insert into empleado Values (5,'Carrasco','Gisela','47895621','camarera','963145018','gizse30') Insert into empleado Values (6,'Perez','Luis','78783212','cuartelero','966552313','perluis')

Llenado de tabla perfil

Insert into perfil Values (1, 'PER_administrador', 'H ') Insert into perfil Values (2, 'PER_recepcionista', 'H')

Llenado de tabla usuario

Insert into usuario Values (1, 'Denys', 'sistemas',1,1) Insert into usuario Values (2,'juan12','fernandez',2,2) Insert into usuario Values (3,'luisper','lucho',2,6)

Llenado de tipo_habitacion

Insert into tipo_habitacion Values (1, 'simple',25) Insert into tipo_habitacion Values (2, 'doble',45) Insert into tipo_habitacion Values (3, 'matrimonial',75)

Insert into tipo_habitacion Values (4, 'presindencial',100) Llenado de tabla habitacin

Insert into habitacion Values (1, 10,2,'H',1) Insert into habitacion Values (2, 11,2,'H',1) Insert into habitacion Values (3, 12,2,'H',2) Insert into habitacion Values (4, 13,2,'I',1) Insert into habitacion Values (5, 14,2,'H',2) Insert into habitacion Values (6, 15,2,'H',1) Insert into habitacion Values (7, 16,3,'H',1) Insert into habitacion Values (8, 17,3,'H',2) Insert into habitacion Values (9, 18,3,'I',2) Insert into habitacion Values (10, 19,3,'H',3) Insert into habitacion Values (11, 20,3,'H',4) Insert into habitacion Values (12, 21,4,'H',2)

Insert into habitacion Values (13, 22,4,'H',2) Insert into habitacion Values (14, 23,4,'H',3) Insert into habitacion Values (15, 24,4,'H',3) Insert into habitacion Values (16, 25,4,'H',4) Llenado de tabla servicio

Insert into servicio Values(1,'lavanderia',25,3) Insert into servicio Values(2,'planchado',25,5) Insert into servicio Values(3,'estacionamiento',15,4) Llenado de tabla cliente:

Insert into cliente Values (1, 'Sigueas Nunura', 'Martin', 'DNI', '47325684', '971469331', 'martin19') Insert into cliente Values (2, 'Palacios Diaz', 'Martha', 'DNI', '37355714', '989756321', 'martita') Insert into cliente Values (3, 'Condor gonzales', 'Claudia', 'DNI', '89865232', '976532141', 'claucg15') Insert into cliente Values (4, 'Cabrera Chepe', 'Oscar', 'DNI', '47965243', '979797403', 'oorlando31') Insert into cliente Values (5, 'Ferreguille S.A', 'Empresas', 'RUC', '78965454623', '986554664', 'empferreguille')

Insert into cliente Values (6, 'Zalasar Barrera', 'Flor', 'DNI', '48595684', '989955114', 'flower6') Insert into cliente Values (7, 'Guerrero Barrios', 'Eduardo', 'DNI', '4963302457', '947886298', 'esdu89') Insert into cliente Values (8, 'Asencio Puicon', 'Anais', 'DNI', '47695478', '97655781', 'anita28') Insert into cliente Values (9, 'Suysuy Ayasta', 'Ericka', 'RUC', '265587895456', '15487962', 'erickasa') Insert into cliente Values (10, 'Fernandez Maeda', 'Karla del Milagro', 'RUC','987546551173', '971469331', 'karla10')

Llenado de tabla reserva

Insert into reserva Values (1,'05/20/2012','05/22/2012',2) Insert into reserva Values (2,'06/06/2012','06/10/2012',3)

Insert into reserva Values (3,'06/15/2012','06/18/2012',4) Insert into reserva Values (4,'06/15/2012','06/18/2012',5) Insert into reserva Values (5,'06/16/2012','06/20/2012',6) Insert into reserva Values (6,'06/20/2012','06/24/2012',7) Insert into reserva Values (7,'07/17/2012','07/19/2012',8) Llenado de tabla det_reserva

Insert into detalle_reserva Values (1,5,1,1) insert into detalle_reserva values (2,4,2,3) insert into detalle_reserva Values (3,3,3,6) insert into detalle_reserva Values (4,3,4,7) insert into detalle_reserva Values (5,4,5,10) Insert into detalle_reserva Values (6,4,6,12) Insert into detalle_reserva Values (7,2,7,16)

Llenado de tabla alquiler

Insert into alquiler Values (1,'05/05/2012','05/10/2012',9,'') Insert into alquiler Values (2,'05/22/2012','05/27/2012',2,1) Insert into alquiler Values (3,'06/10/2012','06/14/2012',3,2) Insert into alquiler Values (4,'06/18/2012','06/21/2012',4,3) Insert into alquiler Values (5,'06/18/2012','06/21/2012',5,4) Insert into alquiler Values (6,'06/20/2012','06/24/2012',6,5) Insert into alquiler Values (7,'06/24/2012','06/28/2012',7,6) Insert into alquiler Values (8,'07/19/2012','07/21/2012',8,7) Insert into alquiler Values (9,'07/19/2012','07/22/2012',1,'') Insert into alquiler Values (10,'07/19/2012','07/22/2012',10,'')

Llenado de tabladet_alquiler

Insert into detalle_alquiler Values (1,5,125,1,2) insert into detalle_alquiler values (2,5,125,2,1) insert into detalle_alquiler values (3,4,180,3,3) insert into detalle_alquiler values (4,3,150,4,6)

insert into detalle_alquiler values (5,3,150,5,7) insert into detalle_alquiler values (6,4,300,6,10) insert into detalle_alquiler values (7,4,180,7,12) insert into detalle_alquiler values (8,2,200,8,16) insert into detalle_alquiler values (9,3,300,9,11) insert into detalle_alquiler values (10,3,135,10,5) Llenado de tabla det_servicio

INSERT INTO detalle_servicio VALUES (1,'05/23/2012',25,1,2) INSERT INTO detalle_servicio VALUES (2,'06/12/2012',15,3,3)

INSERT INTO detalle_servicio VALUES (3,'05/24/2012',25,2,2) INSERT INTO detalle_servicio VALUES (4,'06/22/2012',25,1,6)

INSERT INTO detalle_servicio VALUES (5,'06/23/2012',25,2,6) INSERT INTO detalle_servicio VALUES (6,'06/24/2012',15,3,7)

INSERT INTO detalle_servicio VALUES (7,'07/19/2012',25,1,8) INSERT INTO detalle_servicio VALUES (8,'05/10/2012',25,2,9) INSERT INTO detalle_servicio VALUES (9,'05/23/2012',15,3,2) INSERT INTO detalle_servicio VALUES (10,'07/20/2012',15,3,10) Llenado de tabla pago

insert into pago values (1,'efectivo','05/24/2012',25,1,'') insert into pago values (2,'efectivo','06/13/2012', 15, 2,'' ) insert into pago values (3,'efectivo','05/25/2012',25,3,'') insert into pago values (4,'efectivo','06/23/2012',25,4,'') insert into pago

values (5,'efectivo','06/24/2012',25,5,'') insert into pago values (6,'efectivo','06/24/2012',15,6,'') insert into pago values (7,'efectivo','07/20/2012',25,7,'') insert into pago values (8,'efectivo','05/10/2012',25,8,'') insert into pago values (9,'efectivo','05/24/2012',15,9,'') insert into pago values (10,'efectivo','07/21/2012',15,10,'') insert into pago values (11, 'efectivo', '05/10/2012', 125, '',1) insert into pago values (12, 'efectivo', '05/27/2012', 125, '',2) insert into pago values (13, 'credito', '06/14/2012', 180, '',3) insert into pago values (14, 'efectivo', '06/21/2012', 150, '',4)

insert into pago values (15, 'efectivo', '06/21/2012', 150, '',5) insert into pago values (16, 'credito', '06/24/2012', 300, '',6) insert into pago values (17, 'efectivo', '06/28/2012', 180, '',7) insert into pago values (18, 'efectivo', '07/21/2012', 200, '',8)

insert into pago values (19, 'efectivo', '07/22/2012', 300, '',9) insert into pago values (20, 'efectivo', '07/22/2012', 135, '',10)

Llenado de tabla comprobante_pago:

Insert into comprobante_pago values (1,'boleta', 1) insert into comprobante_pago values (2,'boleta', 2) insert into comprobante_pago values (3,'boleta', 3) insert into comprobante_pago values (4,'boleta', 4) insert into comprobante_pago values (5,'boleta', 5) insert into comprobante_pago values (6,'boleta', 6)

insert into comprobante_pago values (7,'boleta', 7) insert into comprobante_pago values (8,'boleta', 8) insert into comprobante_pago values (9,'boleta', 9) insert into comprobante_pago values (10,'boleta', 10) insert into comprobante_pago values (11,'factura', 11) insert into comprobante_pago values (12,'boleta', 12) insert into comprobante_pago values (13,'boleta', 13) insert into comprobante_pago values (14,'boleta', 14) insert into comprobante_pago values (15,'factura', 15) insert into comprobante_pago values (16,'boleta', 16) insert into comprobante_pago values (17,'boleta', 17) insert into comprobante_pago values (18,'boleta', 18) insert into comprobante_pago values (19,'boleta', 19) insert into comprobante_pago values (20,'factura', 20)

PROCEDIMIENTOS Y FUNCIONES:
1. FUNCIN PARA CONTAR EL NMERO DE CLIENTES Q TIENE UN DETERMINADO TIPO DE DOCUMENTO
Create or replace function contar (num cliente.tipo_doc%TYPE) return NUMBER IS var number; BEGIN Select count (id_cliente) into var from cliente WHERE tipo_doc=num; RETURN (var); END;

Lnea de ejecucin:
select contar('DNI') from dual

COMPROBACION:

2. PROCEDIMIENTO PARA LISTAR EL NOMBRE, DNI, CARGO DE CADA EMPLEADO.


Create or replace procedure Listar_empleado (id IN empleado.id_empleado%TYPE, nom OUT empleado.nombres%TYPE, doc OUT empleado.dni%TYPE, pos OUT empleado.cargo%TYPE) IS BEGIN SELECT nombres,dni,cargo INTO nom,doc,pos FROM empleado WHERE id_empleado=id; END Listar_empleado;

Lnea de Ejecucin
Declare emp_nom empleado.nombres%TYPE; emp_doc empleado.dni%TYPE; emp_pos empleado.cargo%TYPE; BEGIN Listar_empleado(1,emp_nom,emp_doc,emp_pos); dbms_output.put_line('nombre:'|| emp_nom); dbms_output.put_line('documento:'|| emp_doc); dbms_output.put_line('cargo:'|| emp_pos); END; /

3. FUNCIN PARA CONTAR EL NMERO DE HABITACIONES QUE TIENE UN DETERMINADO TIPO DE ESTADO
create or replace function nhab_estado (est habitacion.estado%TYPE) return NUMBER IS cant NUMBER; BEGIN select count (id_habitacion) into cant from habitacion WHERE estado=est; RETURN (cant); END;

LINEA DE EJECUCION (valor H) ---habilitados


Select nhab_estado ('H') from dual

COMPROBACION:

4. FUNCIN PARA CONTAR EL NMERO DE ALQUILERES REALIZADOS EN UN DETERMINADO DA:


create or replace function n_fecha (fech ALQUILER.fecha_llegada%TYPE) return NUMBER IS cant NUMBER; BEGIN select count(id_alquiler) into cant from alquiler WHERE fecha_llegada=fech; RETURN (cant); END;

Lnea de Ejecucin
Select n_fecha ('07/19/2012') from dual

5. PROCEDIMIENTO PARA LISTAR LA FECHA, ID_SERVICIO, ID_CLIENTE DE UN SERVICIO REALIZADO


Create or replace procedure Listar_servicios (id IN detalle_servicio.id_det_servicio%TYPE, fech OUT detalle_servicio.fecha%TYPE, cost OUT detalle_servicio.costo_total%TYPE, id_serv OUT detalle_servicio.id_servicio%TYPE, id_client OUT detalle_servicio.id_cliente%TYPE) IS BEGIN SELECT fecha, costo_total, id_servicio, id_cliente INTO fech, cost, id_serv, id_client FROM detalle_servicio WHERE id_det_servicio=id; END Listar_servicios;

COSTO_TOTAL,

Lnea de Ejecucin
Declare emp_fech detalle_servicio.fecha%TYPE; emp_cost detalle_servicio.costo_total%TYPE; emp_id_serv detalle_servicio.id_servicio%TYPE; emp_id_client detalle_servicio.id_cliente%TYPE; BEGIN Listar_servicios(1, emp_fech, emp_cost, emp_id_serv, emp_id_client); dbms_output.put_line('fecha:'|| emp_fech); dbms_output.put_line('costo:'|| emp_cost); dbms_output.put_line('idservicio:'|| emp_id_serv); dbms_output.put_line('idcliente:'|| emp_id_client); END; /

6. FUNCION PARA SUMAR EL PAGO REALIZADO POR UN DETERMINADO TIPO DE PAGO YA SEA EFECTIVO O CREDITO
Create or replace function sumar (tipo pago.tipo_pago%TYPE) return NUMBER IS var number; BEGIN Select sum(costo_total) into var from pago WHERE tipo_pago =tipo; RETURN (var); END;

Lnea de Ejecucin

Select sumar('efectivo') from dual

7. TRIGGER O DISPARADOR QUE TIENE COMO FUNCION ESTABLECER REGLAS PARA PODER MODIFICAR LA TABLA PAGO, ESTE TRIGGER SE DISPARA CUANDO ALGUN USUARIO DESEA INSERTAR, ACTUALIZAR O ELIMINAR DATOS DE LA TABLA PAGO FUERA DE HORARIOS DE TRABAJO (LOS HORARIOS PERMITIDOS PARA REALIZAR ESTAS ACCIONES SON DESDE LAS 8 HORAS (8 A.M) HASTA LAS 18 HORAS (6 P.M))
CREATE OR REPLACE TRIGGER seguridad_pago BEFORE INSERT OR UPDATE OR DELETE ON pago BEGIN IF (TO_CHAR(SYSDATE,'DY') IN ('THU','FRI')) OR (TO_CHAR(SYSDATE,'HH24') NOT BETWEEN '08' AND '18') THEN IF DELETING THEN RAISE_APPLICATION_ERROR ( -20502,'UD DEBE ELIMINAR DATOS DE LA TABLA PAGO SOLO EN HORARIO DE OFICINA.'); ELSIF INSERTING THEN RAISE_APPLICATION_ERROR ( -20500,'UD DEBE INSERTAR DATOS DE LA TABLA PAGO SOLO EN HORARIO DE OFICINA.'); ELSIF UPDATING ('costo_total') THEN

RAISE_APPLICATION_ERROR( -20503,'UD DEBE ACTUALIZAR EL COSTO_TOTAL SOLO EN HORARIO DE OFICINA.'); ELSE RAISE_APPLICATION_ERROR(-20504,'UD DEBE ACTUALIZAR DATOS DE LA TABLA pago SOLO EN HORARIO DE OFICINA.'); END IF; END IF; END;

ACCIONES PARA COMPROBAR EL FUNCIONAMIENTO DEL TRIGGER


DROP TRIGGER seguridad_pago DELETE pago WHERE id_pago = 6 INSERT INTO pago (id_pago, tipo_pago, fecha, costo_total, id_det_servicio, id_det_alq) VALUES (21, 'credito', '27/11/2012', 190, '',''); UPDATE pago SET costo_total = 100 WHERE id_pago = 7

8. FUNCION QUE INGRESANDO UN TIPO DE CARGO NOS DEVUELVE LA CANTIDAD DE EMPLEADOS CON ESE TIPO DE CARGO
create or replace function empleados_tipo_cargo (tipo_cargo empleado.cargo%TYPE) return NUMBER is num_empleado NUMBER ; begin select count(id_empleado) into num_empleado from empleado where cargo = tipo_cargo; return(num_empleado); end; /

LINEA DE EJECUCION
select empleados_tipo_cargo ('camarera') from dual

9. CREACIN DE PROCEDIMIENTO CON USO DE CURSOR: PROCEDIMIENTO PARA LISTAR LOS DATOS DE TODAS LAS RESERVAS QUE SEAN DE UNA DETERMINADA FECHA
create or replace procedure listar_reserva(contar varchar2) IS cursor c_fecha is select * from reserva where to_char(fecha_reserva,'mm') like contar; r reserva%ROWTYPE; begin open c_fecha; loop fetch c_fecha into r; exit when c_fecha%NOTFOUND; dbms_output.put_line(r.id_reserva || '-'|| r.fecha_reserva || '-' || r.fecha_llegada);

end loop; close c_fecha; end;

LINEA DE EJECUCION
En este caso tomamos las reservas hechas en el mes de junio mostrando su id_reserva, fecha_reserva, fecha_llegada SET SERVEROUTPUT ON EXEC listar_reserva(06)

10. CREACIN DE PROCEDIMIENTO CON USO DE CURSOR: PROCEDIMIENTO PARA LISTAR LOS DATOS DE TODOS LOS SERVICIOS DE UN DETERMINADO CLIENTE SEGN SU ID_CLIENTE
create or replace procedure obtener_datserv (cod detalle_servicio.id_cliente%TYPE) IS cursor c_serv is select * from detalle_servicio where id_cliente=cod; r detalle_servicio%ROWTYPE; begin open c_serv; loop fetch c_serv into r; exit when c_serv%NOTFOUND; dbms_output.put_line(r.id_det_servicio || '-'|| r.fecha || '-' || r.costo_total);

end loop; close c_serv; end;

LINEA EJECUCION
En este caso tomamos los servicios de el cliente que posee el id_cliente =2 mostrando su id_det_servicio, fecha, costo_total

SET SERVEROUTPUT ON EXEC obtener_datserv(2)

GESTION DE USUARIOS:
Otorgamos el privilegio de iniciar una sesin (HOTEL):

Conectados como el usuario HOTEL, tratamos de crear un usuario DENYS con contrasea SISTEMAS

No es posible crear un usuario puesto que el usuario HOTEL, no tiene el privilegio de crear usuarios, para lo cual se le dar dicho privilegio. Para esto tenemos que darle el privilegio como usuario SYSTEM

Creamos dos usuarios ms que van a ser los recepcionistas del sistema (el anterior fue el administrador):

Ahora creamos los perfiles con los que cada usuario debe contar: Perfil ADMINISTRADOR que se le asignar al usuario DENYS Perfil RECEPCIONISTA que se le asignar a los usuarios JUAN12 y LUISPER.

Asignamos perfiles:

Le asignamos ciertos privilegios del sistema al usuario HOTEL, de modo que este le pueda dar ciertos privilegios al cada usuario ( denys, juan12 o luisper)

Como le hemos asignado el privilegio de crear sesin con ADMIN OPTION, este privilegio el usuario HOTEL puede drselo a otros usuarios como vemos a continuacin (DENYS):

Desde aqu el usuario DENYS puede ejecutar algunas consultas, ya que el usuario HOTEL le traspasa sus privilegios. Veremos si pasa lo mismo con el usuario JUAN12 y el usuario LUISPER:

Como vemos los tres usuarios van a tener acceso a los datos ya que el usuario HOTEL, les dio el privilegio. (Tanto el administrador como el usuario van a tener opcin de insertar, crear, modificar, etc. en el sistema).

IMPLEMENTACION DE LOS PROCEDIMIENTOS ALMACENADOS, FUNCIONES, TRIGGERS EN JAVA (FORMULARIOS)

También podría gustarte