Trabalho de Banco de Dados

23/02/2016

0

Bom dia!

Meu professor de BD, passou um trabalho para fechar notas e estou tendo algumas dúvidas e como o tempo é curto resolvi recorrer a vocês. Gostaria de saber até que ponto podem me ajudar.


Projeto de Implementação SGBD


Descrição do Problema
A rede de hotéis Bom Sono necessita de uma aplicação de banco de dados para gerenciar suas atividades financeiras. O gerente forneceu a seguinte descrição
A rede BomSono possui hotéis em diversas cidades. Cada hotel possui apartamentos de diferentes tipos. Existem apartamentos com um ou duas camas de casal, casal com uma cama de solteiro, casal com duas camas de solteiro e apartamentos com 1,2,3 e 4 camas. Alguns destes quartos são adaptados para pessoas portadoras de necessidade especiais. Os apartamentos podem ou não ter TV e/ou frigobar e cada tipo de apartamento tem um valor de diária fixo.
As reservas são feitas com antecedência. O cliente deve-se cadastrar no site informando o nome, endereço, nacionalidade, e-mail, telefone de contato e uma senha. Para reserva deve-se escolher um tipo de apartamento, informar o número de pessoas e as datas previstas para entrada e saída. Um cliente pode realizar várias reservas e cada reserva tem um código de identificação.
Quando um cliente chega ao hotel e faz o check-in, uma conta é aberta é aberta para aquele período de hospedagem e todo consumo realizado fica associada a esta hospedagem. Uma nota fiscal com o valor total será gerada no momento do check-out. O pagamento pode ser feito em cheque, cartão de crédito ou de débito.
Cada diária da direito apenas o café da manhã. Despesas de consumo do frigobar são anotadas diariamente, pela camareira que arruma o quarto. Por questões de segurança e necessário registrar diariamente qual camareira arrumou cada quarto. Além das camareiras o hotel tem funcionários atendentes de recepção de serviço de quarto, serviço geral e gerentes. É necessário guardar os dados de cada funcionário.
O restaurante é terceirizado e por isso, as refeições e demais consumos realizados no restaurante são lançados na conta do hospede por meio de uma nota completa de consumo, que deve estar assinada pelo hospede. Consumos do restaurante entregues no quarto tem o acréscimo de 10%.
O hotel ainda oferece serviços de lavandeiria, e existe uma tabela de preços disponíveis no quarto (Ex: 1- Lavar e passar terno, 2- Lavar e passar vestido, 3- Camisa social, etc.). Eventuais serviços de lavanderia também são contabilizados na conta do hospede.
O cliente pode entrar no site e cancelar sua reserva, sem custo se o cancelamento for feito com dois dias de antecedência. Reservas não canceladas no prazo e/ou no-show geram uma cobrança de uma diária. O banco de dados deve manter o histórico de todos os dados necessários ao controle da estádia dos hóspedes.
Descrição do Trabalho:
Os trabalhos devem ser feitos em grupos de 3 e 4 pessoas.
1ª Etapa: Elaborar o esquema conceitual diagrama EER. Para um banco de dados a ser utilizados para gerenciar as informações do hotel.
2ª Etapa: Projetar o banco de dados do sistema para o SGBD MySQLe gerar o esquema lógico.
3ª Etapa: Criar uma base de dados e elaborar as seguintes consultas:
a) Obter dados dos clientes;
b) Consultar as reservas de um determinado cliente.
c) Obter os dados de todos os hóspedes, conforme a ficha do Ministério do Turismo
d) Consultar os consumos e valores de diárias de um determinado hóspede.
e) Gerar nota fiscal completa no ato do check-out.
f) Obter os relatórios financeiros, por hotel, por cliente. Além de relatórios consolidados por semana e por mês.
g) Obter relatório de cancelamentos.
h) Fazer uso de funções, gatilhos e procedimentos na especificação do banco de dados.
i) Inserir dados no BD.
Jardel Martins

