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:
- CREATE TABLE Funcionario (
idFuncionario SERIAL PRIMARY KEY,
nome VARCHAR (100) NOT NULL,
cargo VARCHAR (100),
idSupervisor INT,
FOREIGN KEY (idSupervisor) REFERENCES Funcionario
(idFuncionario));
- CREATE TABLE Funcionario (
idFuncionario SERIAL PRIMARY KEY,
nome VARCHAR (100) NOT NULL,
cargo VARCHAR (100),
idSupervisor INT,
FOREIGN KEY (idFuncionario) REFERENCES Funcionario
(idSupervisor));
- CREATE TABLE Funcionario (
idFuncionario SERIAL PRIMARY KEY,
nome VARCHAR (100) NOT NULL,
cargo VARCHAR (100),
idSupervisor SERIAL,
FOREIGN KEY (idSupervisor) REFERENCES Funcionario
(idFuncionario));
- CREATE TABLE Funcionario (
idFuncionario SERIAL PRIMARY KEY,
nome VARCHAR (100) NOT NULL,
cargo VARCHAR (100),
idSupervisor SERIAL,
FOREIGN KEY (idFuncionario) REFERENCES Funcionario
(idSupervisor));
- 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