--create database atividade;

-- Criação das tabelas do banco com restrições

--TABELA CLIENTE
create table cliente(
	codcliente serial primary key,
	nome varchar(50) not null,
	rg varchar(15) not null,
	cpf char(14) not null unique,
	codendereco integer not null,
	codsexo integer not null,
	email varchar(60)
);

-- TABELA ENDEREÇO

create table endereco(
	codendereco serial primary key,
	numero varchar(10) not null,
	codcidade integer not null,
	codbairro integer not null,
	codcep integer not null,
	codrua integer not null
);

--TABELA SEXO
create table sexo(
	codsexo serial primary key,
	nomesexo varchar(9) not null unique
);

--TABELA CIDADE
create table cidade(
	codcidade serial primary key,
	nomecidade varchar(50) not null,
	coduf integer not null
);

--TABELA UF
create table uf(
	coduf serial primary key,
	nomeuf varchar(50) not null unique,
	sigla char(2) not null unique
);

--TABELA BAIRRO
create table bairro(
	codbairro serial primary key,
	nomebairro varchar(50) not null unique
);

--TABELA CEP
create table cep(
	codcep serial primary key,
	numerocep char(9) not null unique
);

--TABELA RUA
create table rua(
	codrua serial primary key,
	nomerua varchar(50) not null unique
);

--CRIANDO RESTRIÇÕES - CHAVES ESTRANGEIRAS
alter table cliente ADD CONSTRAINT fk_codendereco FOREIGN KEY (codendereco)
      REFERENCES endereco (codendereco) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE;

alter table cliente ADD CONSTRAINT fk_codsexo FOREIGN KEY (codsexo)
      REFERENCES sexo (codsexo) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE;

alter table endereco ADD CONSTRAINT fk_codcidade FOREIGN KEY (codcidade)
      REFERENCES cidade (codcidade) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE;

alter table endereco ADD CONSTRAINT fk_codbairro FOREIGN KEY (codbairro)
      REFERENCES bairro (codbairro) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE;

alter table endereco ADD CONSTRAINT fk_codcep FOREIGN KEY (codcep)
      REFERENCES cep (codcep) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE;

alter table endereco ADD CONSTRAINT fk_codrua FOREIGN KEY (codrua)
      REFERENCES rua (codrua) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE;

alter table cidade ADD CONSTRAINT fk_coduf FOREIGN KEY (coduf)
      REFERENCES uf (coduf) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE;


-- INSERINDO DADOS NAS TABELAS DO BANCO
-- SEMPRE COMEÇAR POR AQUELAS QUE NÃO POSSUEM DEPENDÊNCIA DE CHAVES

insert into sexo(nomesexo) values ('MASCULINO');
insert into sexo(nomesexo) values ('FEMININO');

insert into uf(nomeuf, sigla) values ('SÃO PAULO','SP');
insert into uf(nomeuf, sigla) values ('MINAS GERAIS','MG');
insert into uf(nomeuf, sigla) values ('GOIÁS','GO');
insert into uf(nomeuf, sigla) values ('MATO GROSSO DO SUL','MS');
insert into uf(nomeuf, sigla) values ('PARANÁ','PR');

insert into bairro(nomebairro) values ('CENTRO');
insert into bairro(nomebairro) values ('MORUMBI');
insert into bairro(nomebairro) values ('SANTA CATARINA');
insert into bairro(nomebairro) values ('JARDIM AEROPORTO');

insert into cep(numerocep) values ('15385-000');
insert into cep(numerocep) values ('19333-100');
insert into cep(numerocep) values ('15379-000');
insert into cep(numerocep) values ('24999-000');

insert into rua(nomerua) values('RUA XV DE OUTUBRO');
insert into rua(nomerua) values('PASSEIO GOIANIA');
insert into rua(nomerua) values('ILHA BELA');
insert into rua(nomerua) values('JOAQUIM MURTINHO');

insert into cidade(nomecidade, coduf) values ('PEREIRA BARRETO',1);
insert into cidade(nomecidade, coduf) values ('ILHA SOLTEIRA',1);
insert into cidade(nomecidade, coduf) values ('ITURAMA',2);
insert into cidade(nomecidade, coduf) values ('GOIANIA',3);
insert into cidade(nomecidade, coduf) values ('TRÊS LAGOAS',4);
insert into cidade(nomecidade, coduf) values ('MARINGÁ',5);

insert into endereco(numero, codcidade, codbairro, codcep, codrua) values
('405',2 ,1 ,2 ,3 );

insert into endereco(numero, codcidade, codbairro, codcep, codrua) values
('100',1 ,2 ,3 ,2 );

insert into endereco(numero, codcidade, codbairro, codcep, codrua) values
('2A',3 ,3 ,2 ,3 );

insert into cliente (nome, rg, cpf, codendereco, codsexo,email) values
('MARCOS ANTONIO ESTREMOTE','30615','277694', 1, 1, 'ESTREMOT@GMAIL.COM');

insert into cliente (nome, rg, cpf, codendereco, codsexo,email) values
('JOSÉ ANTONIO','1212','277694888', 2, 1, 'TESTE@GMAIL.COM');

insert into cliente (nome, rg, cpf, codendereco, codsexo,email) values
('ALINE GALBE','232313','13131', 3, 2, 'ALINE@GMAIL.COM');