Jardel Martins

Responder

Post mais votado

23/02/2016

Por ter ficado um pouco extenso, me perdi nas entidades e seus atributos com seus relacionamentos.


Posta o que você já fez e descreva suas dificuldades, pois sua resposta acima é muito vaga.

Assim fica mais fácil ajudá-lo!

Jothaz

Jothaz
Responder

Mais Posts

23/02/2016

Marcos P

Não confunda uma rede de hotéis com uma unidade de uma rede de hotéis...

Se você está desenvolvendo um sistema para uma rede de hotéis, ou seja, seu cliente é uma rede de hotéis... você deve tratar Hotel como Unidade.

Afinal, os hóspedes, funcionários, reservas, consumos... se aplicam sempre a uma unidade ( podendo ser consolidados, em tempo de consulta, para a rede toda ! ).

Mesmo que seu sistema seja "multi-rede", continua valendo a regra de Hotel 1 : N Cidade. O que deveria ser incorporado nesse caso, é a rede a qual a unidade pertence ( Rede 1 : N Hotel ).

Modelar é criar definições e impor limites... crie os seus !
Responder

23/02/2016

Jardel Martins

Acredito que eu tenha entendido
Responder

23/02/2016

Marcos P

Modelar é criar definições e impor limites... crie os seus !


Boa sorte !
Responder

26/02/2016

David Sylvestre

Rapaz isso é um dilema:

Pq inicialmente pensei do seu jeito e depois pensei:

Uma cidade pode ter vários hotéis,
e um mesmo hotel (mesmo cnpj) em várias cidades

Jardel, mude seu ponto de visão ao desenvolver, tente se aproximar mais do cliente (professor) e entenda qual a real necessidade do sistema tirando essas duvidas.
É melhor entender a regra real que o cliente vive do que supor, desenvolver e ver que nao atende.
Responder

11/03/2016

Jardel Martins

Gnt pra acabar me ajudem, não consegui fazer as questoes seguintes:

f) Obter os relatórios financeiros, por hotel, por cliente. Além de relatórios consolidados por semana e por mês.
g) Obter relatório de cancelamentos.

segue o banco em anexo
-- MySQL Workbench Synchronization
-- Generated: 2016-02-28 14:29
-- Model: New Model
-- Version: 1.0
-- Project: Name of the project
-- Author: Jardel_Martins

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='TRADITIONAL,ALLOW_INVALID_DATES';

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`tab_cidade` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `nome` VARCHAR(100) NOT NULL,
  `cep` VARCHAR(25) NOT NULL,
  `uf` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`cad_cliente` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `nome` VARCHAR(100) NOT NULL,
  `cpf` VARCHAR(15) NOT NULL,
  `endereco` VARCHAR(45) NOT NULL,
  `nacionalidade` VARCHAR(45) NOT NULL,
  `email` VARCHAR(85) NOT NULL,
  `telefone` VARCHAR(45) NOT NULL,
  `senha` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`funcionarios` (
  `id` INT(8) ZEROFILL NOT NULL,
  `nome` VARCHAR(125) NOT NULL,
  `cpf` VARCHAR(15) NULL DEFAULT NULL,
  `funcao` VARCHAR(120) NULL DEFAULT NULL,
  `salario` DECIMAL(8,2) NULL DEFAULT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`cad_hotel` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `cnpj` VARCHAR(25) NOT NULL,
  `cidade_id` INT(11) NOT NULL,
  `nome` VARCHAR(100) NOT NULL,
  INDEX `fk_hotel_cidade1_idx` (`cidade_id` ASC),
  UNIQUE INDEX `cnpj_Hotel_UNIQUE` (`cnpj` ASC),
  PRIMARY KEY (`id`),
  CONSTRAINT `fk_hotel_cidade1`
    FOREIGN KEY (`cidade_id`)
    REFERENCES `hotel_bomsono`.`tab_cidade` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`nota_fiscal` (
  `id` INT(11) NOT NULL,
  `cliente_id` INT(11) NOT NULL,
  `data_emissao` DATE NOT NULL,
  `chave` VARCHAR(45) NOT NULL,
  `numero` INT(11) NULL DEFAULT NULL,
  `serie` INT(11) NULL DEFAULT NULL,
  `valor_total` DECIMAL(12,2) NOT NULL DEFAULT '0.00',
  PRIMARY KEY (`id`),
  INDEX `fk_nota_fiscal_cad_cliente1_idx` (`cliente_id` ASC),
  CONSTRAINT `fk_nota_fiscal_cad_cliente1`
    FOREIGN KEY (`cliente_id`)
    REFERENCES `hotel_bomsono`.`cad_cliente` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`cad_reserva` (
  `codigo` INT(11) ZEROFILL NOT NULL AUTO_INCREMENT,
  `cliente_id` INT(11) NOT NULL,
  `apartamentos_id` INT(11) NOT NULL,
  `num_pessoa` INT(11) NOT NULL,
  `data_entrada` DATE NOT NULL,
  `data_saida` DATE NOT NULL,
  `cancelamento` ENUM('true', 'false') NOT NULL DEFAULT 'false',
  PRIMARY KEY (`codigo`),
  INDEX `fk_cad_reserva_cad_apartamento1_idx` (`apartamentos_id` ASC),
  INDEX `fk_cad_reserva_cad_cliente1_idx` (`cliente_id` ASC),
  CONSTRAINT `fk_cad_reserva_cad_apartamento1`
    FOREIGN KEY (`apartamentos_id`)
    REFERENCES `hotel_bomsono`.`cad_apartamento` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_cad_reserva_cad_cliente1`
    FOREIGN KEY (`cliente_id`)
    REFERENCES `hotel_bomsono`.`cad_cliente` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`cad_apartamento` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `hotel_id` INT(11) NOT NULL,
  `cama_casal` INT(2) ZEROFILL NOT NULL,
  `cama_solteiro` INT(2) ZEROFILL NOT NULL,
  `necessidade_especial` ENUM('SIM', 'NAO') NOT NULL DEFAULT 'NAO',
  `tv` ENUM('SIM', 'NAO') NOT NULL DEFAULT 'NAO',
  `frigobar` ENUM('SIM', 'NAO') NOT NULL DEFAULT 'NAO',
  `valor_diaria` DECIMAL(8,2) NOT NULL,
  INDEX `fk_cad_apartamento_cad_hotel1_idx` (`hotel_id` ASC),
  PRIMARY KEY (`id`),
  CONSTRAINT `fk_cad_apartamento_cad_hotel1`
    FOREIGN KEY (`hotel_id`)
    REFERENCES `hotel_bomsono`.`cad_hotel` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`hot_checkin` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `reserva_codigo` INT(11) ZEROFILL NOT NULL,
  `data_entrada` DATE NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_hot_checkin_cad_reserva1_idx` (`reserva_codigo` ASC),
  CONSTRAINT `fk_hot_checkin_cad_reserva1`
    FOREIGN KEY (`reserva_codigo`)
    REFERENCES `hotel_bomsono`.`cad_reserva` (`codigo`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`hot_conta` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `checkin_id` INT(11) NOT NULL,
  `valor_conta` DECIMAL(8,2) NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_hot_conta_hot_checkin1_idx` (`checkin_id` ASC),
  CONSTRAINT `fk_hot_conta_hot_checkin1`
    FOREIGN KEY (`checkin_id`)
    REFERENCES `hotel_bomsono`.`hot_checkin` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`cad_servico` (
  `codigo` INT(8) ZEROFILL NOT NULL,
  `descricao` VARCHAR(120) NOT NULL,
  `valor_unitario` DECIMAL(8,2) NOT NULL,
  `tipo_servico` VARCHAR(45) NULL DEFAULT NULL,
  PRIMARY KEY (`codigo`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`cad_limpeza_apartamento` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `apartamentos_id` INT(11) NOT NULL,
  `funcionarios_id` INT(8) ZEROFILL NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_cad_limpeza_apartamento_cad_apartamento1_idx` (`apartamentos_id` ASC),
  INDEX `fk_cad_limpeza_apartamento_funcionarios1_idx` (`funcionarios_id` ASC),
  CONSTRAINT `fk_cad_limpeza_apartamento_cad_apartamento1`
    FOREIGN KEY (`apartamentos_id`)
    REFERENCES `hotel_bomsono`.`cad_apartamento` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_cad_limpeza_apartamento_funcionarios1`
    FOREIGN KEY (`funcionarios_id`)
    REFERENCES `hotel_bomsono`.`funcionarios` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`cad_conta_restaurante` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `valor_consumido` DECIMAL(12,2) NOT NULL,
  `conta_id` INT(11) NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_cad_conta_restaurante_hot_conta1_idx` (`conta_id` ASC),
  CONSTRAINT `fk_cad_conta_restaurante_hot_conta1`
    FOREIGN KEY (`conta_id`)
    REFERENCES `hotel_bomsono`.`hot_conta` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`consumo_restaurante` (
  `conta_restaurante_id` INT(11) NOT NULL,
  `codigo_produto` INT(8) ZEROFILL NOT NULL,
  `quantidade` DECIMAL(8,2) NOT NULL,
  `entrega_domicilio` ENUM('SIM', 'NAO') NOT NULL DEFAULT 'NAO',
  `recibo_assinado` ENUM('SIM', 'NAO') NOT NULL DEFAULT 'SIM',
  INDEX `fk_consumo_restaurante_cad_conta_restaurante1_idx` (`conta_restaurante_id` ASC),
  PRIMARY KEY (`codigo_produto`),
  CONSTRAINT `fk_consumo_restaurante_cad_conta_restaurante1`
    FOREIGN KEY (`conta_restaurante_id`)
    REFERENCES `hotel_bomsono`.`cad_conta_restaurante` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_consumo_restaurante_cad_produtos_restaurante1`
    FOREIGN KEY (`codigo_produto`)
    REFERENCES `hotel_bomsono`.`cad_produtos_restaurante` (`codigo`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`cad_produtos_restaurante` (
  `codigo` INT(8) ZEROFILL NOT NULL,
  `descricao` VARCHAR(120) NOT NULL,
  `valor_unitario` DECIMAL(8,2) NOT NULL,
  PRIMARY KEY (`codigo`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`consumo_servico` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `codigo_servico` INT(8) ZEROFILL NOT NULL,
  `conta_id` INT(11) NOT NULL,
  `quantidade` VARCHAR(45) NOT NULL,
  `valor_servico` DECIMAL(12,2) NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_consumo_servico_hot_conta1_idx` (`conta_id` ASC),
  INDEX `fk_consumo_servico_cad_servico1_idx` (`codigo_servico` ASC),
  CONSTRAINT `fk_consumo_servico_hot_conta1`
    FOREIGN KEY (`conta_id`)
    REFERENCES `hotel_bomsono`.`hot_conta` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_consumo_servico_cad_servico1`
    FOREIGN KEY (`codigo_servico`)
    REFERENCES `hotel_bomsono`.`cad_servico` (`codigo`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `hotel_bomsono`.`hot_check_out` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `checkin_id` INT(11) NOT NULL,
  `data_saida` DATE NOT NULL,
  `valor_total` DECIMAL(12,2) NOT NULL,
  `tipo_pagamento` ENUM('cheque', 'debito', 'credito') NOT NULL,
  `nota_fiscal_id` INT(11) NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_hot_check_out_hot_checkin1_idx` (`checkin_id` ASC),
  INDEX `fk_hot_check_out_nota_fiscal1_idx` (`nota_fiscal_id` ASC),
  CONSTRAINT `fk_hot_check_out_hot_checkin1`
    FOREIGN KEY (`checkin_id`)
    REFERENCES `hotel_bomsono`.`hot_checkin` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_hot_check_out_nota_fiscal1`
    FOREIGN KEY (`nota_fiscal_id`)
    REFERENCES `hotel_bomsono`.`nota_fiscal` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

-- INSERTS DADOS

INSERT INTO `hotel_bomsono`.`tab_cidade` (`id`, `nome`, `cep`, `uf`) VALUES ('1', 'Almenara', '399000-000', 'MG');
INSERT INTO `hotel_bomsono`.`tab_cidade` (`id`, `nome`, `cep`, `uf`) VALUES ('2', 'Medina', '391299-000', 'MG');
INSERT INTO `hotel_bomsono`.`tab_cidade` (`id`, `nome`, `cep`, `uf`) VALUES ('3', 'Porto Seguro', '381291-992', 'BA');

INSERT INTO `hotel_bomsono`.`cad_hotel` (`cnpj`, `cidade_id`, `nome`) VALUES ('38.354.344/0001-71', '1', 'HOTEL BOM SONO SEDE');
INSERT INTO `hotel_bomsono`.`cad_hotel` (`cnpj`, `cidade_id`, `nome`) VALUES ('69.866.311/0001-34', '2', 'HOTEL BOM SONO I');
INSERT INTO `hotel_bomsono`.`cad_hotel` (`cnpj`, `cidade_id`, `nome`) VALUES ('03.852.142/0001-75', '3', 'HOTEL BOM SONO BA');

INSERT INTO `hotel_bomsono`.`cad_apartamento` (`hotel_id`, `cama_casal`, `cama_solteiro`, `tv`, `frigobar`, `valor_diaria`) VALUES ('1', '2', '1', 'SIM', 'SIM', '120');
INSERT INTO `hotel_bomsono`.`cad_apartamento` (`hotel_id`, `cama_casal`, `cama_solteiro`, `tv`, `frigobar`, `valor_diaria`) VALUES ('1', '1', '0', 'SIM', 'SIM', '100');
INSERT INTO `hotel_bomsono`.`cad_apartamento` (`hotel_id`, `cama_casal`, `cama_solteiro`, `necessidade_especial`, `tv`, `frigobar`, `valor_diaria`) VALUES ('1', '0', '4', 'SIM', 'SIM', 'NAO', '130');
INSERT INTO `hotel_bomsono`.`cad_apartamento` (`hotel_id`, `cama_casal`, `cama_solteiro`, `valor_diaria`) VALUES ('2', '1', '2', '110');
INSERT INTO `hotel_bomsono`.`cad_apartamento` (`hotel_id`, `cama_casal`, `cama_solteiro`, `necessidade_especial`, `tv`, `frigobar`, `valor_diaria`) VALUES ('2', '2', '0', 'SIM', 'NAO', 'SIM', '140');

call sp_InsereCliente("Thiago Alves", "121.562.506-50", "brasileiro","Rua 41","thiago@mg.com.br","(44)1241-2412","tezinha");

call sp_InsereDadosReserva(1,1,2,'2016-08-24','2016-08-26');

INSERT INTO `hotel_bomsono`.`hotel_check_in` (`reserva_codigo`, `data_entrada`) VALUES ('00000000001', '2016-08-24');


-- tg_CriarReserva
DELIMITER $$
 
CREATE TRIGGER tg_CriarReserva AFTER INSERT
ON dados_reserva
FOR EACH ROW
BEGIN
    INSERT INTO cad_reserva  (dados_id, apartamento_id, num_pessoa, data_entrada, data_saida) 
			VALUES (NEW.id, NEW.apartamento_id, NEW.num_pessoa, NEW.data_entrada,NEW.data_saida);
END$$

DELIMITER ;

USE `hotel_bomsono`;
DROP procedure IF EXISTS `sp_InsereCliente`;

DELIMITER $$
USE `hotel_bomsono`$$
CREATE PROCEDURE `sp_InsereCliente` (in vNome varchar(120), 
									 in vCpf varchar(15), 
									 in vNacionalidade varchar(120),
                                     in vEndereco varchar(120),
                                     in vEmail varchar(120),
                                     in vTelefone varchar(18),
                                     in vSenha varchar(16))
BEGIN
IF ((vNome != '') && (vCpf != '')) THEN
INSERT INTO cad_cliente (nome, cpf, nacionalidade , endereco, email, telefone, senha)
VALUES (vNome, vCpf, vNacionalidade, vEndereco, vEmail, vTelefone, vSenha);
ELSE
SELECT 'NOME e CPF devem ser fornecidos para o cadastro!' AS Msg;
END IF; 
END$$

DELIMITER ;

call sp_InsereCliente("Thiago Alves", "121.562.506-50", "brasileiro","Rua 41","thiago@mg.com.br","(44)1241-2412","tezinha");

USE `hotel_bomsono`;
DROP procedure IF EXISTS `sp_InsereDadosReserva`;

DELIMITER $$
USE `hotel_bomsono`$$
CREATE PROCEDURE `sp_InsereDadosReserva` (in vCliente_id INT, 
										  in vApartamento_id INT, 
										  in vNum_pessoa INT,
										  in vData_entrada DATE,
										  in vData_saida DATE)
BEGIN
IF ((vCliente_id != '') && (vApartamento_id != '')) THEN
INSERT INTO dados_reserva (cliente_id, apartamento_id, num_pessoa , data_entrada, data_saida)
VALUES (vCliente_id, vApartamento_id, vNum_pessoa, vData_entrada, vData_saida);
SELECT '  realizado com sucesso!' AS Msg;
ELSE
SELECT 'Cliente e Apartamento devem ser fornecidos para o cadastro!' AS Msg;
END IF; 

END$$

DELIMITER ;

call sp_InsereDadosReserva(1,1,2,'2016-08-24','2016-08-26');

-- tg_AbrirConta

DELIMITER $$
 
CREATE TRIGGER tg_AbrirConta AFTER INSERT
ON hotel_check_in
FOR EACH ROW
BEGIN
    INSERT INTO hotel_conta  (checkin_id, valor_conta) 
			VALUES (NEW.id, 0);
END$$

DELIMITER ;

--tg_AtualizaConsumoRestaurante

DELIMITER $$
 
CREATE TRIGGER tg_AtualizaConsumoRestaurante AFTER INSERT
ON consumo_restaurante
FOR EACH ROW
BEGIN
declare valor_total decimal(8,2);
	
    IF (NEW.entrega_domicilio = "SIM") THEN 
    SET valor_total = (NEW.valor_unitario * NEW.quantidade) * 1.10;
    ELSE 
		SET valor_total = (NEW.valor_unitario * NEW.quantidade);
    END IF;
    
    UPDATE hotel_conta SET valor_consumido = valor_total
	WHERE reserva_codigo = NEW.reserva_codigo AND NEW.recibo_assinado = "SIM";
END$$

DELIMITER ;

--tg_AtualizaConsumoServico
DELIMITER $$
 
CREATE TRIGGER tg_AtualizaConsumoServico AFTER INSERT
ON consumo_servico
FOR EACH ROW
BEGIN
declare valor_total decimal(8,2);

    SET valor_total = (NEW.valor_unitario * NEW.quantidade) * 1.10;

    UPDATE hotel_conta SET valor_consumido = valor_consumido + valor_total
	WHERE reserva_codigo = NEW.reserva_codigo;
END$$

DELIMITER ;

MARTINS CONSTR




Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar