©Silberschatz, Korth and Sudarshan (modificado)7.3.1Database System Concepts Capítulo 7: Design de Bases de Dados 1ª Forma Normal Objectivos com Design.

Slides:



Advertisements
Apresentações semelhantes
Normalização em BD Relacional
Advertisements

Sistemas especialistas
Banco de Dados Prof. Antonio.
DESENHO de BASE de DADOS RELACIONAL
Normalização.
Modelo Relacional.
Evolução dos SGBD’s (2ª Parte).
Análise e Síntese de Algoritmos
Pesquisa em profundidade
CONCEITOS BÁSICOS DA META-HEURÍSTICA TABU SEARCH
©Silberschatz, Korth and Sudarshan (modificado)1Database System Concepts result := {R}; done := false; calcular F+; while (not done) do if (há um esquema.
1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação.
Nice Maria Americano da Costa
Universidade Federal de Santa Catarina

Padrões GoF – Factory Method
(Dependência Funcional e Normalização)
Banco de Dados Aplicado ao Desenvolvimento de Software
Ricardo de Oliveira Cavalcanti roc3[at]cin.ufpe.br
SQL Server 2012 Introdução a Modelagem de Dados
Normalização de Dados. 2 SGBD + Banco de Dados Independência de dados Consistência de dados.
Exercícios PAA- Grafos
Capítulo 2: Modelo ER Conjuntos de entidades Conjuntos de relações
Capítulo 6: Integridade e Segurança
©Silberschatz, Korth and Sudarshan (modificado)5.1.1Database System Concepts Capítulo 5: Outras linguagens Query-by-Example (QBE) Datalog.
Capítulo 6: Integridade e Segurança
Problemas de Fluxo Máximo
Capítulo 3: Modelo Relacional
2.2.1Database System Concepts©Silberschatz, Korth and Sudarshan (Modificado) Capítulo 2: Modelo ER Conjuntos de entidades Conjuntos de relações Aspectos.
Tuning Lílian Simão Oliveira.
Capítulo 7: Design de Bases de Dados
MODELAGEM EM BANCO DE DADOS
Projetando uma base de dados
Curso Técnico em Informática Prof. Tales Cabral Colégio da Imaculada.
Normalização Normalização é o conjunto de regras que visa minimizar as anomalias de modificação dos dados e dar maior flexibilidade em sua utilização.
Banco de dados.
Análise de Sistemas de Informação
Prof. Christiano Lima Santos
©Silberschatz, Korth and Sudarshan (Modificado)3.3.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.
Construção e Análise de Algoritmos
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
ANÁLISE DE SISTEMAS 1Trabalho elaborado por Alexandra.
Normalização Álvaro Vinícius de Souza Coêlho
SCC Bancos de Dados e Suas Aplicações
AULA DE DÚVIDAS 9 de Abril de Especialização  Simplifica-se quando:  especialização é disjunta e  especialização é total e  não há relações.
©Silberschatz, Korth and Sudarshan (modificado)10.1.1Database System Concepts Capítulo 10: XML XML para transferência de dados Estrutura hierárquica do.
©Silberschatz, Korth and Sudarshan (Modificado)1.1Database System Concepts Capítulo 1: Introdução Função dos Sistemas de Bases de Dados Visão dos dados.
©Silberschatz, Korth and Sudarshan (modificado)9.1.1Database System Concepts Capítulo 9: BDs Objecto-Relacional Relações imbricadas Tipos complexos e objectos.
©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.
©Silberschatz, Korth and Sudarshan (modificado)4.2.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
©Silberschatz, Korth and Sudarshan (modificado)9.2.1Database System Concepts Capítulo 9: BDs Objecto-Relacional Relações imbricadas Tipos complexos e objectos.
©Silberschatz, Korth and Sudarshan (modificado)6.1.1Database System Concepts Capítulo 6: Integridade e Segurança Restrições ao Domínio Integridade Referencial.
©Silberschatz, Korth and Sudarshan (modificado)7.3.1Database System Concepts Capítulo 7: Design de Bases de Dados 1ª Forma Normal Objectivos com Design.
AOBD 07/08 Mini-Projecto 2 Soluções. 1) Considere que existem três relações R1=(A,B,C), R2=(C,D) e R3=(D,E) com chaves primárias A, C e D, respectivamente.
Análise e Síntese de Algoritmos
Desenvolvimento de uma base de dados
©Silberschatz, Korth and Sudarshan (Modificado)3.4.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.
Formas Normais Pedro Sousa 1 Dependências Funcionais e Formas Normais.
©Silberschatz, Korth and Sudarshan (modificado)7.4.1Database System Concepts Capítulo 7: Design de Bases de Dados 1ª Forma Normal Objectivos com Design.
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Bases de dados: cruzamento de tabelas
Dependências Funcionais e Formas Normais
2.1.1Database System Concepts©Silberschatz, Korth and Sudarshan (Modificado) Capítulo 2: Modelo ER Conjuntos de entidades Conjuntos de relações Aspectos.
©Silberschatz, Korth and Sudarshan (modificado)7.1.1Database System Concepts Capítulo 7: Design de Bases de Dados Objectivos com Design de Bases de Dados.
RDBMS Tuning Pedro da Silva. Indice 1. Schema Tuning 1.1. Vertical Partitioning 1.1. Vertical Partitioning 1.2. Tunnig Denormalization 1.2. Tunnig Denormalization.
Professor Me. Jeferson Bussula Pinheiro.
©Silberschatz, Korth and Sudarshan (modificado)6.1.1Database System Concepts Capítulo 6: Integridade e Segurança Restrições ao Domínio Integridade Referencial.
Fundamentos de Banco de Dados Prof. André Cypriano M. Costa
Recursividade e análise Cristiano Arbex Valle Vinicius Fernandes dos Santos
Normalização (4FN) Na literatura aparecem outras formas normais, como a forma normal de Boyce/Codd, a 4FN e a 5FN. Destas a única que tem importância na.
Transcrição da apresentação:

©Silberschatz, Korth and Sudarshan (modificado)7.3.1Database System Concepts Capítulo 7: Design de Bases de Dados 1ª Forma Normal Objectivos com Design de Bases de Dados Dependências funcionais Decomposição Forma Normal de Boyce-Codd 3ª Forma Normal Dependências multivalor 4ª Forma Normal Visão geral sobre o processo de design

©Silberschatz, Korth and Sudarshan (modificado)7.3.2Database System Concepts Normalização por uso de Dependências Quando decompomos um esquema R com dependências F, em R 1, R 2,.., R n queremos  Decomposição sem perdas: por forma a não se perder informação.  Não haja redundância: Vimos na Forma Normal de Boyce Codd  Preservação de dependências: Seja F i o conjunto de dependências de F + que só contêm atributos de R i.  A decomposição preserva as dependências se (F 1  F 2  …  F n ) + = F +  Sem preservação de dependências, a garantia de integridade pode obrigar à computação de junções, sempre que se adicionam, apagam ou actualizam relações da base de dados. Tal pode tornar- se bastante ineficiente.

©Silberschatz, Korth and Sudarshan (modificado)7.3.3Database System ConceptsExemplo R = (A, B, C) F = {A  B, B  C) R 1 = (A, B), R 2 = (B, C)  Decomposição sem perdas: R 1  R 2 = {B} e B  BC  Preserva as dependências R 1 = (A, B), R 2 = (A, C)  Decomposição sem perdas: R 1  R 2 = {A} and A  AB  Não preserva as dependências (não se pode verificar B  C sem calcular R 1 R 2 )

©Silberschatz, Korth and Sudarshan (modificado)7.3.4Database System Concepts Teste de Preservação de Dependências Para verificar se  é preservada na decomposição R em R 1, R 2, …, R n aplica-se o seguinte teste:  result :=  while (alterações a result) do for each R i na decomposição result := result  ((result  R i ) +  R i )  Se result contém todos os atributos em , então    é preservada. Aplica-se este teste a todas as dependências de F, para verificar se a decomposição preserva as dependências Ao contrário do cálculo de F + e (F 1  F 2  …  F n ) + (que tem complexidade exponencial), este procedimento tem complexidade polinomial.

©Silberschatz, Korth and Sudarshan (modificado)7.3.5Database System Concepts Motivação para a 3ª Forma Normal Há situações em que:  a BCNF não preserva as dependências, e  a eficiência na verificação de integridade aquando de alterações é importante Solução: definir uma forma normal mais fraca – 3ª Forma Normal:  Admite alguma redundância (o que pode trazer problemas, como veremos à frente)  Mas as dependências podem ser verificadas sem recorrer a junções.  É sempre possível fazer uma decomposição sem perdas para a 3NF, que preserva as dependências.

©Silberschatz, Korth and Sudarshan (modificado)7.3.6Database System Concepts Exemplo Motivador O esquema Gestores = (balcão, cliente, gestor-conta), com as dependências: 1. gestor-conta  balcão 2. cliente, balcão  gestor-conta não estava na BCNF por causa da primeira dependência. A única chave candidata de Gestores é {cliente, balcão}. Mas:  Ao decompor Gestores com base na 1ª dependência, balcão vai ficar numa relação diferente daquela onde fica cliente.  Logo deixa de ser possível verificar a chave candidata de Gestores numa só relação! Solução:  Para se continuar a poder verificar a chave candidata da relação original, não decompor um esquema com base numa dependência que à direita contenha apenas alguns dos atributos duma chave candidata.

©Silberschatz, Korth and Sudarshan (modificado)7.3.7Database System Concepts 3ª Forma Normal Um esquema R está na 3ª Forma Normal (3FN) sse para toda:     F + pelo menos uma das condições é verdadeira:     é trivial (i.e.,    )   é superchave de R (i.e.,   R)  Todo atributo A  (  –  ) está contido numa chave candidata de R. (NOTE: cada um dos atributos pode pertencer a uma chave candidata distinta) Se R está na BCNF então está também na 3FN A 3ª condição relaxa a BCNF para garantir que é possível decomposição com preservação de dependências

©Silberschatz, Korth and Sudarshan (modificado)7.3.8Database System Concepts 3FN (Cont.) Exemplo  R = (J, K, L) F = {JK  L, L  K}  Duas chaves candidatas: JK e JL  R está na 3NF JK  LJK é superchave L  KK está contido numa chave candidata Decomposição BCNF dá (JL) e (LK) Testar JK  L obriga a uma junção Pode haver redundância em R J L aaabaaab K xxxyxxxy Redundante

©Silberschatz, Korth and Sudarshan (modificado)7.3.9Database System Concepts Teste para 3FN Optimização: Basta verificar para uma cobertura canónica de F (não é necessário verificar para toda a dependência em F + ) Usar fecho de atributos para verificar, em toda a dependência   , se  é superchave. Se  não for superchave, há que verificar se todo a atributo em  pertence a alguma chave candidata de R  Este teste é bastante ineficiente, pois envolve o cálculo de chaves candidatas  Pode demonstrar-se que verificar se um conjunto de esquemas está na 3FN tem complexidade NP-hard  No entanto, a decomposição para a 3FN (descrita à frente) pode ser feita em tempo polinomial

©Silberschatz, Korth and Sudarshan (modificado)7.3.10Database System Concepts Algoritmo de Decomposição para 3FN Seja F c uma cobertura canónica de F; i := 0; for each     F c do if nenhum dos esquemas R j, 1  j  i contém   then begin i := i + 1; R i :=   end if nenhum dos esquemas R j, 1  j  i contém uma chave candidata de R then begin i := i + 1; R i := uma (qualquer) chave candidata de R; end return (R 1, R 2,..., R i )

©Silberschatz, Korth and Sudarshan (modificado)7.3.11Database System ConceptsExemplo Considere o esquema: Info-Gestores = (balcão, cliente, gestor-conta, gabinete) As dependências definidas sobre este esquema são: gestor-conta  balcão, gabinete cliente, balcão  gestor-conta A chave candidata é: {cliente, balcão} O ciclo for do algoritmo, leva à introdução dos seguintes esquemas na decomposição: Gestores-gab = (gestor-conta, balcão, gabinete) Gestores = (cliente, balcão, gestor-conta) Como Gestores contém uma chave candidata de Info-Gestores, o processo de decomposição termina.

©Silberschatz, Korth and Sudarshan (modificado)7.3.12Database System Concepts Outro exemplo Considere o esquema: R = (A,B,C) Com as dependências: A  C B  C A chave candidata é: {A, B} O ciclo for do algoritmo, leva à introdução dos seguintes esquemas na decomposição: R1 = (A, C)e R2 = (B,C) Como nem R1 nem R2 contém a chave candidata de R o processo de decomposição adiciona ainda: R3 = (A, B)

