Pular para o conteúdo principal

Questão de Banco de Dados — Modelagem e Mapeamento ER-relacional — FGV 2025

Banco de DadosModelagem e Mapeamento ER-relacional
Código
fg169076
Banca
FGV
Órgão
CPRM
Ano
2025
Cargo
Ana Geo ( )

Considere a definição das tabelas “tab1” e “tab2” a seguir:

 

creat table tab1

( a integer primary key, b integer);

creat table tab2

( c integer primary key, d integer unique, e integer references tab1);

 

e a consulta SQL:

 

select b, d from tab1, tab2, where tab1.a = tab2. e;

 

Assinale a opção que indica corretamente uma situação válida acerca desse contexto.

  1. AA conectividade do relacionamento entre as tabelas “tab1” e “tab2” é do tipo um-para-um.
  2. BA criação das tabelas impôs sobre o atributo “d” da tabela “tab2” a restrição de integridade de entidade.
  3. CO grau da relação tab2 é igual a três, pois apresenta três atributos.
  4. DUma ação de otimização da consulta SQL apresentada seria a substituição do produto cartesiano seguida por condição de junção por uma junção externa.
  5. ECom base na teoria do modelo relacional, a chave primária de “tab2” seria a composição dos atributos “c” e “d”, na forma primary key(c,d).
Revelar gabarito e comentário

GabaritoC — O grau da relação tab2 é igual a três, pois apresenta três atributos.

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”.

Modelo Relacional: Chaves, Grau e Junções

Gabarito: letra C. O grau (ou aridade) de uma relação é o número de seus atributos; como a tabela tab2 possui três atributos (c, d e e), seu grau é igual a três. As demais alternativas incorrem em erros conceituais: a chave primária de tab2 é apenas c (o atributo d é uma chave candidata, mas não compõe a chave primária), a restrição unique sobre d impõe integridade de domínio/unicidade (não de entidade), a conectividade do relacionamento é N:1 (muitos para um), e a otimização correta seria usar uma junção interna (INNER JOIN), não uma junção externa.

O modelo relacional representa dados como relações (tabelas), onde cada linha é uma tupla e cada coluna é um atributo. O grau de uma relação é simplesmente a quantidade de atributos que ela possui — um conceito puramente estrutural, independente do número de linhas. No caso, tab2 foi definida com três colunas: c, d e e. Portanto, seu grau é 3. Essa é uma definição clássica e direta, frequentemente cobrada em provas de banco de dados.

A chave primária é o atributo (ou conjunto de atributos) que identifica unicamente cada tupla. Na definição de tab2, a chave primária é declarada explicitamente como c. O atributo d possui a restrição unique, o que o torna uma chave candidata (uma alternativa à chave primária), mas isso não o torna parte da chave primária. A chave primária é uma escolha dentre as chaves candidatas — e aqui a escolha foi c. A alternativa E sugere que a chave primária seria a composição (c, d), o que é incorreto: não há necessidade de compor a chave, pois c já é suficiente para identificar cada tupla de forma única.

A restrição unique sobre d garante que não haja valores duplicados nesse atributo, mas isso é uma restrição de unicidade (ou integridade de domínio, no sentido de que os valores devem ser distintos), não uma restrição de integridade de entidade. A integridade de entidade é a regra que estabelece que a chave primária não pode conter valores nulos e deve ser única — ela se aplica à chave primária c, não ao atributo d. A alternativa B confunde esses dois conceitos.

O relacionamento entre tab1 e tab2 é estabelecido pela chave estrangeira e em tab2, que referencia a chave primária a de tab1. Como e não possui restrição unique, várias tuplas de tab2 podem referenciar a mesma tupla de tab1. Isso caracteriza um relacionamento N:1 (muitos para um): para cada registro em tab1, pode haver vários registros correspondentes em tab2. A alternativa A afirma que a conectividade é 1:1, o que seria verdadeiro apenas se e também fosse único — o que não é o caso.

A consulta SQL apresentada usa um produto cartesiano seguido de uma condição de junção (WHERE tab1.a = tab2.e). Essa é a forma clássica de implementar uma junção interna (INNER JOIN). A otimização correta seria substituir o produto cartesiano + condição por uma junção interna explícita (INNER JOIN ... ON), que é semanticamente equivalente, mas permite ao otimizador do SGBD escolher melhores estratégias de execução. A alternativa D sugere usar uma junção externa (OUTER JOIN), que preservaria tuplas sem correspondência — o que mudaria o resultado da consulta, não sendo uma otimização válida.

Guarde a distinção entre chave primária (escolhida para identificar a tupla) e chave candidata (qualquer atributo único que poderia ser chave primária), e entre grau (número de atributos) e cardinalidade (número de tuplas). É exatamente nessas fronteiras que as alternativas se dividem.

Critério

tab1

tab2

Atributos definidos

a (PK), b

c (PK), d (UNIQUE), e (FK → tab1.a)

Grau (nº de atributos)

2

3

Chave primária

a

c (apenas)

Chave candidata adicional

d (por ser UNIQUE)

Restrição de integridade de entidade

Aplicada a a (PK)

Aplicada a c (PK), não a d

Papel na consulta SQL

Tabela da esquerda na junção (tab1.a = tab2.e)

Tabela da direita na junção; e é FK que referencia tab1.a

Alternativa A — ❌ Incorreta

Afirma que a conectividade entre tab1 e tab2 é um-para-um (1:1). Isso só ocorreria se a chave estrangeira e em tab2 tivesse restrição unique, garantindo que cada registro de tab2 se relacionasse com no máximo um registro de tab1 e vice-versa. Como e não é único, o relacionamento é N:1 (muitos para um): várias tuplas de tab2 podem referenciar a mesma tupla de tab1. A banca explora a confusão entre a cardinalidade do relacionamento e a ausência de unicidade na chave estrangeira.

Alternativa B — ❌ Incorreta

Afirma que a restrição unique sobre d impõe integridade de entidade. A integridade de entidade é a regra que garante que a chave primária seja única e não nula — ela se aplica a c, não a d. A restrição unique sobre d impõe unicidade (valores não repetidos), que é uma propriedade de chave candidata, mas não é a integridade de entidade. A alternativa troca o conceito de integridade de entidade pelo de unicidade de um atributo não-chave.

Alternativa C — ✅ Correta ⟵ GABARITO

O grau (ou aridade) de uma relação é o número de atributos que ela possui. A tabela tab2 foi definida com três atributos: c, d e e. Portanto, seu grau é igual a três. Essa é a definição formal do modelo relacional: o grau é uma propriedade estrutural da relação, independente do número de tuplas (linhas) que ela contém. A alternativa está correta ao afirmar que o grau de tab2 é três.

Alternativa D — ❌ Incorreta

Afirma que a otimização da consulta seria substituir o produto cartesiano + condição por uma junção externa. A consulta SELECT b, d FROM tab1, tab2 WHERE tab1.a = tab2.e é semanticamente equivalente a uma junção interna (INNER JOIN), que retorna apenas as combinações de tuplas que satisfazem a condição. Uma junção externa (LEFT, RIGHT ou FULL OUTER JOIN) preservaria tuplas sem correspondência, alterando o resultado da consulta. A otimização correta seria usar INNER JOIN ... ON, que é equivalente e permite melhor planejamento de execução pelo SGBD.

Alternativa E — ❌ Incorreta

Afirma que a chave primária de tab2 seria a composição (c, d). A chave primária foi declarada explicitamente como c na definição da tabela. O atributo d possui restrição unique, o que o torna uma chave candidata (uma alternativa à chave primária), mas isso não o torna parte da chave primária. A chave primária é uma escolha dentre as chaves candidatas — e aqui a escolha foi c, que já é suficiente para identificar unicamente cada tupla. Não há necessidade de compor a chave com d.

Gabarito: letra C

Link permanente: /questoes/fg169076