Banco de Dados Avançados Banco de Dados Ativo



Documentos relacionados
Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

Introdução ao SQL. Aécio Costa

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Bancos de Dados I. Integridade semântica

Sistemas de Informação

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

PHP INTEGRAÇÃO COM MYSQL PARTE 1

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

A linguagem SQL

(1,n) venda. (1,1) realizacao. cliente. (0,n) (1,1) contem. produto. Laboratório de Banco de Dados Exercicios

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Comandos de Manipulação

BANCO DE DADOS I. Exercícios

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Relatório. Projecto de Base de Dados Parte 2. Turno: quinta-feira, 11:30 Grupo 25: André Gonçalves Rui Barradas Hélton Miranda 68477

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Centro Universitário Franciscano

Sistema de Controle de Estoque

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

Oracle 10g: SQL e PL/SQL

SQL. Definição do Esquema da Base de Dados. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

SQL Gatilhos (Triggers)

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Disciplina de Banco de Dados Parte V

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Structured Query Language (SQL) Aula Prática

Tarefa Orientada 19 Triggers

Gerenciamento de Dados e Informação Fernando Fonseca. Graduação

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

SQL: Definição de tabelas, Modificações à Base de Dados

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Solução do segundo exercício proposto REDE DE HOTÉIS

MANUAL INSTALAÇÃO WEB SERVICE


Prova de Fundamentos de Bancos de Dados 2 a Prova

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

Linguagem de Consulta - SQL

1. Domínio dos Atributos

Programação SQL. Introdução

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

Projeto de Banco de Dados: Empresa X

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Linguagem SQL. Comandos Básicos

Logado no OracleXE vamos acessar a opção:

AULA 6 INTEGRIDADOS DOS DADOS - CRIANDO RESTRIÇÕES

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Usando PostgreSQL na Regra de Negócio de um ERP. Fabiano Machado Dias Eduardo Wolak

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

Disciplina: Unidade V: Prof.: Período:

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

Banco de Dados. Arquitetura e Terminologia. Prof. Walteno Martins Parreira Jr waltenomartins@yahoo.

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

Operação de União JOIN

Linguagem SQL (Parte II)

SQL. Autor: Renata Viegas

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Aplicações - SQL. Banco de Dados: Teoria e Prática. André Santanchè e Luiz Celso Gomes Jr Instituto de Computação UNICAMP Agosto de 2013

SQL (Structured Query Language)

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

Triggers no PostgreSQL

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Comandos DDL. id_modulo = id_m odulo

4.6. SQL - Structured Query Language

SQL (Structured Query Language)

Linguagem SQL (Parte I)

SQL (Structured Query Language)

SQL Structured Query Language

JDBC. Prof. Márcio Bueno

SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL

Linguagem SQL Sub-linguagem DDL

UNIVERSIDADE FEDERAL DO MARANHÃO - UFMA. Banco de Dados II. Integridade. Carlos Eduardo Portela Serra de Castro

Correção da 1a Prova de GBD1 2009/2. Profa. Sandra de Amo

Linguagem SQL Parte I

PL/pgSQL por Diversão e Lucro

Prof.: Clayton Maciel Costa

Introdução à linguagem SQL

SQL DDL Criando Tabelas e Restrições

Banco de Dados I. Linguagem de Consulta (parte II) Recuperando Dados de Várias Tabelas (JOINS)

SQL DDL. Frederico D. Bortoloti

BANCO DE DADOS CONCEITOS BÁSICOS

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

SQL. Prof. Márcio Bueno.

Capitulo 2. Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

DESENVOLVIMENTO DE SOFTWARE

Prova de Fundamentos de Bancos de Dados 2 a Prova

Transcrição:

Universidade Federal de Pernambuco Centro de Informática Banco de Dados Avançados Banco de Dados Ativo Equipe: Felipe Cavalcante Fernando Kakimoto Marcos Corrêa

Sumário 1. Mini-Mundo... 3 1.1 Entidades... 3 1.2 Relacionamentos... 3 1.3 Objetivos... 4 2. Modelagem Conceitual... 4 3. Esquema Relacional... 5 4. Implementação... 5 4.1 Criação de tabelas... 5 4.2 Criação da view... 7 4.3 Criação dos triggers... 7

1. Mini-Mundo O projeto da disciplina será desenvolvido a partir das necessidades básicas de um hotel, visando tornar mais fácil e rápido o acesso e o gerenciamento dos dados referentes ao mesmo. Assim, as atividades diárias realizadas poderão ser registradas e recuperadas de uma maneira mais eficiente e com um melhor desempenho que o sistema tradicional de arquivos. A seguir, é feita uma descrição das entidades, seus relacionamentos e seus respectivos atributos, do projeto a ser desenvolvido, assim como seus objetivos. 1.1 Entidades Hóspede: corresponde a entidade do hóspede hotel, sendo ele identificado pelo cpf e tendo como atributos nome, telefone e o número de visitas realizadas. CPF NOME TELEFONE VISITAS Suíte: corresponde aos aposentos do hotel, sendo identificado pelo seu número e tendo como atributos o tipo, o valor e um indicador de ocupado ou desocupado. NÚMERO TIPO VALOR OCUPADO Funcionário: corresponde a entidades de funcionário do hotel, sendo identificado por ser cpf e tendo como atributos o nome, função realizada, telefone salário. CPF NOME FUNCAO TELEFONE SALARIO 1.2 Relacionamentos Reserva: relacionamento existente entre hóspedes, que se hospedam no hotel, e os funcionários que anotam a reserva. Esta relação é identificada por um identificador próprio e possui como atributos o cpf do hóspede, o cpf do funcionário, o numero da suíte reservada e as datas final e inicial da reserva. ID HOSPEDE_CPF FUNCIONARIO_CPF NUMERO_SUITE DATA_INICIAL DATA_FINAL Estadia: relacionamento entre hóspedes do hotel e suas suítes. Esta relação é identificada por um identificador próprio e tem como atributos o cpf do hospede, numero da suíte onde o hóspede se hospedou, datas de chegada e saída do hotel e a conta final. ID HOSPEDE_CPF FUNCIONARIO_CPF CONTA DATA_INICIAL DATA_FINAL

Serviço: relacionamento entre o funcionário e a suíte do hotel. Esta relação é identificada com um identificador próprio e tem como atributos o numero da suíte que pediu o serviço, o funcionário que o realizou, o valor do serviço e a sua data. ID NOME FUNCIONARIO_CPF NUMERO_SUITE VALOR DATA 1.3 Objetivos De acordo com o mostrado anteriormente, busca-se automatizar o cadastro de reservas, funcionários, hóspedes e suítes, além de controlar e recuperar dados de contas parciais, suítes ocupadas e serviços prestados em todo o ambiente hoteleiro. Ou seja, estar-se-á melhorando a eficiência e o desempenho tanto o aspecto gerencial, quanto o operacional das atividades do hotel. 2. Modelagem Conceitual A seguir é mostrado o modelo Entidade-Relacional do projeto com todas as entidades e atributos, assim como seus relacionamentos.

