Pular para o conteúdo principal

Questão de Banco de Dados — Geral — FUNDATEC 2026

Banco de DadosGeral
Código
qa433528
Banca
FUNDATEC
Órgão
IFC
Ano
2026
Cargo
PEBTT ( )

Analise o seguinte script SQL:

 

CREATE TABLE DEPARTAMENTO (
 id_depto INT NOT NULL,
 nome VARCHAR(100) NOT NULL,
 _______
);

 

CREATE TABLE FUNCIONARIO (
 id_func INT NOT NULL,
 nome VARCHAR(100) NOT NULL,
 id_depto INT,
 _______,
 _______
);

 

Assinale a alternativa que preenche, correta e respectivamente, o script SQL, garantindo a definição adequada de chave primária e chave estrangeira.

  1. A-- DEPARTAMENTO PRIMARY KEY (id_depto) -- FUNCIONARIO FOREIGN KEY (id_func), PRIMARY KEY (id_depto) REFERENCES DEPARTAMENTO(id_depto)
  2. B-- DEPARTAMENTO FOREIGN KEY (id_depto) FUNCIONARIO PRIMARY KEY (id_func), FOREIGN KEY (id_func) REFERENCES DEPARTAMENTO(id_depto)
  3. C-- DEPARTAMENTO PRIMARY KEY (nome) -- FUNCIONARIO PRIMARY KEY (id_func, id_depto), FOREIGN KEY (id_depto) REFERENCES FUNCIONARIO(id_func)
  4. D-- DEPARTAMENTO PRIMARY KEY (id_depto, nome) -- FUNCIONARIO PRIMARY KEY (id_func), FOREIGN KEY (nome) REFERENCES DEPARTAMENTO(nome)
  5. E-- DEPARTAMENTO PRIMARY KEY (id_depto) -- FUNCIONARIO PRIMARY KEY (id_func), FOREIGN KEY (id_depto) REFERENCES DEPARTAMENTO(id_depto)
Revelar gabarito e comentário

GabaritoE — -- DEPARTAMENTO PRIMARY KEY (id_depto) -- FUNCIONARIO PRIMARY KEY (id_func), FOREIGN KEY (id_depto) REFERENCES DEPARTAMENTO(id_depto)

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Chave primária e chave estrangeira em SQL

Gabarito: letra E. O script correto define PRIMARY KEY (id_depto) na tabela DEPARTAMENTO e, na tabela FUNCIONARIO, PRIMARY KEY (id_func) e FOREIGN KEY (id_depto) REFERENCES DEPARTAMENTO(id_depto). A chave estrangeira em FUNCIONARIO referencia a chave primária de DEPARTAMENTO, estabelecendo o relacionamento entre as tabelas.

A questão exige o conhecimento de dois conceitos fundamentais do modelo relacional: chave primária (PRIMARY KEY) e chave estrangeira (FOREIGN KEY). A chave primária identifica de forma única cada registro de uma tabela, garantindo que não haja duplicidade e que o valor não seja nulo. A chave estrangeira, por sua vez, é uma coluna (ou conjunto de colunas) em uma tabela que referencia a chave primária de outra tabela, criando um vínculo entre os registros das duas tabelas. Esse vínculo é o que materializa os relacionamentos no banco de dados relacional.

No script apresentado, a tabela DEPARTAMENTO possui id_depto como identificador natural — é o campo que deve ser a chave primária. A tabela FUNCIONARIO possui id_func como identificador próprio e id_depto como campo que guarda a referência ao departamento do funcionário. Portanto, id_depto em FUNCIONARIO deve ser definido como chave estrangeira apontando para id_depto de DEPARTAMENTO. A sintaxe correta para isso, dentro do CREATE TABLE, é:

PRIMARY KEY (id_depto)

na tabela DEPARTAMENTO, e na tabela FUNCIONARIO:

PRIMARY KEY (id_func),
FOREIGN KEY (id_depto) REFERENCES DEPARTAMENTO(id_depto)

A ordem das cláusulas dentro do CREATE TABLE não é rígida, mas a referência da chave estrangeira deve apontar para uma coluna que seja chave primária (ou que tenha restrição UNIQUE) na tabela referenciada. No caso, id_depto é a chave primária de DEPARTAMENTO, então a referência está correta.

Um erro comum é inverter os papéis: definir a chave estrangeira em DEPARTAMENTO apontando para FUNCIONARIO, ou referenciar a coluna errada (por exemplo, id_func em vez de id_depto). A banca explora exatamente essa confusão nas alternativas. Outro erro frequente é usar nome como chave primária, o que é inadequado porque nomes podem se repetir e não são identificadores estáveis.

