João precisa criar um esquema normalizado para a tabela R, q...
R (A, B, C, D, E)
Sobre essas colunas (ou atributos), João levantou as dependências funcionais seguintes.
A -> B B -> C C -> D D -> E D -> A
Dentre os esquemas SQL esboçados por João, o que melhor representa a tabela R, com suas restrições, é:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a A.
Vamos entender o porquê.
A questão aborda a normalização de bancos de dados, um processo fundamental para evitar redundâncias e inconsistências nos dados. Nesse contexto, João precisa criar um esquema normalizado para a tabela R, que possui cinco colunas (A, B, C, D, E), seguindo as dependências funcionais levantadas. Vamos analisar cada alternativa com base nessas dependências.
As dependências funcionais são:
- A → B
- B → C
- C → D
- D → E
- D → A
Alternativa A:
create table R (A int not null unique, B int not null unique, C int not null unique, D int not null unique, E int not null )
Esta alternativa **é a correta** porque define todas as colunas como not null, garantindo que não haja valores nulos,
o que está em conformidade com o enunciado. Além disso, a restrição unique garante a unicidade dos valores em cada coluna,
respeitando as dependências funcionais mencionadas.
Alternativa B:
create table R (A int not null, B int not null, C int not null, D int not null, E int not null, primary key (A, B, C, D))
Esta alternativa está incorreta porque define uma chave primária composta por A, B, C e D, mas não considera todas as dependências funcionais,
especialmente D → E e D → A. Além disso, o esquema proposto não está normalizado adequadamente.
Alternativa C:
create table R1 (A int not null, B int not null, C int not null, D int not null, primary key (A, B, C, D)); create table R2 (D int not null unique, E int not null)
Esta alternativa está incorreta porque divide a tabela R em duas tabelas R1 e R2. Embora isso possa resolver algumas dependências funcionais,
ainda não garante que todas as relações sejam devidamente tratadas e normalizadas. A estrutura proposta não é a mais adequada para este cenário.
Alternativa D:
create table R1 (A int not null unique, B int not null unique, C int not null unique, D int not null unique); create table R2 (D int not null unique, E int not null)
Esta alternativa está incorreta porque, assim como a alternativa B, define D como unique em duas tabelas diferentes, o que não resolve as dependências funcionais corretamente.
Além disso, não existe uma chave primária clara que suporte todas as dependências funcionais.
Alternativa E:
create table R1 (A int not null unique, B int not null unique, C int not null unique); create table R2 (D int not null unique, E int not null)
Esta alternativa está incorreta porque não aborda todas as colunas e dependências funcionais de forma adequada.
Dividir a tabela R em R1 e R2 não resolve todas as relações necessárias.
Entender a normalização e as dependências funcionais é essencial para criar esquemas de banco de dados eficientes e consistentes. A alternativa A é a que melhor representa a tabela R com suas restrições, garantindo a integridade e a unicidade dos dados conforme exigido.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Não é o item D? Pelo que vi, mais de um valor em D pode corresponder a um mesmo valor em E, mas a modelagem no item A não permite isso, colocando E como unique.
Essa questão me pega pela falta de informação, ainda mais em um assunto que NÃO é tão consolidado como teoria relacional. Porque algumas alternativas exibem a PK e outras não? As que não exibem é para assumir que todas colunas formam a PK? E as alternativas com 2 tables, é para assumir que existe um constraint de FK entre colunas homônimas?
E a explicação da resposta também estou esperando. O Gemini prefere a alternativa D por eliminar redundâncias e corrigir a dependência circular A>D, D>A.
✅Gabarito(A)
Então; uma dica é que a FGV gosta de cobrar a normalização na forma Boyce-Codd.
- Nessa Forma Normal, todo determinante deve ser uma chave candidata. Quais são os determinantes? A, B, C e D. Veja que E não é um determinante, assim não é uma chave candidata.
- Como determinar uma chave candidata? Principalmente em se tratando de FGV, define-se um determinante com o UNIQUE. Assim torna a coluna uma possível chave candidata, ou seja, ela não poderá ter seus valores repetidos.
A alternativa correta é a letra A, onde somente o E não é uma possível chave candidata, pois ele não determina nenhuma outra coluna e pode possuir valores repetidos.
Só nas minhas anotações têm umas 6 questões sobre esse assunto. Muito cobrado pelo FGV.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo