Dependências funcionais e normalização

Fechos, chaves candidatas, 3FN e BCNF, com decomposições sem perda e preservação de dependências.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Dependências, fechos e chaves

X→YX\to Y exige que quaisquer duas linhas válidas iguais em X sejam iguais em Y. Vem das regras do domínio; uma amostra pode refutar uma dependência, mas não provar que vale em todos os dados futuros. É trivial se Y⊆XY\subseteq X.

Armstrong permite reflexividade, aumento e transitividade. O fecho X+X^+ começa em X e acrescenta atributos pelas dependências até estabilizar.

  • X é superchave se X+X^+ contém todos os atributos.
  • É chave candidata se, além disso, nenhum subconjunto próprio é superchave.
  • Um atributo é primo se pertence a alguma chave candidata, não apenas à primária escolhida.

Em R(aluno, uc, docente, sala), só com uc → docente e docente → sala, uc⁺ não contém aluno. A única chave candidata é (aluno,uc).

Formas normais

Considera todas as dependências inferidas das regras declaradas.

FormaCondição
1FNCada posição guarda um valor do domínio, sem grupos repetidos que escondam várias linhas.
2FN1FN e nenhum atributo não primo depende de parte própria de uma chave candidata.
3FNPara cada DF não trivial X→AX\to A, X é superchave ou A é primo.
BCNFPara cada DF não trivial X→YX\to Y, X é superchave.

No exemplo, uc → docente viola 2FN. A decomposição matricula(aluno,uc), uc(uc,docente), docente(docente,sala) fica em BCNF sob as regras dadas.

Sem perda e preservação

  • Sem perda: juntar as projeções de uma relação válida recupera exatamente os tuplos originais, sem combinações espúrias.
  • Numa decomposição binária sob DFs, a condição necessária e suficiente é a interseção determinar todos os atributos de uma das relações.
  • Preserva dependências: as DFs projetadas permitem impor as regras originais sem junção.

Em R(A,B,C) com AB → C e C → B, as chaves são AB e AC. Está em 3FN porque B é primo, mas não em BCNF porque C não é superchave. Separar CB e AC é sem perda, mas não preserva AB → C: regras locais podem aceitar (c1,b1),(c2,b1) em CB e (a1,c1),(a1,c2) em AC, cuja junção viola essa DF.

Procedimento

  1. Declara atributos e DFs autorizadas.
  2. Calcula todas as chaves e atributos primos.
  3. Identifica a DF que viola a forma pedida.
  4. Decompõe e justifica ausência de perda e preservação separadamente.

Uma PK artificial não elimina anomalias de atualização, inserção ou eliminação. Desnormalização exige medir o benefício e manter dados derivados em todos os caminhos de escrita. Um preço histórico e um preço atual representam factos diferentes.

Decomposição completa.

À 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.