Normalização e formas normais
Dependências funcionais, fecho, chaves candidatas, cobertura mínima e 1FN a BCNF.
Reconhecer uma DF
obriga quaisquer dois tuplos iguais em a serem iguais em , em todas as instâncias válidas, incluindo dados futuros.
- Uma amostra refuta uma DF com um contraexemplo; nunca a prova. Nomes distintos na tabela não provam nada; dois produtos “Rato” com ids diferentes refutam
nomeProduto → idProduto. - torna-a trivial:
Produto, Nome → Nomenão restringe nada. - A justaposição é união: significa .
- equivale a e ; a esquerda não se separa: não dá .
Armstrong: reflexividade (), aumento () e transitividade.
Fecho e candidatas
Para : começa em e acrescenta direitas de DFs cujas esquerdas já estejam no fecho, até estabilizar. vale se .
- Superchave: fecho igual a . Candidata: superchave mínima por inclusão. Primo: pertence a alguma candidata.
- Atributos que nunca aparecem à direita de DFs não triviais pertencem a todas as candidatas; testa os seus fechos e extensões, descartando supersets de candidatas achadas.
Com , , em : , , e . é a única candidata; são não primos.
Que forma normal
Assume 1FN: valores atómicos nos domínios escolhidos, sem grupos repetidos.
| Forma | Teste para cada DF não trivial |
|---|---|
| 2FN | Nenhum não primo depende de parte própria de candidata. |
| 3FN | é superchave ou é primo. |
| BCNF | é superchave, sem exceção. |
. Verifica as DFs implicadas, não só as escritas.
- No exemplo acima, viola 3FN ( não é superchave, não é primo): está em 2FN.
- Com e em , as candidatas são e e é primo: passa em 3FN mas viola BCNF.
- Em
Venda(encomenda, produto, nomeProduto, qtd), o nome depende só do produto: dependência parcial que repete o nome e viola 2FN. Separa Produto de Item.
Reduzir a cobertura
- Parte as direitas num atributo por DF.
- Retira atributos dispensáveis à esquerda, confirmando por fechos.
- Retira DFs redundantes, calculando o fecho sem a DF testada.
dá : é dispensável em e segue por transitividade. Ordens diferentes dão coberturas diferentes mas equivalentes.