Questão nº 46
Questão de Tecnologia da Informação · FGV TJ-AP 2024 (nº 46)
Considere uma tabela relacional com atributos (colunas) A, B, C, D e E, na qual as dependências funcionais conhecidas são:
A -> B
A -> C
A -> D
D -> E
O comando de criação dessa tabela é mostrado a seguir.
```sql
create table X(A int, B int, C int, D int, E int,
constraint K1 unique (A),
constraint K2 unique (D)
)
```
De acordo com as formas normais Primeira, Segunda, Terceira e Boyce-Codd, a dependência funcional adicional necessária e suficiente para a validade desse esquema é:
- AA -> E;
- BA, D -> E;
- CD -> A; (alternativa correta)
- DD -> B, C, D;
- EE -> A.
Resposta comentada
Gabarito Alternativa C
Uma dependência funcional (DF) ocorre quando o valor de um ou mais atributos (o lado esquerdo da DF) determina unicamente o valor de outro(s) atributo(s) (o lado direito). Uma chave candidata é um atributo ou conjunto mínimo de atributos que identifica unicamente cada registro em uma tabela, o que significa que ele determina todos os outros atributos da tabela.
Análise das DFs existentes e das constraints UNIQUE:
As dependências funcionais dadas são: A -> B, A -> C, A -> D, D -> E.
As constraints UNIQUE indicam que A e D são chaves candidatas.
constraint K1 unique (A)implica queAé uma chave candidata, ou seja,Adeve determinar todos os outros atributos:A -> B, C, D, E.- Das DFs dadas:
A -> B,A -> C,A -> D. - De
A -> DeD -> E, podemos derivarA -> Epor transitividade. - Portanto,
Ajá é uma chave candidata com as DFs dadas.
- Das DFs dadas:
constraint K2 unique (D)implica queDé uma chave candidata, ou seja,Ddeve determinar todos os outros atributos:D -> A, B, C, E.- Das DFs dadas:
D -> E. - Para que
Dseja uma chave candidata, precisamos queD -> A,D -> BeD -> Ctambém sejam verdadeiras. - Atualmente,
D -> Anão é derivável das DFs dadas. SeD -> Afosse adicionada, entãoD -> B(viaA -> B) eD -> C(viaA -> C) também seriam deriváveis.
- Das DFs dadas:
Portanto, a DF D -> A é a dependência funcional adicional necessária e suficiente para que D seja uma chave candidata, validando a constraint K2 unique (D).
- (A) Incorreta:
A -> Ejá é derivável das DFs dadas (A -> DeD -> Epor transitividade), portanto não é uma dependência adicional necessária. - (B) Incorreta:
A, D -> Eé uma DF redundante, poisD -> Ejá é uma DF dada (o lado esquerdoDjá determinaE, então adicionarAnão torna a DF mais "necessária"). - (C) Correta:
D -> Aé a dependência funcional adicional necessária para queDseja uma chave candidata (conforme indicado pela constraintK2 unique (D)). SemD -> A,Dnão pode determinarA(e, consequentemente,BeCviaA) com base nas DFs iniciais. ComD -> A,DdeterminaA,B,CeE, tornando-o uma chave candidata válida. - (D) Incorreta:
D -> B, C, Dnão é a dependência mais fundamental.D -> Dé trivial.D -> B, Cseria derivável seD -> Afosse estabelecida. A questão pede a dependência adicional necessária e suficiente, eD -> Aé a peça-chave que permite a derivação deD -> BeD -> C. Esta alternativa é mais abrangente do que o estritamente necessário e direto. - (E) Incorreta:
E -> Anão é implicada por nenhuma das constraintsUNIQUEe não é necessária para validar as chavesAouD. Adicioná-la introduziria uma nova chave candidata (E) que não é declarada no esquema.
Fonte: FGV TJ-AP 2024 Analista Judiciário - TI - Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.