SQL Пример

CREATE TABLE TB_FUNCIONARIO (
    CPF VARCHAR(11) NOT NULL,
    DATA_NASCIMENTO DATE NOT NULL,
    PRIMEIRO_NOME VARCHAR(100) NOT NULL,
    NOME_MEIO VARCHAR(100) NOT NULL,
    ULTIMO_NOME VARCHAR(100) NOT NULL,
    ENDERECO VARCHAR(250) NOT NULL,
    SALARIO DOUBLE PRECISION NOT NULL,
    SEXO VARCHAR(1) NOT NULL,
    CPF_SUPERVISOR VARCHAR(11) NOT NULL,
    NUMERO_DEPARTAMENTO INT NOT NULL,
    PRIMARY KEY (CPF)
);

CREATE TABLE TB_DEPARTAMENTO (
    NUMERO_DEPARTAMENTO INT NOT NULL,
    DATA_INICIO_GERENTE DATE NOT NULL,
    NOME_DEPARTAMENTO VARCHAR(50) NOT NULL,
    CPF_GERENTE VARCHAR(11) NOT NULL,
    PRIMARY KEY (NUMERO_DEPARTAMENTO)
);

CREATE TABLE TB_LOCALIZACOES_DEPARTAMENTOS (
    LOCAL VARCHAR(50) NOT NULL,
    NUMERO_DEPARTAMENTO INT NOT NULL,
    PRIMARY KEY (LOCAL, NUMERO_DEPARTAMENTO)
);

CREATE TABLE TB_PROJETO (
    NUMERO_PROJETO INT NOT NULL,
    NOME_PROJETO VARCHAR(50) NOT NULL,
    LOCAL_PROJETO VARCHAR(50) NOT NULL,
    NUMERO_DEPARTAMENTO INT NOT NULL,
    PRIMARY KEY (NUMERO_PROJETO)
);

CREATE TABLE TB_TRABALHA_EM (
    CPF_FUNCIONARIO VARCHAR(11) NOT NULL,
    NUMERO_PROJETO INT NOT NULL,
    HORAS INT NOT NULL,
    PRIMARY KEY (CPF_FUNCIONARIO, NUMERO_PROJETO)
);

CREATE TABLE TB_DEPENDENTE (
    CPF_FUNCIONARIO VARCHAR(11) NOT NULL,
    NOME_DEPENDENTE VARCHAR(100) NOT NULL,
    SEXO VARCHAR(1) NOT NULL,
    DATA_NASCIMENTO DATE NOT NULL,
    PARENTESCO VARCHAR(50) NOT NULL,
    PRIMARY KEY (CPF_FUNCIONARIO, NOME_DEPENDENTE)
);

ALTER TABLE TB_FUNCIONARIO ADD CONSTRAINT tb_funcionario_tb_funcionario_fk
FOREIGN KEY (CPF_SUPERVISOR)
REFERENCES TB_FUNCIONARIO (CPF)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE TB_DEPENDENTE ADD CONSTRAINT tb_funcionario_tb_dependente_fk
FOREIGN KEY (CPF_FUNCIONARIO)
REFERENCES TB_FUNCIONARIO (CPF)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE TB_TRABALHA_EM ADD CONSTRAINT tb_funcionario_tb_trabalha_em_fk
FOREIGN KEY (CPF_FUNCIONARIO)
REFERENCES TB_FUNCIONARIO (CPF)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE TB_DEPARTAMENTO ADD CONSTRAINT tb_funcionario_tb_departamento_fk
FOREIGN KEY (CPF_GERENTE)
REFERENCES TB_FUNCIONARIO (CPF)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE TB_FUNCIONARIO ADD CONSTRAINT tb_departamento_tb_funcionario_fk
FOREIGN KEY (NUMERO_DEPARTAMENTO)
REFERENCES TB_DEPARTAMENTO (NUMERO_DEPARTAMENTO)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE TB_PROJETO ADD CONSTRAINT tb_departamento_tb_projeto_fk
FOREIGN KEY (NUMERO_DEPARTAMENTO)
REFERENCES TB_DEPARTAMENTO (NUMERO_DEPARTAMENTO)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE TB_LOCALIZACOES_DEPARTAMENTOS ADD CONSTRAINT tb_departamento_tb_localizacoes_departamentos_fk
FOREIGN KEY (NUMERO_DEPARTAMENTO)
REFERENCES TB_DEPARTAMENTO (NUMERO_DEPARTAMENTO)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE TB_TRABALHA_EM ADD CONSTRAINT tb_projeto_tb_trabalha_em_fk
FOREIGN KEY (NUMERO_PROJETO)
REFERENCES TB_PROJETO (NUMERO_PROJETO)
ON DELETE NO ACTION
ON UPDATE NO ACTION;Copiar código
Important Ibis