Pergunta

Digamos que R tenha os seguintes atributos:{A,B,C,D,E} e possui as seguintes dependências funcionais:

A -> BC
CD -> E
B -> D
E -> A

E há uma decomposição que consiste em R1(A,B,C) e R2(A,D,E).Como posso calcular as dependências funcionais de R1 e R2?

A questão real do dever de casa me pergunta se R1/R2 está em BCNF/3NF/nenhum, mas eu já sei como fazer essa parte (veja se o lado esquerdo dos FD está contido nas chaves candidatas).

Foi útil?

Solução

O truque é pensar nos FDs como chaves definidoras, não no esquema fornecido, mas nas PROJEÇÕES dele.

Por exemplo, no seu esquema inicial {ABCDE}, o FD A -> BC diz que A ({A}, na verdade) constitui uma chave nesta tabela, projetada até {ABC}.Ou seja, a união de LHS e RHS do FD define qual projeção, e o LHS define a chave dessa projeção.

Agora vá para a versão decomposta, na qual você tem dois distintos tabelas (esquemas) {ABC} e {ADE}.

Seu primeiro e último FD ainda podem ser expressos nesses esquemas.O primeiro FD no primeiro esquema/tabela e o último no último.

Mas os dois restantes tornaram-se inexprimíveis (inexprimível COMO UM FD, isto é) por causa da decomposição.O que isso significa, para o design geral do banco de dados, é que você terá que declarar/definir/implementar uma restrição de banco de dados que diga e faça exatamente a mesma coisa que o FD original.(A receita geral para fazer isso é a seguinte:reconstitua a tabela original juntando novamente as decomposições, projete essas uniões nos atributos mencionados e aplique a chave nessa projeção.Conseguir isso não será exatamente trivial para casos como estes exercícios do curso.)

A decisão se R1/R2 estão ou não em xNF deve agora ser feita considerando apenas aqueles dos FDs originais que ainda são expressáveis ​​(a->BC).

Suponho que você deva chegar à conclusão de que R1 está em 3/BC NF e R2 ainda não está.

Exemplos como esses (e a maioria dos exercícios do curso são dessa natureza) na verdade ilustram o quão ridiculamente enfatizado é o conceito de normalização no campo do design de banco de dados.O que importa é o quadro geral que inclui TODOS as restrições que se aplicam ao banco de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top