1 / 40

SCC0141 - Bancos de Dados e Suas Aplicações

SCC0141 - Bancos de Dados e Suas Aplicações. Prof. Jose Fernando Rodrigues Junior Normalização – parte 3 Forma Normal de Boyce Codd. Forma Normal de Boyce Codd. FNBC. A FNBC: versão mais restritiva da 3a. Forma Normal Maioria dos casos, relação na 3a.FN satisfaz à FNBC

grady
Download Presentation

SCC0141 - Bancos de Dados e Suas Aplicações

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SCC0141 - Bancos de Dados e Suas Aplicações Prof. Jose Fernando Rodrigues Junior Normalização – parte 3 Forma Normal de Boyce Codd

  2. Forma Normal de BoyceCodd

  3. FNBC • A FNBC: versão mais restritiva da 3a. Forma Normal • Maioria dos casos, relação na 3a.FN satisfaz à FNBC • Uma relação está na Forma Normal de Boyce Codd (FNBC) quando: • para toda dependência funcional XA, X é uma chave candidata

  4. FNBC • A FNBC: versão mais restritiva da 3a. Forma Normal • Maioria dos casos, relação na 3a.FN satisfaz à FNBC • Uma relação está na Forma Normal de Boyce Codd (FNBC) quando: • para toda dependência funcional XA, X é uma chave candidata • Lembrando: • 3ª. FN: está na 2ª. FN e atributos comuns não dependem transitivamente de qualquer chave candidata.

  5. FNBC • Normalização: • considere as DFs em que o lado esquerdo não é chave candidata • transforme cada uma destas DFs em uma nova relação • retire os correspondentes atributos (lado direito das DFs) da relação original Refaça os exemplos de outras aulas e dos exercícios

  6. FNBC • A FNBC foi proposta após a proposição das formas normais 2ª. e 3ª  trata-se de uma versão mais abrangente surgida naturalmente • Aplicar a FNBC em uma relação que já está em 1ª. FN é suficiente para se alcançar a 2ª. FN e a 3ª. FN • Pode-se prosseguir com o processo de normalização usando-se apenas duas formas normais: • 1ª. FN, seguida da FNBC

  7. FNBC • Se já esta na 3ª. FN, a violação da FNBC é rara e ocorre apenas se: • Existe mais do que uma chave candidata • Existem pelo menos duas chaves candidatas compostas • Existe intersecção entre chaves compostas • Visualmente • AB C • DFs: {A, B}  C e C  B • {A, B} é uma chave candidata, qual é a outra? • Por pseudo-transitividade: • Se AB  C e CB  AC  B • A outra chave candidata é {A, C}

  8. FNBC • Se já esta na 3ª. FN, a violação da FNBC é rara e ocorre apenas se: • Existe mais do que uma chave candidata • Existem pelo menos duas chaves candidatas compostas • Existe intersecção entre chaves compostas • Visualmente • AB C • DFs: {A, B}  C e C  B • {A, B} é uma chave candidata, qual é a outra? • Por pseudo-transitividade: • Se AB  C e CB  AC  B • A outra chave candidata é {A, C} Na maior parte dos casos, se a relação está na 3ª. FN, então ela também está na FNBC, mas... Uma relação que está na 3ª. FN não estará na FNBC se existir uma DF X  A tal que X não é chave candidata (mas é primo) e A é um atributo primo. (Se X não é atributo primo, a normalização até a 3ª. FN já eliminou o problema)

  9. FNBC • Exemplo: suponha um domínio em que assistentes especiais são designados a alunos com problemas de desempenho: • um aluno só pode ter um único assistente por disciplina; • um assistente só pode auxiliar uma única disciplina, mas pode auxiliar vários alunos. • Ensino = {Aluno, Disciplina, Assistente} • DFs: • {Aluno, Disciplina}  Assistente • Assistente  Disciplina • Por pseudo-transitividade: • {Aluno, Assistente}  Disciplina

  10. FNBC • Dependências funcionais: • {Aluno, Disciplina}  Assistente • Assistente  Disciplina • Por pseudo-transitividade: • {Aluno, Assistente}  Disciplina • 1ª. FN  Ok, sem atributos multi-valorados nem compostos • 2ª. FN  Ok, não primos sem dependência parcial da chave • 3ª. FN  Ok, não primos sem dependência transitiva da chave

  11. FNBC • Dependências funcionais: • {Aluno, Disciplina}  Assistente • Assistente  Disciplina • Por pseudo-transitividade: • {Aluno, Assistente}  Disciplina • 1ª. FN  Ok, sem atributos multi-valorados nem compostos • 2ª. FN  Ok, não primos sem dependência parcial da chave • 3ª. FN  Ok, não primos sem dependência transitiva da chave • FNBC  Não ok, pois apesar da dependência funcional • Assistente  Disciplina • Assistente não é uma chave candidata

  12. FNBC • Observando a relação, pode-se notar a presença de redundância nos atributos Disciplina e Assistente • Como normalizar? • Três opções: • {Aluno, Assistente} e {Aluno, Disciplina} • {Aluno, Disciplina} e {Disciplina, Assistente} • {Aluno, Assistente} e {Assistente, Disciplina}

  13. FNBC • Observando a relação, pode-se notar a presença de redundância nos atributos Disciplina e Assistente • Como normalizar? • Três opções: • {Aluno, Assistente} e {Aluno, Disciplina} • {Aluno, Disciplina} e {Disciplina, Assistente} • {Aluno, Assistente} e {Assistente, Disciplina}  Todas as três satisfazem à FNBC, mas apenas uma é correta

  14. FNBC • Observando a relação, pode-se notar a presença de redundância nos atributos Disciplina e Assistente • Como normalizar? • Três opções: • {Aluno, Assistente} e {Aluno, Disciplina} • {Aluno, Disciplina} e {Disciplina, Assistente} • {Aluno, Assistente} e {Assistente, Disciplina}  Todas as três satisfazem à FNBC, mas apenas uma é correta • Interpretação das DFs: • {Aluno, Disciplina}  Assistente: um aluno não pode cursar a mesma disciplina duas vezes • Assistente  Disciplina: um assistente só pode auxiliar em uma única disciplina • {Aluno, Assistente}  Disciplina: um aluno não pode cursar duas disciplinas com um mesmo assistente

  15. FNBC • Três opções: • {Aluno, Assistente} e {Aluno, Disciplina} • {Aluno, Disciplina} e {Disciplina, Assistente} • {Aluno, Assistente} e {Assistente, Disciplina}

  16. FNBC • Três opções: • {Aluno, Assistente} e {Aluno, Disciplina} • {Aluno, Disciplina} e {Disciplina, Assistente} • {Aluno, Assistente} e {Assistente, Disciplina} Opção errada, pois a redundância dos dados foi mantida ao mesmo tempo em que a quantidade de dados armazenados aumentou  piorou o problema

  17. FNBC • Três opções: • {Aluno, Assistente} e {Aluno, Disciplina} • {Aluno, Disciplina} e {Disciplina, Assistente} • {Aluno, Assistente} e {Assistente, Disciplina} Opção errada, pois a redundância dos dados foi mantida ao mesmo tempo em que a quantidade de dados armazenados aumentou  piorou o problema

  18. FNBC • Três opções: • {Aluno, Assistente} e {Aluno, Disciplina} • {Aluno, Disciplina} e {Disciplina, Assistente} • {Aluno, Assistente} e {Assistente, Disciplina}

  19. FNBC • Três opções: • {Aluno, Assistente} e {Aluno, Disciplina} • {Aluno, Disciplina} e {Disciplina, Assistente} • {Aluno, Assistente} e {Assistente, Disciplina} Opção errada, pois agora não é possível saber qual aluno tem aula com qual Assistente  ocorre geração de tuplas ilegítimas

  20. FNBC • Três opções: • {Aluno, Assistente} e {Aluno, Disciplina} • {Aluno, Disciplina} e {Disciplina, Assistente} • {Aluno, Assistente} e {Assistente, Disciplina} Opção errada, pois agora não é possível saber qual aluno tem aula com qual Assistente  ocorre geração de tuplas ilegítimas

  21. FNBC • Três opções: • {Aluno, Assistente} e {Aluno, Disciplina} • {Aluno, Disciplina} e {Disciplina, Assistente} • {Aluno, Assistente} e {Assistente, Disciplina}

  22. FNBC • Três opções: • {Aluno, Assistente} e {Aluno, Disciplina} • {Aluno, Disciplina} e {Disciplina, Assistente} • {Aluno, Assistente} e {Assistente, Disciplina} Opção correta, a redundância foi minimizada e a junção recompõe os dados originais.

  23. FNBC • Três opções: • {Aluno, Assistente} e {Aluno, Disciplina} • {Aluno, Disciplina} e {Disciplina, Assistente} • {Aluno, Assistente} e {Assistente, Disciplina} Opção correta, a redundância foi minimizada e a junção recompõe os dados originais.

  24. FNBC • Normalização: • considere as DFs em que o lado esquerdo não é chave candidata Ex.: Assistente  Disciplina • transforme cada uma destas DFs em uma nova relação Ex.: Assistencia = {Assistente, Disciplina} 3. retire os correspondentes atributos (lado direito das DFs) da relação original Ex.: Ensino = {Aluno, Assistente} sem Disciplina

  25. FNBC • Conclusões sobre a FNBC • Violação da FNBC: relações em 3ª.FN, mas não em FNBC  raro • Uso: substitui a 2ª. e a 3ª. FNs, quando se deseja normalização máxima

  26. FNBC • Exercício: • Lote = {PropId, Municipio, LotNum, Area, Preco, Imposto}* • *supõe-se que cada município possui uma área específica (e exclusiva) de loteamento • Quais são as chaves candidatas? • O que viola a 3ª. FN? • Como fica a normalização até a 3ª. FN? • Após isso, o que viola a FNBC? • Como fica a normalização completa? • Após isso, quais são as chaves candidatas da relação Lote?

  27. FNBC • Resposta: • Antes de se analisar a normalização, deve-se identicar todas as chaves • Inicialmente, as chaves candidatas são PropId e {Municipio, LotNum} • No entanto, como AreaMunicipio, por pseudo-transitividade, então {LotNum, Area} também é chave candidata. Lote = {PropId, Municipio, LotNum, Area, Preco, Imposto} • Assim, Area  Preco viola a 2ª. FN, pois tem dependência parcial da chave candidata {LotNum, Area} • Pode-se ter uma relação Preco={Area, Preco} e a relação fica Lote = {PropId, Municipio, LotNum, Area, Imposto} • A relação Lote viola a FNBC pois AreaMunicipio sendo que Area, apesar de primo, sozinha não é chave candidata • Pode-se ter uma relação Municipio = {Area, Municipio} OU uma extensão da relação Preco={Area, Preco}, que ficaria Preco={Area, Preco, Municipio} e a relação fica Lote = {PropId, LotNum, Area, Imposto} • Após a normalização até a FNBC, as chaves candidatas são PropId e {LotNum, Area}

  28. Síntese e consideraçõesfinais

  29. Síntese • Dependência funcional • Se A1, A2 …, An  B1, B2, …, Bn • Formais normais • * desconsideram-se dfs triviais, isto é, X  Y tal que Y  X • Normalização: decomposição de relações • Eliminam redundância  previnem anomalias de inserção, atualização, remoção e junção

  30. FormaisNormais – visãogeral 1FN 2FN 3FN FNBC

  31. Quando usar normalização • Quando usar normalização? • Resposta: sempre • Quando aplicá-la ao meu projeto? • modo geral: quantidade de operações de leitura não é elevada • Ex.: bases operacionais podem ter alto grau de normalização • Diferentes graus de normalização em função do sistema • Ex.: bancos transacionais (OLTP) e data warehouses têm baixo grau de normalização (até nenhuma normalização)

  32. Quando usar normalização • Mas se eu não vou aplicar a normalização, então porque vou usá-la? • Identificação de possibilidades de melhoria de desempenho • Verificar se o projeto está correto de acordo com a semântica

  33. Quando usar normalização • Conclusões gerais: o conhecimento sobre normalização possui dois propósitos 1) Consertar projetos mal feitos – redundantes, potencialmente inconsistentes ou que gerem tuplas ilegítimas em junção; 2) Desnormalização consciente: dado um conjunto de consultas de interesse, podem-se detectar junções que são gargalos do sistema; prossegue-se desnormalizando o modelo e gerenciando-se a redundância e a consistência – uso de triggers e de interfaces.

  34. Um pouco de históriaCultura da ciência da computação • Edgar F. Codd (1923 - 2003) • Britânico • IBM, Nova York • Definiu o modelo relacinal • Curiosidade: concorrentes da IBM começaram a usar as idéias de Codd, antes que a própria IBM • Com Raymond F. Boyce, propôs a Forma normal de Boyce-Codd

  35. Exercícios • Exercício: • Transporte = {NavioNome, NavioTipo, ViagemID, Carga, Porto, DataChegada} • NavioNome  NavioTipo • ViagemID  NavioNome, Carga • NavioNome, DataChegada  ViagemId, Porto 1. Desenhe este esquema representando as DFs como flechas 2. Usando transitividade e aditividade, identifique uma chave candidata • Lembre-se: uma chave determina funcionalmente todos os outros atributos • 3. Identifique uma segunda chave candidata por pseudo-transitividade • 4. Normalize segundo a 2ª. FN • 5. Normalize segundo a 3ª. FN • 6. Normalize segundo a FNBC

  36. Exercícios • Resposta: • Transporte = {NavioNome, NavioTipo, ViagemID, Carga, Porto, DataChegada} • NavioNome  NavioTipo • ViagemID  NavioNome, Carga • NavioNome, DataChegada  ViagemId, Porto • Uma chave candidata é {NavioNome, DataChegada} • Por razão da DF ViagemID  NavioNome, outra chave candidata é {ViagemID, DataChegada} • Reordenando com as chaves identificadas: • {NavioNome, DataChegada, ViagemID, NavioTipo, Carga, Porto} • A DF NavioNome NavioTipo viola a 2ª. FN • A DF ViagemID  Carga viola a 2ª. FN • A DF ViagemID  NavioNome viola a FNBC • Normalização final: Transporte = {DataChegada, ViagemID, Porto} • Viagem = {ViagemID, NavioNome, Carga} • Navio = {NavioNome, NavioTipo}

  37. Exercícios • Exercício: normalize a seguinte relação • R (A, B, C, D, E, F, G) • A, B  C, D, E, F, G • E, F  A • A  C

  38. Exercícios • Resposta: • R (A, B, C, D, E, F, G) • A, B  C, D, E, F, G • E, F  A • A  C • Chaves candidatas: {A, B}, {E, F, B} • Violação da 2ª. FN por A C • Sem violação da 3ª. FN • Violação da FNBC por E,F  A, pois {E,F} não é chave candidata

  39. Exercícios • Exercício: considere a seguinte instancia de relação • Liste as dependências funcionais observáveis (não considere conjuntos de dados compostos do lado direito) e normalize-a para a FNBC.

  40. Exercícios • Resposta: • Liste as dependências funcionais observáveis • PecaNum  Descr • Fabric  FabricEnd • PecaNum, Fabric  Preco, Desconto  chave candidata • Vendedor  Fabric, FabricEnd • Preco  Desconto • O atributo FabricEnd viola a 1ª. FN pois é composto, o que poderia ser resolvido com a quebra do atributo em dois: Cidade e Estado • FabricanteEnd = {Cidade, Estado} • Chaves candidatas: {PecaNum, Fabric} e por pseudo-transitividade {PecaNum,Vendedor}, pois VendedorFabric • FabricanteEnd = {Fabric, FabricEnd}  viola a 2ª.FN • PecaDescr = {PecaNum, Descr}  viola a 2ª. FN • PrecoDesconto = {Preco, Desconto}  viola a 3ª. FN • Vendedor  Fabric  viola a FNBC • VendedorFabric = {Vendedor, Fabric} • Relação original fica como {PecaNum, Vendedor, Preco}

More Related