Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouDaniela De Oliveira Alterado mais de 10 anos atrás
1
SCC0141 - Bancos de Dados e Suas Aplicações Prof. Jose Fernando Rodrigues Junior Normalização – parte 3 Forma Normal de Boyce Codd
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}
Apresentações semelhantes
© 2025 SlidePlayer.com.br Inc.
All rights reserved.