A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "SCC0141 - Bancos de Dados e Suas Aplicações Prof. Jose Fernando Rodrigues Junior Normalização – parte 3 Forma Normal de Boyce Codd."— Transcrição da apresentação:

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

2

3 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 FNBC

4 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 FNBC Lembrando: 3ª. FN: está na 2ª. FN e atributos comuns não dependem transitivamente de qualquer chave candidata.

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

6 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 FNBC

7 Se já esta na 3ª. FN, a violação da FNBC é rara e ocorre apenas se: a)Existe mais do que uma chave candidata b)Existem pelo menos duas chaves candidatas compostas c)Existe intersecção entre chaves compostas Visualmente ABC DFs: {A, B}  CeC  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} FNBC

8 Se já esta na 3ª. FN, a violação da FNBC é rara e ocorre apenas se: a)Existe mais do que uma chave candidata b)Existem pelo menos duas chaves candidatas compostas c)Existe intersecção entre chaves compostas Visualmente ABC DFs: {A, B}  CeC  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} FNBC 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 AlunoDisciplinaAssistente AS1Z B Z C Z AC2W B W C W DS1X E X F X AlunoAssistente AZ BZ CZ AW BW CW DX EX FX AlunoDisciplina AS1 B C AC2 B C DS1 E F

10 FNBC DisciplinaAssistente S1Z C2W S1X AlunoDisciplinaAssistente AS1Z B Z C Z AC2W B W C W DS1X E X F X AlunoDisciplina AS1 B C AC2 B C DS1 E F

11 FNBC AssistenteDisciplina ZS1 WC2 XS1 AlunoDisciplinaAssistente AS1Z B Z C Z AC2W B W C W DS1X E X F X AlunoAssistente AZ BZ CZ AW BW CW DX EX FX

12 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 FNBC AlunoDisciplinaAssistente AlanSMA100Silvio BernandoSMA100Rodrigo CaioSMA100Silvio DiegoSMA100Rodrigo

13 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

14 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 FNBC

15 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} FNBC AlunoDisciplinaAssistente AlanSMA100Silvio BernandoSMA100Rodrigo CaioSMA100Silvio DiegoSMA100Rodrigo

16 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 FNBC AlunoDisciplinaAssistente AlanSMA100Silvio BernandoSMA100Rodrigo CaioSMA100Silvio DiegoSMA100Rodrigo

17 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 FNBC AlunoDisciplinaAssistente AlanSMA100Silvio BernandoSMA100Rodrigo CaioSMA100Silvio DiegoSMA100Rodrigo 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

18 Três opções: {Aluno, Assistente} e {Aluno, Disciplina} {Aluno, Disciplina} e {Disciplina, Assistente} {Aluno, Assistente} e {Assistente, Disciplina} FNBC AlunoAssistente AlanSilvio BernandoRodrigo CaioSilvio DiegoRodrigo AlunoDisciplina AlanSMA100 BernandoSMA100 CaioSMA100 DiegoSMA100

19 Três opções: {Aluno, Assistente} e {Aluno, Disciplina} {Aluno, Disciplina} e {Disciplina, Assistente} {Aluno, Assistente} e {Assistente, Disciplina} FNBC AlunoAssistente AlanSilvio BernandoRodrigo CaioSilvio DiegoRodrigo AlunoDisciplina AlanSMA100 BernandoSMA100 CaioSMA100 DiegoSMA100 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

20 Três opções: {Aluno, Assistente} e {Aluno, Disciplina} {Aluno, Disciplina} e {Disciplina, Assistente} {Aluno, Assistente} e {Assistente, Disciplina} FNBC AlunoAssistente AlanSilvio BernandoRodrigo CaioSilvio DiegoRodrigo AlunoDisciplina AlanSMA100 BernandoSMA100 CaioSMA100 DiegoSMA100 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

21 Três opções: {Aluno, Assistente} e {Aluno, Disciplina} {Aluno, Disciplina} e {Disciplina, Assistente} {Aluno, Assistente} e {Assistente, Disciplina} FNBC AlunoDisciplina AlanSMA100 BernandoSMA100 CaioSMA100 DiegoSMA100 DisciplinaAssistente SMA100Silvio SMA100Rodrigo

22 Três opções: {Aluno, Assistente} e {Aluno, Disciplina} {Aluno, Disciplina} e {Disciplina, Assistente} {Aluno, Assistente} e {Assistente, Disciplina} FNBC AlunoDisciplina AlanSMA100 BernandoSMA100 CaioSMA100 DiegoSMA100 DisciplinaAssistente SMA100Silvio SMA100Rodrigo Opção errada, pois agora não é possível saber qual aluno tem aula com qual Assistente  ocorre geração de tuplas ilegítimas

23 Três opções: {Aluno, Assistente} e {Aluno, Disciplina} {Aluno, Disciplina} e {Disciplina, Assistente} {Aluno, Assistente} e {Assistente, Disciplina} FNBC AlunoDisciplina AlanSMA100 BernandoSMA100 CaioSMA100 DiegoSMA100 DisciplinaAssistente SMA100Silvio SMA100Rodrigo Opção errada, pois agora não é possível saber qual aluno tem aula com qual Assistente  ocorre geração de tuplas ilegítimas

24 Três opções: {Aluno, Assistente} e {Aluno, Disciplina} {Aluno, Disciplina} e {Disciplina, Assistente} {Aluno, Assistente} e {Assistente, Disciplina} FNBC AlunoAssistente AlanSilvio BernandoRodrigo CaioSilvio DiegoRodrigo AssistenteDisciplina SilvioSMA100 RodrigoSMA100

25 Três opções: {Aluno, Assistente} e {Aluno, Disciplina} {Aluno, Disciplina} e {Disciplina, Assistente} {Aluno, Assistente} e {Assistente, Disciplina} FNBC AlunoAssistente AlanSilvio BernandoRodrigo CaioSilvio DiegoRodrigo AssistenteDisciplina SilvioSMA100 RodrigoSMA100 Opção correta, a redundância foi minimizada e a junção recompõe os dados originais.

26 Três opções: {Aluno, Assistente} e {Aluno, Disciplina} {Aluno, Disciplina} e {Disciplina, Assistente} {Aluno, Assistente} e {Assistente, Disciplina} FNBC AlunoAssistente AlanSilvio BernandoRodrigo CaioSilvio DiegoRodrigo AssistenteDisciplina SilvioSMA100 RodrigoSMA100 Opção correta, a redundância foi minimizada e a junção recompõe os dados originais.

27 Normalização: 1.considere as DFs em que o lado esquerdo não é chave candidata Ex.: Assistente  Disciplina 2.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 FNBC

28 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 FNBC

29 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 1.Quais são as chaves candidatas? 2.O que viola a 3ª. FN? 3.Como fica a normalização até a 3ª. FN? 4.Após isso, o que viola a FNBC? 5.Como fica a normalização completa? 6.Após isso, quais são as chaves candidatas da relação Lote? FNBC

30 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} FNBC

31 Síntese e considerações finais

32 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 Síntese Forma NormalCaracterística* 1a. FNAtomicidade, monovaloração e junções sem perda 2a. FN1a. FN e ausência de dependências parciais 3a. FN2a.FN e ausência de dependências transitivas Boyce CoddA esquerda de toda df é chave candidata

33 Formais Normais – visão geral 1FN 2FN 3FN FNBC

34 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) Quando usar normalização

35 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 Quando usar normalização

36 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. Quando usar normalização

37 Um pouco de história Cultura 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

38 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 Exercícios

39 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} Exercícios

40 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

41 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

42 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. PecaNumDescrFabricVendedorFabricEndPrecoDesconto 1001020 GB DiskSeagateAirtonPalo Alto, CA$1005% 1001020 GB DiskIBMJoseArmonk, NY$905% 10220256 MB RAMKensingtonSilvaSan Mateo, CA$2206% 10220256 MB RAMIBMMateusArmonk, NY$2206% 10230256 MB RAMSun MicrosystemsMauroPalo Alto, CA$3107% 1044017" LCD MonitorIBMJoseArmonk, NY$2.10010% 10500512 MB RAMIBMMateusArmonk, NY$3507% 10500512 MB RAMKensingtonSilvaSan Mateo, CA$2206%

43 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}


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

Apresentações semelhantes


Anúncios Google