-- Database: "EmpresaBD"

-- DROP TABLE "projetoempregado";
-- DROP TABLE "dependente";
-- DROP TABLE "empregado";
-- DROP TABLE "departamento";
-- DROP TABLE "projeto";

-- DROP DATABASE "EmpresaBD";

-- CREATE DATABASE "EmpresaBD"
--   WITH OWNER = postgres
--        ENCODING = 'SQL_ASCII'
--        TABLESPACE = pg_default;

-- DROP TABLE "departamento";
CREATE TABLE departamento 
(
    id integer NOT NULL,
    numero integer NOT NULL,
    nome char(20),
    orcamento numeric(20,2),
    locacao char(20),
    CONSTRAINT departamento_pk PRIMARY KEY (id)
);

-- DROP TABLE "empregado";
CREATE TABLE empregado
(
	id integer NOT NULL,
	matricula char(6)  NOT NULL UNIQUE,
	nome varchar(255),
	gerente integer,
	salario float8,
	funcao varchar(255),
	dataAdmissao timestamp,
	idDepartamento integer,
        quantidadeHorasTrabalhadas integer,
	CONSTRAINT empregado_pk PRIMARY KEY (id),
	CONSTRAINT fk1 FOREIGN KEY (gerente) REFERENCES Empregado (id),
	CONSTRAINT fk2 FOREIGN KEY (idDepartamento) REFERENCES Departamento (id)
);

-- DROP TABLE "dependente";
CREATE TABLE dependente
(
	id integer  NOT NULL,
	nome varchar(255) NOT NULL,
	dataNascimento timestamp,
	idEmpregado integer NOT NULL,
	CONSTRAINT dependente_pk PRIMARY KEY (id),
	CONSTRAINT fk1 FOREIGN KEY (idEmpregado) REFERENCES Empregado (id)
);

-- DROP TABLE "projeto";
CREATE TABLE projeto
(
	id integer NOT NULL,
        sigla char(3) NOT NULL,
	nome varchar(50),
	CONSTRAINT projeto_pk PRIMARY KEY (id)
);

-- DROP TABLE "projetoempregado";
CREATE TABLE projetoempregado
(
	idProjeto integer NOT NULL,
	idEmpregado integer NOT NULL,
	CONSTRAINT projeto_empregado_pk PRIMARY KEY (idProjeto, idEmpregado),
	CONSTRAINT fk_projeto FOREIGN KEY (idProjeto) REFERENCES Projeto (id),
	CONSTRAINT fk_empregado FOREIGN KEY (idEmpregado) REFERENCES Empregado (id),
	CONSTRAINT projeto_empregado_unq UNIQUE (idProjeto, idEmpregado)
);

--- Departamento
insert into departamento (id, numero, nome, orcamento, locacao) values (1, 10, 'DCOT-C', 250000, 'OSASCO');
insert into departamento (id, numero, nome, orcamento, locacao) values (2, 20, 'DDS', 10000, 'SAO PAULO');
insert into departamento (id, numero, nome, orcamento, locacao) values (3, 30, 'DPC-D', 300000, 'ALPHA');
insert into departamento (id, numero, nome, orcamento, locacao) values (4, 40, 'TESOURARIA', 60000, 'RIO DE JANEIRO');

--- Projeto
insert into projeto (id, sigla, nome) values (1, 'SAP', 'ERP/SAP-R3' );
insert into projeto (id, sigla, nome) values (2, 'RH8', 'RH/Treinamento 2008' );
insert into projeto (id, sigla, nome) values (3, 'ENG', 'ENG/Usina Belomonte' );

