Exercícios
Use os comandos DDL para criar o projeto físico do seguinte modelo relacional:
Resolução
--CREATE TABLE CANDIDATO_FUNCIONARIO
CREATE TABLE CANDIDATO_FUNCIONARIO(
cod_indicacao NUMBER(5),
matricula NUMBER(5),
cod_candidato NUMBER(5),
dt_indicacao DATE
);
--ADICIONANDO AS CONSTRAINTS
ALTER TABLE CANDIDATO_FUNCIONARIO ADD CONSTRAINT cod_indicacao_pk PRIMARY KEY (cod_indicacao);
ALTER TABLE CANDIDATO_FUNCIONARIO ADD CONSTRAINT matricula_fk FOREIGN KEY (matricula) REFERENCES FUNCIONARIO(matricula);
ALTER TABLE CANDIDATO_FUNCIONARIO ADD CONSTRAINT cod_candidato_fk FOREIGN KEY (cod_candidato) REFERENCES CANDIDATO(cod_candidato);
ALTER TABLE CANDIDATO_FUNCIONARIO MODIFY dt_indicacao NOT NULL;
--CREATE TABLE CANDIDATO
CREATE TABLE CANDIDATO (
cod_candidato NUMBER(5),
nome VARCHAR2(60),
cpf NUMBER(11)
);
--ADICIONANDO AS CONSTRAINTS
ALTER TABLE CANDIDATO ADD CONSTRAINT cod_candidato_pk PRIMARY KEY(cod_candidato);
ALTER TABLE CANDIDATO MODIFY nome NOT NULL;
ALTER TABLE CANDIDATO MODIFY cpf NOT NULL;
--CREATE TABLE INSCRICAO
CREATE TABLE INSCRICAO (
nr_inscricao NUMBER(5),
cod_candidato NUMBER(5),
cod_cargo NUMBER(4),
dt_inscricao DATE
);
--ADICIONANDO AS CONSTRAINTS
ALTER TABLE INSCRICAO ADD CONSTRAINT nr_inscricao_pk PRIMARY KEY (nr_inscricao);
ALTER TABLE INSCRICAO ADD CONSTRAINT INSC_cod_candidato_fk FOREIGN KEY (cod_candidato) REFERENCES CANDIDATO(cod_candidato);
ALTER TABLE INSCRICAO ADD CONSTRAINT INSC_cod_cargo_fk FOREIGN KEY (cod_cargo) REFERENCES CARGO(cod_cargo);
ALTER TABLE INSCRICAO MODIFY dt_inscricao NOT NULL;
--CREATE TABLE TESTE
CREATE TABLE TESTE (
cod_teste NUMBER(6),
cod_processo NUMBER(6),
cod_cargo NUMBER(4),
nr_inscricao NUMBER(5),
dt_teste DATE,
nota NUMBER(4,2)
);
--ADICIONANDO AS CONSTRAINTS
ALTER TABLE TESTE ADD CONSTRAINT TESTE_cod_teste_pk PRIMARY KEY (cod_teste);
ALTER TABLE TESTE ADD CONSTRAINT TESTE_cod_processo_fk FOREIGN KEY (cod_processo) REFERENCES PROCESSO_SELETIVO(cod_processo);
ALTER TABLE TESTE ADD CONSTRAINT TESTE_cod_cargo_fk FOREIGN KEY (cod_cargo) REFERENCES CARGO(cod_cargo);
ALTER TABLE TESTE ADD CONSTRAINT TESTE_nr_inscricao_fk FOREIGN KEY (nr_inscricao) REFERENCES INSCRICAO(nr_inscricao);
ALTER TABLE TESTE MODIFY dt_teste NOT NULL;
--CREATE TABLE CARGO
CREATE TABLE CARGO (
cod_cargo NUMBER(4),
desc_cargo VARCHAR2(30)
);
--ADICIONANDO AS CONSTRAINTS
ALTER TABLE CARGO ADD CONSTRAINT CARGO_cod_cargo_pk PRIMARY KEY (cod_cargo);
ALTER TABLE CARGO MODIFY desc_cargo NOT NULL;
--CREATE TABLE FUNCIONARIO
CREATE TABLE FUNCIONARIO (
matricula NUMBER(5),
cod_depto NUMBER(4),
cod_cargo NUMBER(4),
Gerente NUMBER(5),
nome VARCHAR2(60),
cpf NUMBER(11),
rg CHAR(15)
);
--ADICIONANDO AS CONSTRAINTS
ALTER TABLE FUNCIONARIO ADD CONSTRAINT FUNC_matricula_pk PRIMARY KEY (matricula);
ALTER TABLE FUNCIONARIO ADD CONSTRAINT FUNC_cod_depto_fk FOREIGN KEY (cod_depto) REFERENCES DEPARTAMENTO(cod_depto);
ALTER TABLE FUNCIONARIO ADD CONSTRAINT FUNC_cod_cargo_fk FOREIGN KEY (cod_cargo) REFERENCES CARGO(cod_cargo);
ALTER TABLE FUNCIONARIO ADD CONSTRAINT FUNC_Gerente_fk FOREIGN KEY (Gerente) REFERENCES FUNCIONARIO(matricula);
ALTER TABLE FUNCIONARIO MODIFY nome NOT NULL;
ALTER TABLE FUNCIONARIO MODIFY cpf NOT NULL;
ALTER TABLE FUNCIONARIO MODIFY rg NOT NULL;
--CREATE TABLE DEPARTAMENTO
CREATE TABLE DEPARTAMENTO (
cod_depto NUMBER(4),
desc_depto VARCHAR2(30)
);
--ADICIONANDO AS CONSTRAINTS
ALTER TABLE DEPARTAMENTO ADD CONSTRAINT DEPT_cod_depto_pk PRIMARY KEY (cod_depto);
ALTER TABLE DEPARTAMENTO MODIFY desc_depto NOT NULL;
--CREATE TABLE PROCESSO_SELETIVO
CREATE TABLE PROCESSO_SELETIVO (
cod_processo NUMBER(6),
desc_processo VARCHAR2(80)
);
--ADICIONANDO AS CONSTRAINTS
ALTER TABLE PROCESSO_SELETIVO ADD CONSTRAINT PS_cod_processo_pk PRIMARY KEY (cod_processo);
ALTER TABLE PROCESSO_SELETIVO MODIFY desc_processo NOT NULL;
- Criar um índice para a coluna nome data tabela funcionário
CREATE INDEX IX_NOME_FUNC ON FUNCIONARIO(nome);
- Criar um índice para a coluna NOTA e DT_TESTE da tabela pessoa TESTE
CREATE INDEX IX_NOME_DT_TESTE_FUNC ON TESTE(NOTA, DT_TESTE);
- Criar um índice único para a coluna CPF da tabela CANDIDADTO
CREATE UNIQUE INDEX IX_CPF_CANDIDATO ON CANDIDATO(CPF);
Exclusão das tabelas: