Sunteți pe pagina 1din 9

ESCUELA PROFESIONAL INGENIERIA DE SISTEMAS

CURSO:
Base Datos Avanzado

DOCENTE:
Ing. Luis, Boy Chavil

CICLO:
VII

ALUMNOS:
CASTAEDA MONCADA, Ivan
FERRE MANYA, Ederson

VEGAS MEDINA, Sandro

VERA ABANTO, Gerardo

2017
ESCUELA PROFESIONAL INGENIERIA DE SISTEMAS

EJERCICIO DE PRCTICA
BASE DE DATOS AVANZADAS
INTEGRIDAD DE DATOS, FUNCIONES, CURSORES Y TRIGGERS

INDICACIONES GENERALES

Los estudiantes podrn formar equipos de trabajo conformado por no ms de 5 alumnos


Se pide elaborar un informe conteniendo el Script en T-SQL de SQL Server que solucione
el caso planteado y las imgenes del diagrama de la base de datos desarrollado en SQL
Server.
El trabajo se califica con puntaje mximo de 3 puntos que sern agregados a la nota de
la prctica calificada 1.
La fecha de presentacin ser el da de la evaluacin de la Unidad I. Por favor, se solicita
que si el trabajo no est lista en la fecha sealada, no insistir para ser presentado en
fecha posterior.

1. DESCRIPCION DEL CASO: SISTEMA DE RESERVACION Y CONTROL DE HOSPEDAJE Y


SERVICIOS DE UNA HOSTAL

La empresa Hotel Las Flores, es una compaa que es propietaria de una cadena de
Hoteles, Hostales y Hospedajes a nivel del norte del Per. En la compaa se ha encontrado
algunos problemas en la administracin; por ello se solicita la implementacin de la base de
datos para automatizar el proceso de reservacin y alquiler de habitaciones, as como el control
de estado y asignacin a los huspedes y el servicio consumo. Las operaciones del negocio se
detallan a continuacin:

a. La oficina de recepcin lleva a cabo el registro y reservacin de habitaciones de los


huspedes ingresando sus datos personales tales como sus nombres y apellidos, edad,
estado civil, procedencia, pas, sexo, ciudad, telfono, documento de identidad, fecha de
ingreso y fecha de salida y el nmero de habitacin asignada segn los requerimientos:
simple, doble, triple, matrimonial, familiar y suite, as como la cantidad de habitaciones que
desea reservar. Asimismo, esta oficina efecta las modificaciones o cancelaciones de las
reservaciones cuando el cliente lo solicite.

b. El proceso de asignacin de hospedaje se realiza con la verificacin del estado de una


habitacin, la que puede ser: reservado, libre, ocupado.

c. La atencin en las habitaciones tiene adems algunos servicios adicionales, tales como:
Televisor con cable, agua caliente, baos turcos, lavado y planchado de ropa, entre otros.
Asimismo, se cuenta con los siguientes servicios: cafetera, restaurant, bar, auditorio,
recepciones, entre otros.

d. Los clientes pueden alquilar el Auditorio, el cual tiene una capacidad para 600 personas
cmodamente sentadas, para ello harn sus reservaciones con anticipacin indicando
adems los servicios adicionales requeridos, tales como; equipos de sonido, equipos
audiovisuales (Televisor, VHS, Internet, computadora, Proyector de transparencias, can
multimedia, Ecram, entre otros). Asimismo, se puede solicitar el servicio de Buffet y atencin
de mozos.

21 de junio de 2017 1
ESCUELA PROFESIONAL INGENIERIA DE SISTEMAS

e. Los clientes pueden acceder a cualquiera de estos servicios como un adicional, o tambin
pueden solicitarlos sin necesidad de hospedarse.

2. APLICACIONES A DESARROLLAR:

2.1 SCRIPT EN T-SQL PARA LA BASE DE DATOS CON RESTRICCIONES DE INTEGRIDAD DE DATOS

Implementar la Base de datos en T-SQL de SQL Server, teniendo en cuenta que se


programarn las siguientes restricciones de integridad de datos:

En la Tabla: Habitacin; el dominio que se refiere al TipoHabitacin ser:


simple,doble, triple, matrimonial, familiar y suite; prevaleciendo como valor
por defecto el tipo Simple.
En la Tabla: Habitacin; el dominio que se refiere al EstadoHabitacin ser: reservado,
libre, ocupado; prevaleciendo el estado libre.
Programar las restricciones de integridad de las referencias (Relaciones entre tablas).

2.2 IMPLEMENTACIN DE FUNCIONES, TRIGGER Y CURSORES

1. Implementar un Trigger para que al ingresar un nuevo Husped se pueda crear su


Usuario cuyas caractersticas, son las siguientes:
o Husped es el cliente que Alquila un Servicio de Habitacin del Hotel; ms no es
el cliente que solamente hace Reservaciones.
o Estructura de la tabla USUARIO:

USUARIO(UsuarioID, Login, Contrasea)

o Autogenerar la columna UsuarioID, teniendo en cuenta que su valor ser igual


a HuespedID.
o El valor de Login, ser:
1 Letra del ApPaterno del Husped + Primera palabra del Nombre del
Husped + @unitru.edu.pe
o El valor de la contrasea, ser:
1 Letra del ApPaterno(en minscula)+ ltima Letra del ApMaterno(en
mayscula)+N1N2N3 (N1:Cantidad de vocales que hay en Nombre del
Cliente, N2: Cantidad de vocales que hay en ApPaterno del Cliente y N3:
Cantidad de vocales que hay en ApMaterno del Cliente)
o Ejemplo:
Supongamos que el Husped se llama:
Nombre=Juan Alberto; ApPaterno=Prez; y, ApMaterno=Lpez
Entonces:
Login=PJuan@unitru.edu.pe
Contrasea=pZ522

2. Implementar un Trigger para que al ingresar el registro del alquiler o Reserva de una
Habitacin, se cambie el Estado de dicha habitacin que pasar de libre a ocupada
o reservada; segn sea el caso. En ambas situaciones, se requiere saber cul ser la

21 de junio de 2017 2
ESCUELA PROFESIONAL INGENIERIA DE SISTEMAS

fecha de inicio de alquiler o reserva y cul ser la fecha de finalizacin del alquiler o
reserva.

2.3 DIAGRAMA DE BASE DE DATOS EN SQL SERVER

Implementar el diagrama de la base de datos anterior en SQL Server.

SOLUCION

Creacin de Tablas
create database HOTEL_FLORES
go

use HOTEL_FLORES
go

create table CLIENTE


(IdCliente int identity(1, 1) not null,
Nombres varchar(80) not null,
ApPaterno varchar(50) not null,
ApMaterno varchar(50) not null,
FechaNacimiento date not null,
EstadoCivil varchar(30) null,
Procedencia varchar(100) not null,
Pais varchar(50) not null,
Ciudad varchar(50) not null,
Sexo char(06) not null,
Telefono char(09) null,
Dni char(08) not null,
TotalPagar money not null)
go

create table HABITACION


(Numero int not null,
Tipo varchar(50) not null,
Estado varchar(15) not null,
Precio money not null)
go

create table ADICIONALES


(IdAdicional int identity(1, 1) not null,
Descripcion varchar(100) not null,
Precio money not null)
go

create table USUARIO


(IdCliente int not null,
xLogin varchar(50) null,
Contrasea varchar(10) null)
go

create table REGISTRO


(IdCliente int not null,
Numero int not null,
FechaIngreso datetime not null,
FechaSalida datetime null)
go

21 de junio de 2017 3
ESCUELA PROFESIONAL INGENIERIA DE SISTEMAS

create table RESERVACION