--- Empregado
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (1, '000001', 'Joao Claudio', 2, null, 1200, 'Analista', '01/01/1994', 20);
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (2, '000002', 'Mariai da Luz', 3, null, 650, 'Vendedor', '01/01/1980', 25);
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (3, '000003', 'Pedro Silveira', 4, null, 550, 'Estagiário', '01/01/1980', 20);
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (4, '000004', 'Antônio Freitas', 4, null, 4500, 'Gerente', '01/01/1994', 40);
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (5, '000005', 'Paula Monarque', 1, null, 4500, 'Gerente', '01/01/1994', 10);
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (6, '000006', 'Luis Silva', 4, null, 700, 'Balconista', '01/01/1994', 12);
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (7, '000007', 'Luiza do Nascimento', 4, null, 2600, 'Consultor', '01/01/1994', 15);
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (8, '000008', 'Aline Oliveira', 4, null, 2600, 'Consultor', '01/01/1994', 15);
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (9, '000009', 'Elza Rosa', 4, null, 2600, 'Consultor', '01/01/1994', 15);
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (10, '000010', 'André Albuquerque', 4, null, 2600, 'Consultor', '01/01/1994', 15);
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (11, '000011', 'Humberto Mattoso', 1, null, 4500, 'Gerente', '01/01/1994', 10);
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (12, '000012', 'Jorge Silva', 1, null, 4500, 'Gerente', '01/01/1994', 10);
insert into empregado (id, matricula, nome, idDepartamento, gerente, salario, funcao, dataAdmissao, quantidadeHorasTrabalhadas)
values (13, '000013', 'Alcir Assis', 1, null, 4500, 'Gerente', '01/01/1994', 10);

update empregado set gerente = 4;
update empregado set gerente = 5 where id = '11' ;
update empregado set gerente = 5 where id = '12' ;
update empregado set gerente = 5 where id = '13' ;

--- Dependente
insert into dependente (id, nome, dataNascimento, idEmpregado) values (1, 'Filho1',  '01/01/2004', 1);

insert into dependente (id, nome, dataNascimento, idEmpregado) values (2, 'Filho1',  '01/01/2002', 2);
insert into dependente (id, nome, dataNascimento, idEmpregado) values (3, 'Filho2',  '01/01/2003', 2);

insert into dependente (id, nome, dataNascimento, idEmpregado) values (4, 'Filho1',  '01/02/2002', 3);

insert into dependente (id, nome, dataNascimento, idEmpregado) values (5, 'Filho1',  '01/02/2003', 4);

insert into dependente (id, nome, dataNascimento, idEmpregado) values (6, 'Filho1',  '03/31/2002', 5);

insert into dependente (id, nome, dataNascimento, idEmpregado) values (7, 'Filho1',  '03/30/2003', 6);

insert into dependente (id, nome, dataNascimento, idEmpregado) values (8, 'Filho1',  '08/01/2002', 8);
insert into dependente (id, nome, dataNascimento, idEmpregado) values (9, 'Filho2',  '12/11/2003', 8);

insert into dependente (id, nome, dataNascimento, idEmpregado) values (10, 'Filho1',  '08/01/2002', 9);

insert into dependente (id, nome, dataNascimento, idEmpregado) values (11, 'Filho1',  '11/07/2002', 10);
insert into dependente (id, nome, dataNascimento, idEmpregado) values (12, 'Filho2',  '06/03/2001', 10);
insert into dependente (id, nome, dataNascimento, idEmpregado) values (13, 'Filho3',  '05/21/2000', 10);

insert into dependente (id, nome, dataNascimento, idEmpregado) values (14, 'Filho1',  '11/07/1999', 12);
insert into dependente (id, nome, dataNascimento, idEmpregado) values (15, 'Filho2',  '06/03/2000', 12);
insert into dependente (id, nome, dataNascimento, idEmpregado) values (16, 'Filho3',  '12/10/2001', 12);
insert into dependente (id, nome, dataNascimento, idEmpregado) values (17, 'Filho4',  '04/05/2002', 12);


--- ProjetoEmpregado
insert into projetoempregado (idProjeto, idEmpregado) values (1, 1);
insert into projetoempregado (idProjeto, idEmpregado) values (1, 2);
insert into projetoempregado (idProjeto, idEmpregado) values (1, 3);
insert into projetoempregado (idProjeto, idEmpregado) values (1, 4);

insert into projetoempregado (idProjeto, idEmpregado) values (2, 4);
insert into projetoempregado (idProjeto, idEmpregado) values (2, 5);
insert into projetoempregado (idProjeto, idEmpregado) values (2, 6);
insert into projetoempregado (idProjeto, idEmpregado) values (2, 7);
insert into projetoempregado (idProjeto, idEmpregado) values (2, 8);
insert into projetoempregado (idProjeto, idEmpregado) values (2, 9);
insert into projetoempregado (idProjeto, idEmpregado) values (2, 10);

insert into projetoempregado (idProjeto, idEmpregado) values (3, 5);
insert into projetoempregado (idProjeto, idEmpregado) values (3, 11);
insert into projetoempregado (idProjeto, idEmpregado) values (3, 12);
insert into projetoempregado (idProjeto, idEmpregado) values (3, 13);