Para fixar: a chave estrangeira sempre fica na tabela que representa o lado "muitos" do relacionamento (ou na tabela que contém a referência), e aponta para a chave primária da tabela "um". No relacionamento entre FUNCIONARIO e DEPARTAMENTO, um departamento pode ter vários funcionários, então a chave estrangeira id_depto fica em FUNCIONARIO.

Critério

Alternativa E (correta)

Alternativas A, B, C, D (incorretas)

Chave primária em DEPARTAMENTO

PRIMARY KEY (id_depto) — correta, identifica unicamente cada departamento

A: correta; B: usa FOREIGN KEY indevidamente; C: usa nome (não único); D: chave composta desnecessária

Chave primária em FUNCIONARIO

PRIMARY KEY (id_func) — correta, identifica unicamente cada funcionário

A: mistura com REFERENCES; B: correta, mas FK errada; C: chave composta desnecessária; D: correta, mas FK errada

Chave estrangeira em FUNCIONARIO

FOREIGN KEY (id_depto) REFERENCES DEPARTAMENTO(id_depto) — correta, referencia a PK da tabela "um"

A: referencia id_func (errado); B: referencia id_func (errado); C: referencia FUNCIONARIO (tabela errada); D: referencia nome (coluna errada)

Relacionamento estabelecido

Funcionário → Departamento (N:1) corretamente modelado

Todos falham em apontar a FK para a PK correta da tabela referenciada

Alternativa A — ❌ Incorreta

Define PRIMARY KEY (id_depto) corretamente em DEPARTAMENTO, mas em FUNCIONARIO coloca FOREIGN KEY (id_func) — o que está errado, pois id_func é a chave primária de FUNCIONARIO, não uma chave estrangeira. Além disso, a linha PRIMARY KEY (id_depto) REFERENCES DEPARTAMENTO(id_depto) mistura duas cláusulas: a chave primária de FUNCIONARIO deveria ser id_func, e a referência estrangeira deveria ser FOREIGN KEY (id_depto) REFERENCES DEPARTAMENTO(id_depto). A alternativa confunde os papéis das colunas.

Alternativa B — ❌ Incorreta

Inverte completamente os conceitos: define FOREIGN KEY (id_depto) em DEPARTAMENTO, quando id_depto é a chave primária dessa tabela. Em FUNCIONARIO, define PRIMARY KEY (id_func) (correto), mas a chave estrangeira FOREIGN KEY (id_func) REFERENCES DEPARTAMENTO(id_depto) referencia id_func — que é a chave primária de FUNCIONARIO — em vez de id_depto. A referência deveria ser FOREIGN KEY (id_depto) REFERENCES DEPARTAMENTO(id_depto). A alternativa troca os papéis de chave primária e estrangeira.

Alternativa C — ❌ Incorreta

Define PRIMARY KEY (nome) em DEPARTAMENTO, o que é inadequado: nomes podem se repetir e não são identificadores únicos confiáveis. Em FUNCIONARIO, define PRIMARY KEY (id_func, id_depto) — uma chave composta desnecessária, pois id_func já é suficiente — e a chave estrangeira FOREIGN KEY (id_depto) REFERENCES FUNCIONARIO(id_func) referencia a tabela errada: deveria referenciar DEPARTAMENTO, não FUNCIONARIO. A alternativa erra tanto na escolha da chave primária quanto na referência da chave estrangeira.

Alternativa D — ❌ Incorreta

Define PRIMARY KEY (id_depto, nome) em DEPARTAMENTO — chave composta desnecessária, pois id_depto já identifica unicamente. Em FUNCIONARIO, define PRIMARY KEY (id_func) (correto), mas a chave estrangeira FOREIGN KEY (nome) REFERENCES DEPARTAMENTO(nome) referencia a coluna nome, que não é chave primária de DEPARTAMENTO (e nem deveria ser). A referência correta seria FOREIGN KEY (id_depto) REFERENCES DEPARTAMENTO(id_depto). A alternativa usa a coluna errada na chave estrangeira.

Alternativa E — ✅ Correta ⟵ GABARITO

Define corretamente PRIMARY KEY (id_depto) em DEPARTAMENTO, e em FUNCIONARIO PRIMARY KEY (id_func) e FOREIGN KEY (id_depto) REFERENCES DEPARTAMENTO(id_depto). A chave estrangeira id_depto em FUNCIONARIO referencia a chave primária id_depto de DEPARTAMENTO, estabelecendo o relacionamento correto entre as tabelas. É exatamente o que o script pede.

NÃO CAIA NESSA!

A banca adora inverter os papéis de chave primária e estrangeira, ou referenciar a coluna errada. Aqui, as alternativas A, B e D trocam id_depto por id_func ou usam nome como chave, induzindo ao erro. Lembre-se: a chave estrangeira fica na tabela que referencia (FUNCIONARIO) e aponta para a chave primária da tabela referenciada (DEPARTAMENTO).

Gabarito: letra E

Link permanente: /questoes/qa433528