(IdCliente int not null,
Numero int not null,
FechaReservacion datetime not null,
FechaReservada datetime not null,
FechaSalida datetime not null)
go

create table DETALLE_CONSUMO


(IdAdicional int not null,
IdCliente int not null,
Hora time not null)
Go

Creacin de Relaciones

alter table CLIENTE


add constraint PK_Cliente
primary key (IdCliente)
go

alter table HABITACION


add constraint PK_Habitacion
primary key (Numero)
go

alter table ADICIONALES


add constraint PK_Adicionales
primary key (IdAdicional)
go

alter table USUARIO


add constraint PK_Usuario
primary key (IdCliente),
constraint FK_Usuario_Cliente
Foreign Key(IdCliente) references CLIENTE(IdCliente)
go

alter table REGISTRO


add constraint PK_Registro
primary key (IdCliente, Numero),
constraint FK_Registro_Cliente
Foreign Key(IdCliente) references CLIENTE(IdCliente),
constraint FK_Registro_Habitacion
Foreign Key(Numero) references HABITACION(Numero)
go

alter table RESERVACION


add constraint PK_Reservacion
primary key (IdCliente, Numero),
constraint FK_Reservacion_Cliente
Foreign Key(IdCliente) references CLIENTE(IdCliente),
constraint FK_Reservacion_Habitacion
Foreign Key(Numero) references HABITACION(Numero)
go

alter table DETALLE_CONSUMO


add constraint PK_DetalleConsumo
primary key (IdAdicional, IdCliente),
constraint FK_DetalleConsumo_Adicional

21 de junio de 2017 4
ESCUELA PROFESIONAL INGENIERIA DE SISTEMAS

Foreign Key(IdAdicional) references ADICIONALES(IdAdicional),


constraint FK_DetalleConsumo_Ciente
Foreign Key(IdCliente) references CLIENTE(IdCliente)
go

Creacin de Dominios y Valores por Defecto


alter table HABITACION
add constraint Habitacion_ChkTipo
check (Tipo='SIMPLE' or Tipo='DOBLE' or Tipo='TRIPLE' or
Tipo='MATRIMONIAL' or Tipo='SUITE' or Tipo='FAMILIAR'),
constraint Habitacion_DftTipo
Default('SIMPLE') for Tipo,
constraint Habitacion_ChkEstado
check (Estado='RESERVADO' or Estado='LIBRE' or Estado='OCUPADO'),
constraint Habitacion_DftEstado
Default('LIBRE') for Estado
go

alter table CLIENTE


add constraint Cliente_ChkSexo
check (Sexo='HOMBRE' or Sexo='MUJER'),
constraint Cliente_DftSexo
Default('HOMBRE') for Sexo
go

alter table HABITACION


add constraint Habitacion_ChkTipo
check (Tipo='SIMPLE' or Tipo='DOBLE' or Tipo='TRIPLE' or
Tipo='MATRIMONIAL' or Tipo='SUITE' or Tipo='FAMILIAR'),
constraint Habitacion_DftTipo
Default('SIMPLE') for Tipo,
constraint Habitacion_ChkEstado
check (Estado='RESERVADO' or Estado='LIBRE' or Estado='OCUPADO'),
constraint Habitacion_DftEstado
Default('LIBRE') for Estado
go

alter table CLIENTE


add constraint Cliente_ChkSexo
check (Sexo='HOMBRE' or Sexo='MUJER'),
constraint Cliente_DftSexo
Default('HOMBRE') for Sexo
go

21 de junio de 2017 5
ESCUELA PROFESIONAL INGENIERIA DE SISTEMAS

Diagrama

Creacin de Funciones para Obtener la Primera Letra


use HOTEL_FLORES
go
if OBJECT_ID('dbo.fPrimeraLetra','fn') is not null
drop function dbo.fPrimeraLetra
go
create function dbo.fPrimeraLetra(@cadena varchar(30))
returns varchar(01)
AS
begin
declare @letra varchar(01)
set @letra = SUBSTRING(@cadena, 1, 1)
return @letra
end
go

