Normalização e formas normais

Dependências funcionais, fecho, chaves candidatas, cobertura mínima e 1FN a BCNF.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Reconhecer uma DF

X→YX\to Y obriga quaisquer dois tuplos iguais em XX a serem iguais em YY, 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.
  • Y⊆XY\subseteq X torna-a trivial: Produto, Nome → Nome não restringe nada.
  • A justaposição é união: ABAB significa {A,B}\{A,B\}.
  • A→BCA\to BC equivale a A→BA\to B e A→CA\to C; a esquerda não se separa: AB→CAB\to C não dá A→CA\to C.

Armstrong: reflexividade (Y⊆X⇒X→YY\subseteq X\Rightarrow X\to Y), aumento (X→Y⇒XZ→YZX\to Y\Rightarrow XZ\to YZ) e transitividade.

Fecho e candidatas

Para X+X^+: começa em XX e acrescenta direitas de DFs cujas esquerdas já estejam no fecho, até estabilizar. X→YX\to Y vale se Y⊆X+Y\subseteq X^+.

  • Superchave: fecho igual a RR. 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 AB→CAB\to C, C→DC\to D, D→ED\to E em R(A,B,C,D,E)R(A,B,C,D,E): A+=AA^+=A, B+=BB^+=B, C+=CDEC^+=CDE e (AB)+=ABCDE(AB)^+=ABCDE. ABAB é a única candidata; C,D,EC,D,E são não primos.

Que forma normal

Assume 1FN: valores atómicos nos domínios escolhidos, sem grupos repetidos.

FormaTeste para cada DF não trivial X→AX\to A
2FNNenhum não primo depende de parte própria de candidata.
3FNXX é superchave ou AA é primo.
BCNFXX é superchave, sem exceção.

BCNF⇒3FN⇒2FN\mathrm{BCNF}\Rightarrow\mathrm{3FN}\Rightarrow\mathrm{2FN}. Verifica as DFs implicadas, não só as escritas.

  • No exemplo acima, C→DC\to D viola 3FN (CC não é superchave, DD não é primo): está em 2FN.
  • Com AB→CAB\to C e C→BC\to B em ABCABC, as candidatas são ABAB e ACAC e BB é primo: C→BC\to B 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

  1. Parte as direitas num atributo por DF.
  2. Retira atributos dispensáveis à esquerda, confirmando por fechos.
  3. Retira DFs redundantes, calculando o fecho sem a DF testada.

{A→BC,B→C,AB→D}\{A\to BC,B\to C,AB\to D\} dá {A→B,B→C,A→D}\{A\to B,B\to C,A\to D\}: BB é dispensável em AB→DAB\to D e A→CA\to C segue por transitividade. Ordens diferentes dão coberturas diferentes mas equivalentes.

Fechos e classificação desenvolvidos.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.