©Silberschatz, Korth and Sudarshan (modificado)7.3.13Database System Concepts Propriedade do algoritmo de Decomposição O algoritmo descrito garante que:  Todo o esquema R i está na 3FN  A decomposição preserva as dependências e é sem perdas Note que só é garantido que se preservam as dependências no conjunto de todas as relações da decomposição. Mesmo que haja um subconjunto dessas relações que contenha todos os atributos da relação original, não se garante que as dependências sejam preservadas.

©Silberschatz, Korth and Sudarshan (modificado)7.3.14Database System Concepts Decomposição e preservação dependências A decomposição de R = (A,B,C), com A  C e B  C, em: R1 = (A, C) R2 = (B,C) R3 = (A, B) preserva as dependências:  F 1 = {A  C}, F 2 = {B  C}, F 3 = {} e (F 1 UF 2 UF 3 ) + = F + Mas (F 1 UF 3 ) +  F +, apesar de R1 U R2 = R!! Em particular AB  C  F + mas AB  C  (F 1 UF 3 ) + Qualquer que seja o conteúdo de R1, R2 e R3, está garantido que na junção das 3 relações as dependências são preservadas Mas isso não fica garantido se olharmos apenas para a junção de duas das relações!

©Silberschatz, Korth and Sudarshan (modificado)7.3.15Database System Concepts BCNF versus 3FN É sempre possível decompor um esquema, num conjunto de esquemas na 3FN em que:  a decomposição é sem perdas  as dependências são preservadas  Mas pode haver alguma redundância!! É sempre possível decompor um esquema, num conjunto de esquemas na BCNF em que  a decomposição é sem perdas  não há redundância  Mas nem sempre se podem preservar as dependências!!

©Silberschatz, Korth and Sudarshan (modificado)7.3.16Database System Concepts BCNF versus 3FN (Cont.) J j 1 j 2 j 3 null L l1l1l1l2l1l1l1l2 K k1k1k1k2k1k1k1k2 R, que está na 3FN mas não na BCNF, tem problemas de: Repetição de informação (e.g., relação l 1, k 1 ) Necessita usar valores null (e.g., para representar a relação entre l 2, k 2 sem que haja valores correspondente em J). Exemplo de problemas causados pela redundância na 3FN  R = (J, K, L) F = {JK  L, L  K}

©Silberschatz, Korth and Sudarshan (modificado)7.3.17Database System Concepts BCNF versus 3FN (exemplo) Considere o esquema Gestores = (balcão, cliente, gestor), com as dependências: 1. gestor  balcão 2. cliente, balcão  gestor Está na 3FN  {cliente, balcão} é chave de Gestores  {balcão} – {gestor} = {balcão}  na chave candidata de Gestores (que é {cliente, balcão}) balcãoclientegestor Lx Cp Lx Cp Maria Pedro José null Ana João Ana Mario Dados redundantesNecessidade de null para associar gestores (ainda) sem clientes, a balcões

©Silberschatz, Korth and Sudarshan (modificado)7.3.18Database System Concepts BCNF ou 3FN? Objectivos do design, numa primeira fase:  BCNF.  Decomposição sem perdas.  Preservação de dependências. Se tal não for possível, então há que optar por uma de  Não preservação de dependências  Alguma redundância (devido ao uso da 3FN) O SQL não fornece nenhuma forma directa de impor dependências que não sejam superchaves. Pode fazer-se usando assertion mas isso é muito ineficiente.  Mesmo quando a decomposição preserva as dependências, com o SQL nem sempre é possível testar de forma eficiente dependências cujo lado esquerdo não seja chave.

©Silberschatz, Korth and Sudarshan (modificado)7.3.19Database System Concepts Teste de Dependências em várias Relações Se a decomposição não preserva as dependências, podemos criar uma materialized view para cada uma das dependências    F c que não é preservada  O Oracle permite criar este tipo de views com o comando create materialized view A materialized view deve ser definida para a projecção em   da junção das relações decompostas. A dependência funcional deve ser imposta como chave candidata da materialized view. Isto implica um overhead de  espaço: há que guardar as views.  tempo: há que manter as views actualizadas