-- alterações cargo
ALTER TABLE Cargo ADD PRIMARY KEY (Cod_Cargo);
ALTER TABLE Cargo ALTER COLUMN Nome_Cargo SET NOT NULL;
ALTER TABLE Cargo ADD CONSTRAINT un_nome_cargo UNIQUE (Nome_Cargo);
ALTER TABLE Cargo ADD CONSTRAINT chk_nome_cargo CHECK (Nome_Cargo IN ('Prefeito', 'Vereador'));
ALTER TABLE Cargo ALTER COLUMN Qtde_Vagas SET DEFAULT 9;
ALTER TABLE Cargo ALTER COLUMN Qtde_Vagas SET NOT NULL;
-- alterações partido
ALTER TABLE Partido ADD PRIMARY KEY (Num_Partido);
ALTER TABLE Partido ALTER COLUMN Sigla SET NOT NULL;
ALTER TABLE Partido ALTER COLUMN Nome SET NOT NULL;
ALTER TABLE Partido ADD CONSTRAINT un_sigla UNIQUE (Sigla);
ALTER TABLE Partido ADD CONSTRAINT un_nome UNIQUE (Nome);
ALTER TABLE Partido RENAME COLUMN Dt_Criacao TO Dt_Constituicao;
-- alterações candidato
ALTER TABLE Candidato ADD PRIMARY KEY (Num_Cand);
ALTER TABLE Candidato ALTER COLUMN Nome SET NOT NULL;
ALTER TABLE Candidato ADD CONSTRAINT chk_maioridade CHECK (Dt_Nasc <= CURRENT_DATE - INTERVAL '18 years');
ALTER TABLE Candidato ALTER COLUMN Sexo SET DEFAULT 'Masculino';
-- alterações voto
ALTER TABLE Voto ALTER COLUMN Cod_Cargo SET NOT NULL;
ALTER TABLE Voto ALTER COLUMN Num_Cand SET NOT NULL;
ALTER TABLE Voto RENAME COLUMN Cod_Cargo TO Codigo_Cargo;
-- alterações pessoa
ALTER TABLE Pessoa ADD CONSTRAINT un_titulo UNIQUE (titulo);
ALTER TABLE Pessoa ALTER COLUMN Nome SET NOT NULL;
ALTER TABLE Pessoa ALTER COLUMN Comparecimento TYPE BOOLEAN USING (Comparecimento = 'SIM');
ALTER TABLE Pessoa ALTER COLUMN Comparecimento SET DEFAULT FALSE;
ALTER TABLE Pessoa ADD COLUMN Dt_Nasc DATE NOT NULL;
ALTER TABLE Pessoa RENAME TO Eleitor;
-- inserções de teste
INSERT INTO Cargo (Nome_Cargo, Qtde_Vagas) VALUES ('Prefeito', 1);
INSERT INTO Cargo (Nome_Cargo, Qtde_Vagas) VALUES ('Vereador', 9);
INSERT INTO Partido VALUES (15, 'PT', 'Partido dos Trabalhadores', '2000-05-10');
INSERT INTO Partido VALUES (45, 'PSDB', 'Partido da Social Democracia Brasileira', '1990-09-15');
INSERT INTO Candidato VALUES (100, 'Lucas Matos', '1990-02-03', 'Masculino');
INSERT INTO Candidato VALUES (101, 'Ana Lúcia', '1985-06-15', 'Feminino');
INSERT INTO Voto VALUES (1, 100);
INSERT INTO Voto VALUES (1, 101);
INSERT INTO Eleitor VALUES ('123456789012', 'João Gabiel', false, '2000-01-01');
INSERT INTO Eleitor VALUES ('987654321098', 'Mariana', true, '2002-07-14');
-- consultas
SELECT * FROM Cargo;
SELECT * FROM Partido;
SELECT * FROM Candidato;
SELECT * FROM Voto;
SELECT * FROM Eleitor;