João precisa criar um esquema normalizado para a tabela R, q...

Próximas questões
Com base no mesmo assunto
Q2398333 Banco de Dados
João precisa criar um esquema normalizado para a tabela R, que contém cinco colunas, que não admitem valores nulos, como ilustrado no esquema abaixo.

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, é: 
Alternativas

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