3. Esquema Relacional A seguir, é mostrado o modelo Relacional do projeto a ser desenvolvido. Na figura, estão as entidades e relações citadas anteriormente, além das suas respectivas chaves primárias e secundárias. 4. Implementação Para a implementação do projeto, utilizou-se a padrão da linguagem SQL e o Banco de Dados Oracle, na versão 10. Segue abaixo o código SQL utilizado: 4.1 Criação de tabelas --Tabela de suites CREATE TABLE TBSUITE ( NUMERO NUMBER NOT NULL, TIPO VARCHAR2(20) NULL, VALOR FLOAT NULL, OCUPADO CHARACTER(1) NULL, PRIMARY KEY (NUMERO)

--Tabela de funcionarios CREATE TABLE TBFUNCIONARIO ( CPF VARCHAR2(11) NOT NULL, NOME VARCHAR2(50) NULL, CARGO VARCHAR2(20) NULL, SALARIO FLOAT NULL, TELEFONE VARCHAR2(15) NULL, PRIMARY KEY (CPF) --Tabela de hóspedes CREATE TABLE TBHOSPEDE ( CPF VARCHAR2(11) NOT NULL, NOME VARCHAR2(50) NULL, TELEFONE VARCHAR2(15) NULL, VISITAS NUMBER NOT NULL, PRIMARY KEY (CPF) --Tabela de estadias CREATE TABLE TBESTADIA ( ID_ESTADIA NUMBER NOT NULL, NUMERO_SUITE NUMBER NULL, HOSPEDE_CPF VARCHAR2(11) NULL, CHEGADA DATE NULL, SAIDA DATE NULL, CONTA FLOAT NULL, PRIMARY KEY (ID_ESTADIA), FOREIGN KEY (NUMERO_SUITE) REFERENCES TBSUITE (NUMERO), FOREIGN KEY (HOSPEDE_CPF) REFERENCES TBHOSPEDE (CPF) --Tabela de reservas CREATE TABLE TBRESERVA ( ID_RESERVA NUMBER NOT NULL, HOSPEDE_CPF VARCHAR2(11) NULL, FUNCIONARIO_CPF VARCHAR2(11) NULL, NUMERO_SUITE NUMBER NULL, CHEGADA DATE NULL, SAIDA DATE NULL, PRIMARY KEY (ID_RESERVA), FOREIGN KEY (HOSPEDE_CPF) REFERENCES TBHOSPEDE (CPF), FOREIGN KEY (FUNCIONARIO_CPF) REFERENCES TBFUNCIONARIO (CPF), FOREIGN KEY (NUMERO_SUITE) REFERENCES TBSUITE (NUMERO)

--Tabela de serviços CREATE TABLE TBSERVICO ( ID_SERVICO NUMBER, NOME VARCHAR2 (15), NUMERO_SUITE NUMBER, FUNCIONARIO_CPF VARCHAR2(11), DIA DATE, VALOR FLOAT, PRIMARY KEY (ID_SERVICO), FOREIGN KEY (NUMERO_SUITE) REFERENCES TBSUITE (NUMERO), FOREIGN KEY (FUNCIONARIO_CPF) REFERENCES TBFUNCIONARIO (CPF) 4.2 Criação da view --View para uso da cláusula INSTEAD OF create view reservas as select id_reserva, hospede_cpf, funcionario_cpf, numero_suite, chegada, saida from tbreserva; 4.3 Criação dos triggers -- Trigger que antes de inserir uma estadia, atualiza a suíte informando que ela está ocupada. create or replace trigger insertestadia before insert on tbestadia update tbsuite set ocupado = 'S' where numero = :new.numero_suite; -- Trigger que depois de atualizar a saida de uma estadia, atualiza a suite informando que ela está desocupada. create or replace trigger updateestadia after update of saida on tbestadia referencing new as n old as o when(n.saida is not null) declare valorsuite number, dias integer; update tbsuite set ocupado = 'N' where numero = :n.numero_suite;

-- Trigger que antes de deletar uma estadia, atualiza a suíte informando que ela está desocupada; create or replace trigger deleteestadia before delete on tbestadia update tbsuite set ocupado = 'N' where numero = :old.numero_suite; -- Trigger que depois de inserir uma estadia, verifica se todas as suites estão ocupadas, se isto acontecer, ela atualiza o salario dos funcionários dando um aumento de 10% no seu salario. create or replace trigger gratificacao after insert on tbestadia declare total number; ocupados number; select count(numero) into ocupados from tbsuite where ocupado = 'S'; select count(numero) into total from tbsuite; if(total = ocupados) then update tbfuncionario set salario = salario*1.1; end if; -- Trigger que depois de inserir um serviço, atualiza o valor da conta do hóspede adicionando o valor do serviço a conta. create or replace trigger insertservico after insert on tbservico declare valorservico float; valorservico := :new.valor; update tbestadia set conta = conta + valorservico where numero_suite = :new.numero_suite;

--Trigger que antes de deletar um serviço, atualiza o valor da conta do hóspede diminuindo o valor do serviço a conta. create or replace trigger deleteservico before delete on tbservico declare valorservico float; valorservico := :old.valor; update tbestadia set conta = conta - valorservico where numero_suite = :old.numero_suite; --View de reservas para criação do trigger com instead of. create view reservas as select id_reserva, hospede_cpf, funcionario_cpf, numero_suite, chegada, saida from tbreserva; --Trigger que em vez de inserir uma reserva, verifica se ela utrapassou o limite de reservas estipulado pelo hotel, se não estrapolou o limite ela insere a reserva. create or replace trigger insertreserva instead of insert on reservas declare total number; select count(id_reserva) into total from tbreserva; if (total < 3) then insert into tbreserva values(:new.id_reserva, :new.hospede_cpf, :new.funcionario_cpf, :new.numero_suite, :new.chegada, :new.saida end if;