Creacin de Funciones para Obtener la Primera Palabra


use HOTEL_FLORES
go
if OBJECT_ID('dbo.fPrimeraPalabra','fn') is not null
drop function dbo.fPrimeraPalabra
go
create function dbo.fPrimeraPalabra(@cadena varchar(30), @palabra varchar(30),
@xPos integer)
returns varchar(30)
AS
begin

21 de junio de 2017 6
ESCUELA PROFESIONAL INGENIERIA DE SISTEMAS

declare @l varchar(30)
if @xPos<=len(@cadena)
begin
if SUBSTRING(@cadena, @xPos+1, 1) in (' ')
set @l = dbo.fPrimeraPalabra(@cadena,
@palabra+(SUBSTRING(@cadena, @xPos, 1)), len(@cadena)+1)
else
set @l = dbo.fPrimeraPalabra(@cadena,
@palabra+(SUBSTRING(@cadena, @xPos, 1)), @xPos+1)
end
else
set @l = @palabra
return @l
end
go

Creacin de Funciones para Obtener la Ultima Letra


use HOTEL_FLORES
go
if OBJECT_ID('dbo.fUltimaLetra','fn') is not null
drop function dbo.fUltimaLetra
go
create function dbo.fUltimaLetra(@cadena varchar(30))
returns varchar(01)
AS
begin
declare @letra varchar(01)
set @letra = SUBSTRING(@cadena, len(@cadena), 1)
return @letra
end
go

Creacin de Funciones para Contar Vocales


use HOTEL_FLORES
go
if OBJECT_ID('dbo.fCuentaVocales','fn') is not null
drop function dbo.fCuentaVocales
go
create function dbo.fCuentaVocales(@cadena varchar(30), @cuenta integer, @xPos
integer)
returns integer
AS
begin
declare @cta integer
if @xPos<=len(@cadena)
begin
if SUBSTRING(@cadena, @xPos, 1) in ('a','e','i','o','u')
set @cta = dbo.fCuentaVocales(@cadena, @cuenta+1, @xPos+1)
else
set @cta = dbo.fCuentaVocales(@cadena, @cuenta, @xPos+1)
end
else
set @cta = @cuenta
return @cta
end
go

21 de junio de 2017 7
ESCUELA PROFESIONAL INGENIERIA DE SISTEMAS

Creacin de Trigger
use HOTEL_FLORES
go
create trigger T_GenerarUsuario
on[CLIENTE]
for insert
AS
begin
--Variables de CLIENTE
declare @id int
declare @ApPaterno varchar(30)
declare @ApMaterno varchar(30)
declare @Nombre varchar(60)

declare @xLogin varchar(50)


declare @Contrasea varchar(10)

--Asignar los datos del CLIENTE a sus respectivas variables


select @id = IdCliente,
@ApPaterno = ApPaterno,
@ApMaterno = ApMaterno,
@Nombre = Nombres
from inserted

set @xLogin = dbo.fPrimeraLetra(@ApPaterno) + dbo.fPrimeraPalabra(@Nombre,


'', 1) + '@unitru.edu.pe'
set @Contrasea = LOWER(dbo.fPrimeraLetra(@ApPaterno)) +
UPPER(dbo.fUltimaLetra(@ApMaterno)) + CONVERT(varchar(02),
dbo.fCuentaVocales(@Nombre, 0, 1)) + CONVERT(varchar(02),
dbo.fCuentaVocales(@ApPaterno, 0, 1)) + CONVERT(varchar(02),
dbo.fCuentaVocales(@ApMaterno, 0, 1))

insert into USUARIO(IdCliente, xLogin, Contrasea)


values(@id, @xLogin, @Contrasea)
end
go

21 de junio de 2017 8

S-ar putea să vă placă și