FC ConcursosFC Concursos

Questão FC369614

João está encarregado de criar uma tabela em PostgreSQL para gerenciar informações sobre funcionários e seus supervisores, com base na seguinte representação lógica da entidade “Fu

Sistema de Gerenciamento de Banco de Dados (SGBD)

FGV · 2024

João está encarregado de criar uma tabela em PostgreSQL para gerenciar informações sobre funcionários e seus supervisores, com base na seguinte representação lógica da entidade “Funcionario”:

 

 

Para tanto, João deverá criar o “autorrelacionamento” entre funcionários e seus supervisores, considerando que nem todo funcionário possui supervisor.

 

Para isso, João deverá utilizar o seguinte script SQL:

  1. CREATE TABLE Funcionario (

            idFuncionario SERIAL PRIMARY KEY,

            nome VARCHAR (100) NOT NULL,

            cargo VARCHAR (100),

            idSupervisor INT,

          FOREIGN KEY (idSupervisor) REFERENCES Funcionario

       (idFuncionario));

  2. CREATE TABLE Funcionario (

             idFuncionario SERIAL PRIMARY KEY,

             nome VARCHAR (100) NOT NULL,

             cargo VARCHAR (100),

             idSupervisor INT,

             FOREIGN KEY (idFuncionario) REFERENCES Funcionario

         (idSupervisor));

  3. CREATE TABLE Funcionario (

             idFuncionario SERIAL PRIMARY KEY,

             nome VARCHAR (100) NOT NULL,

             cargo VARCHAR (100),

             idSupervisor SERIAL,

             FOREIGN KEY (idSupervisor) REFERENCES Funcionario

          (idFuncionario));

  4. CREATE TABLE Funcionario (

             idFuncionario SERIAL PRIMARY KEY,

             nome VARCHAR (100) NOT NULL,

             cargo VARCHAR (100),

             idSupervisor SERIAL,

             FOREIGN KEY (idFuncionario) REFERENCES Funcionario

         (idSupervisor));

  5. CREATE TABLE Funcionario (

             idFuncionario SERIAL PRIMARY KEY,

             nome VARCHAR (100) NOT NULL,

             cargo VARCHAR (100),

             idSupervisor INT NOT NULL,

             FOREIGN KEY (idSupervisor) REFERENCES Funcionario

         (idFuncionario));

Mostrar resposta e comentário

Gabarito

A

Comentário do professor

O script cria corretamente um autorrelacionamento entre registros da mesma tabela ao definir idSupervisor como chave estrangeira que referencia idFuncionario na própria tabela.

SERIAL em idFuncionario gera uma sequência automática, e a declaração PRIMARY KEY garante unicidade e não nulidade desse identificador.

idSupervisor INT é deixado sem NOT NULL, permitindo que um funcionário não tenha supervisor (valor NULL) — necessário para cargos de topo da hierarquia.

A cláusula FOREIGN KEY (idSupervisor) REFERENCES Funcionario(idFuncionario) impõe a integridade referencial: qualquer idSupervisor informado deve existir como idFuncionario em outra linha (ou ser NULL).

Assim, cada registro pode apontar para outro registro como seu supervisor, modelando hierarquias internas de forma correta e segura.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo