No contexto do projeto de bancos de dados relacionais, cons...
A -> B A -> C B -> A B -> D
Assinale o conjunto de constraints que devem ser aplicadas à tabela referida, de modo que a mesma atenda plenamente às formas normais.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - CONSTRAINT XPTO1 UNIQUE (A) CONSTRAINT XPTO2 UNIQUE (B)
Neste contexto, o aluno deve dominar os conceitos de dependências funcionais e de normalização de bancos de dados relacionais. As dependências funcionais informadas ("A -> B", "A -> C", "B -> A", "B -> D") indicam quais colunas são determinadas unicamente por outras colunas. Para que uma tabela esteja bem normalizada, ou seja, atenda às formas normais, é necessário que as chaves identifiquem de maneira única os registros sem redundância ou dependências indesejadas.
As formas normais são regras que guiam a estruturação de tabelas de forma a minimizar redundâncias e dependências, evitando assim problemas com inconsistência, atualização, inserção e deleção de dados. A primeira forma normal (1NF) exige que os valores nas tabelas sejam atômicos (sem grupos repetitivos ou arrays). A segunda forma normal (2NF) requer que a tabela esteja na 1NF e que todos os atributos não-chave dependam integralmente de uma chave candidata. A terceira forma normal (3NF) exige que a tabela esteja na 2NF e que não existam dependências funcionais transitivas de atributos não-chave em relação a qualquer chave candidata.
Com base nas dependências funcionais fornecidas, percebe-se que tanto "A" quanto "B" podem funcionar como chaves para os outros atributos, indicando uma relação de interdependência. Por "A" determinar "B" e "C" e "B" determinar "A" e "D", cada um desses atributos ("A" e "B"), por si só, é suficiente para identificar um registro único na tabela. Portanto, para atender às formas normais, basta definir restrições de unicidade (UNIQUE) tanto para "A" quanto para "B".
Isso é feito na alternativa correta através da criação de duas constraints de unicidade, o que impõe que os valores de "A" e "B" sejam únicos em todo o conjunto de registros da tabela. Dessa forma, se um novo registro tentar inserir um valor de "A" ou "B" já existente, isso violaria a constraint e o sistema de gerenciamento de banco de dados (SGBD) rejeitaria essa inserção, garantindo a integridade dos dados conforme as dependências funcionais declaradas.
Esta é a configuração que mais apropriadamente reflete as dependências funcionais e assegura que a tabela esteja de acordo com as formas normais requeridas, explicando assim por que a alternativa C está correta.
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
A dependência funcional X -> Y significa que, se t1[X] = t2[X], então t1[Y] = t2[Y], onde t1 e t2 são duas tuplas com os atributos X e Y, Ou seja, se o valor de X em uma tupla for o mesmo que em outra tupla, então o valor de Y em ambas as duplas deverá ser igual.
Na relação apresentada, o atributo A determina funcionalmente B, C e D (transitivamente, porque A -> B e B -> D). Por sua vez, o atributo B determina funcionalmente A, C (transitivamente, porque B -> A e A -> C) e D.
Vamos considerar um exemplo:
Exemplo 1 - A = {1, 1, 2, 3, 3, 2, 4}, B = {João, João, Maria, José, José, Maria, Ana}, C = {Triângulo, Triângulo, Quadrado, Triângulo, Triângulo, Quadrado, Triângulo} e D = {Prego, Prego, Parafuso, Prego, Prego, Parafuso, Parafuso}
Observa-se um problema. A e B determinam os demais atributos, portanto poderiam ser a chave primária da relação. No entanto, eles se repetem. Para que elas possam ser chave primária, precisamos usar a restrição de valor único para ambos os atributos, conforme o exemplo abaixo:
Exemplo 2 - A = {1, 2, 3, 4}, B = {João, Maria, José, Ana}, C = {Triângulo, Quadrado, Triângulo, Triângulo} e D = {Prego, Parafuso e Prego, Parafuso}
Gabarito: C
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo