Questão nº 40
Questão de Tecnologia da Informação · FGV STN 2024 (nº 40)
Com referência à normalização de bancos de dados, considere uma tabela relacional T, com colunas C, H, N, P, na qual as dependências funcionais identificadas são exibidas a seguir.
```
C -> H
C -> P
C -> N
P -> C
```
O comando SQL utilizado na criação dessa tabela é exibido a seguir.
```sql
create table T (
C int not null unique,
H int null unique,
P int null unique,
N int not null
)
```
Assinale a dependência funcional adicional necessária para que o esquema acima esteja de acordo com a forma normal Boyce-Codd.
- AC, H, P -> N
- BH -> P (alternativa correta)
- CN -> P
- DN -> H
- EP, H -> C
Resposta comentada
Gabarito Alternativa B
Conceito-chave: A Forma Normal Boyce-Codd (FNBC) exige que toda dependência funcional (regra onde um conjunto de colunas determina outro) tenha como lado esquerdo uma superchave (coluna ou conjunto que identifica unicamente a linha). No seu exemplo, C e P são chaves candidatas (cada uma identifica a linha sozinha), mas a tabela atual tem uma coluna H que é unique e não é chave — isso viola a FNBC se H determinar algo.
- (A) Incorreta:
C, H, P -> Né redundante, poisCjá determinaNsozinho; adicionar isso não corrige a violação deHnão ser chave. - (B) Correta: A tabela atual tem
Hcomounique, mas sem dependência funcional saindo deH. Para queHseja uma superchave (e a tabela fique em FNBC), precisamos queHdetermine algo — e a única opção que tornaHuma chave sem conflitar com as regras existentes éH -> P. Assim,Hpassa a ser chave candidata e toda dependência terá lado esquerdo superchave. - (C) Incorreta:
N -> Pfaria deNuma chave, masNénot nulle nãouniqueno SQL; além disso, isso criaria uma dependência transitiva desnecessária e não resolve o problema deH. - (D) Incorreta:
N -> Htambém faria deNuma chave, mas o SQL não defineNcomounique; e isso não elimina a violação original (a dependênciaP -> Cjá é válida, masHcontinua sem papel de chave). - (E) Incorreta:
P, H -> Cé redundante, poisPjá determinaCsozinho; adicionar isso não tornaHuma chave, apenas cria uma dependência composta desnecessária.
Armadilha da banca (no distrator mais tentador, a letra A): O aluno vê que C já determina N e pensa que adicionar C, H, P -> N "completa" a chave primária composta. Mas isso é inútil: a FNBC não pede para "aumentar" chaves existentes, e sim para garantir que todo determinante seja chave. Como H é unique mas não determina nada, a única forma de sanar a violação é criar uma dependência que saia de H — exatamente o que a letra B faz.
Fonte: FGV STN 2024 Auditor Federal de Finanças e Controle - Tecnologia da Informação (Operação e Infraestrutura) (Caderno Tipo 1). Reproduzida para fins de estudo.