---------------------------------------------
	-- Criar Tabelas e Relacionamentos
---------------------------------------------
CREATE TABLE HOSPEDE (
	codHospede 				SERIAL NOT NULL,
	nome 					VARCHAR(50),
	cidade 					VARCHAR(50),
	dataNasc				DATE,
	PRIMARY KEY				(codHospede)
);

CREATE TABLE ATENDENTE (
	codAtendente 			SERIAL NOT NULL,
	codSuperior 			INTEGER NOT NULL,
	nome 					VARCHAR(50),
	PRIMARY KEY				(codAtendente),
	FOREIGN KEY				(codSuperior) REFERENCES ATENDENTE (codAtendente)
);

CREATE TABLE HOSPEDAGEM (
	codHospedagem 			SERIAL NOT NULL,
	codAtendente 			INTEGER NOT NULL,
	codHospede 				INTEGER NOT NULL,
	dataEntrada				DATE,
	dataSaida				DATE,
	numQuarto 				INTEGER,
	valorDiaria 			DECIMAL(9,2),
	PRIMARY KEY				(codHospedagem),
	FOREIGN KEY				(codHospede) REFERENCES HOSPEDE (codHospede),
	FOREIGN KEY				(codAtendente) REFERENCES ATENDENTE (codAtendente)
);

CREATE TABLE ESTADO (
	codEstado				INTEGER UNIQUE NOT NULL,
	uf						CHAR(2) NOT NULL,
	PRIMARY KEY				(codEstado)
);

CREATE TABLE CIDADE (
	codCidade				INTEGER UNIQUE NOT NULL,
	nome 					VARCHAR(50) NOT NULL,
	codEstado				INTEGER NOT NULL,
	PRIMARY KEY				(codCidade),
	FOREIGN KEY				(codEstado) REFERENCES ESTADO (codEstado)
);

CREATE TABLE NOME (
	codNome					INTEGER UNIQUE NOT NULL,
	nome					VARCHAR(50) NOT NULL,
	dataNascimento 			DATE,
	PRIMARY KEY				(codNome)
);

---------------------------------------------
	-- Index para performance
	-- http://www.postgresql.org/docs/9.3/static/sql-createindex.html
---------------------------------------------

CREATE INDEX IFK_Rel_01 ON ATENDENTE (codSuperior);
CREATE INDEX IFK_Rel_02 ON HOSPEDAGEM (codHospede);
CREATE INDEX IFK_Rel_03 ON HOSPEDAGEM (codAtendente);
CREATE INDEX IFK_Rel_04 ON ESTADO (codEstado);
CREATE INDEX IFK_Rel_05 ON CIDADE (codCidade);
CREATE INDEX IFK_Rel_06 ON NOME (codNome);
