1 / 24

Capítulo 7: Design de Bases de Dados

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. Dependências Multivalor.

maegan
Download Presentation

Capítulo 7: Design de Bases de Dados

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

  2. Dependências Multivalor • Há bases de dados na BCNF, que preservam as dependências, mas que não parece estar suficientemente normalizadas. • Considere o seguinte esquema para o exemplo do banco: depositante(n_conta, nome_cliente, morada_cliente) • Se tivermos nome_cliente morada_cliente então este esquema não está na BCNF • Mas o banco quer deixar que um cliente possa ter mais do que uma morada, i.e. não quer impor esta dependência • Nesse caso, depositante já está na BCNF

  3. depositante Redundante!! n_conta nome_cliente morada_cliente 1 1 1 2 2 2 2 3 3 3 Carlos Carlos José Carlos Carlos Maria Maria José Maria Maria morada1 morada2 morada3 morada1 morada2 morada1 morada4 morada3 morada1 morada4 • Como não há dependências não triviais, (n_conta, nome_cliente, morada_cliente) é a única chave, e logo está na BCNF • Mas: • Redundância!! • Problemas na inserção – Se quisermos adicionar uma nova morada (morada5) para o José, é necessário introduzir 2 tuplos: (1, José, morada5) (3, José, morada5)

  4. n_conta nome_cliente 1 1 2 2 3 3 Carlos José Carlos Maria Maria José nome_cliente morada_cliente Carlos Carlos José Maria Maria morada1 morada2 morada3 morada1 morada4 • Parece melhor decompor em: • Mas porquê? Que propriedades têm estes dados que permitem dizer isto? Como as exprimir? • É certo que um dado cliente não têm sempre a mesma morada (independentemente da conta). • Mas tem sempre o mesmo conjunto de moradas, independentemente da conta!

  5. Dependências Multivalor • Seja R um esquema,   R e  R. A dependência multivalor  é verdadeira em R se em toda a relação possível r(R), para todo o par de tuplo t1,t2 em r, se t1[] = t2 [], então existem necessariamente tuplos t3 e t4 em r tal que: t1[] = t2 [] = t3 [] = t4[] t3[] = t1 [] t3[R – ] = t2[R – ] t4[] = t2[] t4[R – ] = t1[R – ]

  6. Dependências Multivalor (Cont.) • Representação de  em tabela: • Para nome_clientemorada_cliente: • Se dois tuplos têm o mesmo nome_cliente, tendo um morada_cliente=m1 e n_conta =n1 e outro morada_cliente=m2 e n_conta =n2 • Então têm que haver mais dois tuplos com esse nome_cliente: • um com morada_cliente=m1 e n_conta =n2 • outro com morada_cliente=m2 e n_conta =n1

  7. Exemplo • Seja R um esquema com um conjunto de atributos particionados em 3 subconjuntos não vazios. Y, Z, W • Diz-se que Y Z (Y multidetermina Z)sse para todas as possíveis r(R) se < y1, z1, w1 >  r e < y1, z2, w2 >  r então < y1, z1, w2 >  r e < y1, z2, w1 >  r • Note que, como esta definição é simétrica em Z e W, se segue que Y Z sse YW (i.e. YR-Y-Z) • Note ainda que: • Se Y Z então Y Z • De facto, se Y Z então z1 = z2,e logo Y Z.

  8. Exemplo (Cont.) • No nosso exemplo: nome_cliente morada_clientenome_cliente  n_conta • Esta definição formaliza a ideia de que cada valor particular de Y (nome_cliente) tem associado um conjunto de valores Z (morada_cliente) e um conjunto de valores de W (n_conta), e que estes dois conjuntos são independentes. • Se são independentes, porque não metê-los em relações separadas?

  9. Uso de Dependências Multivalor • Usam-se dependências multivalor para: 1. Testar relações, para verificar se são ou não relações válidas, dado um conjunto de dependência multivalor 2. Especificar restrições no conjunto de (instâncias) de relações válidas. Assim, só devemos ter relações que satisfaçam o conjunto (pré-definido) de dependências funcionais e multivalor. • Se uma relação r não satisfizer uma dada dependência multivalor, então é sempre possível construir uma relação r , por adição de tuplos em r, que satisfaz a dependência.

  10. Teoria de Dependências Multivalor • Da definição de dependência multivalor, podemos demonstrar: • Se   , então    • I.e. toda a dependência funcional é também dependência multivalor. •    é trivial sse   ou   = R • Em geral temos um conjunto D de dependências funcionais e dependências multivalor • O fecho D+ de D é o conjunto de todas as dependências funcionais e multivalor que são implicadas por D. • Pode calcular-se D+ a partir de D, usando as definições de dependência funcional e multivalor. • Tal como para dependências funcionais, há sistemas de inferência par calcular este fecho.

  11. Inferência com Dependências Multivalor • Podem encontrar-se todas as dependências emD+por aplicação dos seguintes Axiomas (onde os primeiros 3 são os Axiomas de Armstrong) : • Se   , então  (reflexividade) • Se  , então   (aumento) • Se  , e  , então   (transitividade) • Se    então  R -  -  (complemento) • Se   ,   R e d   então   d (multi-aumento) • Se   , e  , então    - (multi-transitividade) • Se   então    (replicação) • Se   ,    e existe d  R tal que (coalescência) d   = { } e d  então   • Este conjunto de axiomas é coerente e completo.

  12. 4ª Forma Normal • Um esquema R, com conjunto de dependência funcionais e multivalor D, está na 4NF se para toda a dependência multivalor  D+, onde R e  R, pelo menos uma das seguintes condições é verdadeira: •  é trivial (i.e.,   ou   = R) •  é super chave de R (i.e.,   R) • Se um esquema está na 4NF também está na BCNF

  13. Restrição de Dependências Multivalor • A restrição do conjunto D a Ri é o conjunto de Di com • Todas as dependências em D+ que só contêm atributos de Ri • Todas as dependências multivalor:  ( Ri) onde  Ri e  D+ • Com dependências multivalor, a decomposição de R em R1 e R2 é sem perdas sse pelo menos uma das dependências abaixo pertence a D+: • R1 R2R1 • R1 R2R2

  14. Algoritmo de Decomposição para 4NF result: = {R};done := false;calcular D+;Seja Di a restrição de D+ a Ri while (not done) if (existe esquema Riresult que não está na 4NF) then begin Seja    não trivial e verdadeira em Ri tal que   Ri  Di, e ; result := (result - Ri)  (Ri- )  (, ); end else done:= true; Nota: A decomposição é sem perdas

  15. Exemplo • R =(A, B, C, G, H, I) D ={ A B BHI CG H } • R não está na 4NF pois AB  F e A não é superchave de R • Decomposição a) R1 = (A, B) (R1 está na 4NF. A única dep. em R1 é trivial: A B) b) R2 = (A, C, G, H, I) (R2 não está na 4NF – a 3ª dep. não é verificada) c) R3 = (C, G, H) (R3 está na 4NF) d) R4 = (A, C, G, I) (R4 não está na 4NF) • Como AB e BHI logo AHI  D+, e AI está na restrição a R4 e) R5 = (A, I) (R5 está na 4NF) f) R6 = (A, C, G) (R6 está na 4NF)

  16. 4NF e Preservação de Dependências • Tal como a BCNF, a 4NF pode não preservar as dependências: • R =(A, B, C, G, H, I) com D ={ A B,BHI,CG H } foi decomposto em {(A, B), (C, G, H), (A, I), (A, C, G)} • A dependência BHI não pode ser testada apenas numa destas relações. • Aplicam-se aqui as mesmas soluções de compromisso que entre a BCNF e a 3NF: • Objectivos numa primeira fase: • 4NF. • 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 • Tentar BCNF. • Se tal ainda não preserva dependências, normalizar para a 3NF

  17. Mais Formas Normais • As dependências de junção generalizam as multivalor • Dão origem à forma normal projecção-junção (PJNF) (também chamada de 5ª forma normal) • Uma classe ainda mais geral de restrições leva à forma normal de domínio-chave. • Problemas com estas restrições muito gerais: • é dificil raciocínar sobre elas • não têm conjuntos coerentes e completos de regras de inferência. • Logo, raramente são usadas

  18. Visão global sobre o design • Temos assumido que o esquema R é dado • R pode ter sido obtido ao passar um diagrama E-R para tabelas. • R pode ser uma única relação contendo todos os atributos de interesse para os dados (relação universal). • A normalização há-de decompor R em relações mais pequenas. • R pode ser o resultado de algum design ad hoc.

  19. Modelo ER e Normalização • Quando o diagrama E-R está mesmobem feito, as tabelas geradas em princípio nem necessitam de mais normalização. • No entanto, na prática há diagramas ER imperfeitos que levam a que dependências que queremos impor não tenham o lado esquerdo como chave. • E.g. Entidade empregado com atributos cod_departamento e morada_dep, e a dependência cod_departamento  morada_dep • Num bom design departamentos seria um outro conjunto de entidades

  20. A abordagem de Relação Universal • Tuplos soltos – Tuplos que “desaparecem” numa junção. • Considere o conjunto de relações {r1 (R1), r2 (R2), …., rn (Rn)} • Um tuplo t de ri é um tuplo solto se t não pertence a: Ri (r1r2 … rn) • A relação r1r2 … rn é chamada de relação universalpois envolve todos os atributos no “universo” definido por R1  R2  …  Rn • Se se admitirem tuplos soltos numa base de dados, em vez de decompor a relação universal, podemos preferir sintetizar do conjunto de atributos um conjunto de esquemas em formas normais.

  21. Tuplos Soltos • Em aplicações práticas, podem aparecer tuplos soltos. • Tuplos soltos representam informação incompleta. • E.g. podemos querer partir informação de loans em: (branch-name, loan-number) (loan-number, amount) (loan-number, customer-name) • Com a relação universal, seriam necessários tuplos soltos

  22. A abordagem de Relação Universal (Cont.) • Uma dada decomposição define uma forma restrita de informação incompleta, aceitável na base de dados. • A anterior decomposição exige que se saiba, pelo menos um dos atributos customer-name, branch-name ou amount para que se possa introduzir um empréstimo sem serem necessário valores null • Deixa de fora a hipótese de guardar associação customer-name, amount sem um loan-number correspondente (sendo chave não pode ser null) • A relação universal exige nomes únicos para atributos • Reutilização de nomes de atributos é natural em SQL, pois o nome das relações é colocado como prefixo, para desambiguar (no exemplo das aulas práticas, há vários casos destes)

  23. Desnormalização para Performance • Para melhorar a performance, podemos queres usar esquema não normalizados • E.g. mostrar customer-name juntamente com account-number e balance exige junção de account com depositor • Alternativa 1: Usar relação desnormalizada que contém atributos de account e de depositor • execução mais rápida de perguntas • gasta mais espaço, e mais tempo para actualizações • é mais passível de erros • Alternativa 2: usar uma materialized view definida como: account depositor • As vantagens e desvantagens são como na outra alternativa, com excepção de que esta não aumenta a possibilidade de erros.

  24. Outros aspectos do design • Alguns aspectos do design de bases de dados não são captados pela normalização • Exemplos de mau design, a evitar: Em vez de lucros(companhia, ano, valor), usar • lucros-2000, lucros-2001, lucros-2002, etc., todas com esquema (companhia, valor). • Todas estas relações estão na BCNF. Mas dificulta a execução de perguntas sobre vários anos, e exige nova tabela todos os anos • companhia_ano(companhia, lucros-2000, lucros-2001, lucros-2002) • Também está na BCNF, mas também dificulta perguntas sobre vários anos, e exige novo atributo todos os anos. • É um exemplo de crosstab, onde valores para um atributo se transformam em nomes de atributos • Usado em folhas de cálculo e em ferramentas de análise de dados

More Related