normalização Álvaro vinícius de souza coêlho [email protected]
TRANSCRIPT
![Page 2: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/2.jpg)
Dependência Funcional
• “Dada uma tabela T, a coluna Y de T é funcionalmente dependente da coluna X de T se e somente se cada valor de Y em T tiver a ele associado precisamente um valor X em T”
![Page 3: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/3.jpg)
Dependência Funcional
• Opcionalmente, diz-se que X determina Y
• Exemplos– Matrícula determina Nome_Aluno (e endereço,
telefone, etc.) – Placa determina Veículo – Número determina Competidor
![Page 4: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/4.jpg)
Dependência Funcional
• A coluna determinante pode ser composta– (Aluno, Disciplina) determina Média– (Veículo, Condutor, Data) determina Multa
• Existem tipos variados de dependência funcional– Transitiva– Multivalorada– de Junção
![Page 5: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/5.jpg)
Dependência Funcional
• Chaves: “Coluna que funciona como determinante funcional em uma tabela”
• Em Bancos de Dados Relacionais– Colunas que orientam para a seleção de uma ou
mais linhas específicas em uma tabela
![Page 6: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/6.jpg)
Dependência Funcional
• Exemplos de chaves– A matrícula de um aluno (existe outro com a
sua?)– A Placa de um carro (ou o número do Chassi,
ou o Renavam)– O Número de Inscrição de um competidor (só
há um piloto com o carro número 1)
![Page 7: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/7.jpg)
Dependência Funcional
• O CRA de um médico mais a Identificação de um plano de saúde identifica somente uma inscrição (Não dá para um CRA aparecer duas vezes na UNIMED).
![Page 8: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/8.jpg)
Dependência Funcional
• Chave primária – Conjunto único de colunas (muitas vezes unitário) escolhido como identificador de uma Linha (como nos exemplos acima)
![Page 9: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/9.jpg)
Dependência Funcional
• Chave Alternativa (ou candidata) - Conjunto único de colunas (normalmente unitário) que pode ser usado alternativamente como chave primária (como o número de chassis no lugar da placa do veículo).
![Page 10: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/10.jpg)
Dependência Funcional
• Chave Estrangeira - Conjunto de colunas (muitas vezes unitário) que aponta uma Linha em outra tabela (é chave primária de outra tabela)
![Page 11: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/11.jpg)
Dependência Funcional
• Exemplo: – Tabela (Vendedor#, NumNota, Loja#) – Colunas Vendedor# e Loja# são identificadores
únicos (Chaves Primárias) em outras tabelas que contém:
– Mais dados do vendedor – salário, nome, etc. – Ou da Loja – razão social, endereço, etc.
![Page 12: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/12.jpg)
Normalização
• Normalização: “Colocar relações dentro de uma organização tal que atenda a um conjunto específico de restrições”– Usualmente determina-se 3 formas normais
(acrescidas eventualmente de mais uma), que podem ser estendidas em mais 2.
– mas no total são 8
![Page 13: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/13.jpg)
Normalização
• Porque?
• Para diminuir as dificuldades e os problemas (anomalias) em operações de transação (inclusão, exclusão, alteração) nos dados.
![Page 14: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/14.jpg)
Primeira Forma Normal
• 1FN: “Uma tabela está na 1FN sse todos os domínios básicos contiverem somente valores atômicos”
• Toda tabela que não possua colunas multivaloradas está na 1FN. – Tabelas em Bancos de Dados Relacionais
tradicionais estão necessariamente na 1FN.
![Page 15: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/15.jpg)
Primeira Forma Normal
• Ex: R1(F#, Status, Cidade, P#, Qtd) onde. – F# é o número do Fornecedor (uma chave
estrangeira)– Status é a situação atual (em termos de
probabilidade de negócio) de uma cidade– P# é a identificação (código) de uma peça
(outra chave estrangeira)– Cidade e Qtd são auto-explicativos.
![Page 16: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/16.jpg)
Primeira Forma Normal
• R1
F# Status Cidade P# Qtd
F1 20 Itabuna P1 300
F1 20 Itabuna P2 200
F1 20 Itabuna P3 400
F1 20 Itabuna P4 200
F1 20 Itabuna P5 100
F1 20 Itabuna P6 100
![Page 17: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/17.jpg)
Primeira Forma Normal
• R1 (continuação)
F2 10 Ilhéus P1 300
F2 10 Ilhéus P2 400
F3 10 Ilhéus P2 200
F4 20 Itabuna P2 200
F4 20 Itabuna P4 300
F4 20 Itabuna P5 400
![Page 18: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/18.jpg)
Primeira Forma Normal
• R1 está na 1FN!
• Anomalias – Inclusão: Só se sabe que um fornecedor está em
uma determinada cidade quando ele passa a oferecer alguma peça
![Page 19: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/19.jpg)
Primeira Forma Normal
• Anomalias – Exclusão: Se for excluída a última linha de um
fornecedor, não se saberá mais em que cidade ele está
– Alteração: Se um fornecedor troca de cidade, muitas linhas precisam ser alteradas (sob pena de haver inconsistência!)
![Page 20: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/20.jpg)
Segunda Forma Normal
• Qual o problema?
• Há dependência entre colunas não chave e chaves diferentes ao mesmo tempo
• F# determina Cidade e o par F# e P# determina Qtd
![Page 21: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/21.jpg)
Segunda Forma Normal
• 2FN: “Uma tabela está na 2FN sse ela está em 1FN e todas as colunas não-chave forem totalmente dependentes da chave primária”
![Page 22: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/22.jpg)
Segunda Forma Normal
• R2(F#, Status, Cidade) e FP(F#, P#, Qtd)
F# Status Cidade
F1 20 Itabuna
F2 10 Ilhéus
F3 10 Ilhéus
F4 20 Itabuna
F5 30 Itapetinga
![Page 23: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/23.jpg)
Segunda Forma Normal
• FP(F#, P#, Qtd) (continuação)
F# P# QtdF1 P1 300F1 P2 200F1 P3 400F1 P4 200F1 P5 100F1 P6 100
F2 P1 300
F2 P2 400
F3 P2 200
F4 P2 200
F4 P4 300
F4 P5 400
![Page 24: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/24.jpg)
Segunda Forma Normal
• R2 e FC estão na 2FN!
• Observar que não há perda de informação!
• Anomalias– Inclusão: O Status de uma cidade só é
determinado se houver algum fornecedor para ela
![Page 25: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/25.jpg)
Segunda Forma Normal
• Anomalias– Exclusão: Removendo-se o último fornecedor
de uma cidade, perde-se o seu Status– Atualização: Para se substituir o Status de uma
cidade, muitas linhas precisam ser trocadas
![Page 26: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/26.jpg)
Terceira Forma Normal
• Qual o problema?
• Há dependência entre colunas não chave e outras colunas também não chave.
• Dependência funcional transitiva:– “Diz-se que A depende transitivamente de C se
A depende de B e B depende de C”
![Page 27: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/27.jpg)
Terceira Forma Normal
• No exemplo, – Status depende de Cidade, e Cidade depende de
F#. – Daí que Status depende transitivamente de F#
![Page 28: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/28.jpg)
Terceira Forma Normal
• 3FN: “Uma tabela está na 3FN sse está na 2FN e todos as colunas não-chave forem dependentes não transitivas da chave primária”
![Page 29: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/29.jpg)
Terceira Forma Normal
• FC(F#, Cidade) CS(Cidade, Status) FP(F#, P#, Qtd)
F# Cidade
F1 Itabuna
F2 Ilhéus
F3 Ilhéus
F4 Itabuna
F5 Itapetinga
Cidade Status
Itabuna 30
Ilhéus 20
Itapetinga 10
![Page 30: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/30.jpg)
Terceira Forma Normal
• FC(F#, Cidade) CS(Cidade, Status) FP(F#, P#, Qtd)
• FC, CS E FP estão na 3FN!
S# P# Qtd
F1 P1 300
F1 P2 200
F1 P3 400
F1 P4 200
F1 P5 100
F1 P6 100
F2 P1 300
F2 P2 400
F3 P2 200
F4 P2 200
F4 P4 300
F4 P5 400
![Page 31: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/31.jpg)
Forma Normal de Boyce-Codd
• Forma normal de Boyce-Codd (BCNF): “Uma tabela está em BCNF se cada determinante for candidato a chave primária”
• Pra que essa novidade?
![Page 32: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/32.jpg)
Forma Normal de Boyce-Codd
• Suposição: Há um “Cadastro de Fornecedores” F(F#, FNome, ...). Sendo que FNome é chave candidata (alternativa), pois também é única.
• A relação alternativa FP’(F#, FNome, P#, Qtd) está na 3FN?
![Page 33: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/33.jpg)
Forma Normal de Boyce-Codd
• Vejamos:– Não há colunas multivaloradas. Logo, está na
1FN – A chave é (F#, P#). Todos os demais colunas
dependem dela. Logo, está na 2FN – Não há dependência entre Qtd e FNome ou
vice-versa (as colunas não-chave). Logo, está na 3FN
• Resposta: SIM!
![Page 34: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/34.jpg)
Forma Normal de Boyce-Codd
• Mas não está na BCNF.
• Anomalias:– Alteração: Para se trocar o nome de um
fornecedor, muitas linhas terão que ser modificadas, ou gera-se inconsistência
• Esta Forma normal é, então, interessante como um aperfeiçoamento da 3a forma.
![Page 35: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/35.jpg)
Quarta Forma Normal
• Dependência de Múltiplos Valores (ou Multivalorada)
• Até o presente estudo a Dependência Funcional é o fato de que uma coluna determina unicamente o valor de outra– Não é, porém, a visão mais completa
![Page 36: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/36.jpg)
Quarta Forma Normal
• Tomemos um exemplo:
• (Projeto, Funcionários, Computadores)
• Um projeto tem vários funcionários alocados para ele, e será desenvolvido em vários computadores.
• Cada computador e cada funcionário é associado a apenas um projeto
![Page 37: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/37.jpg)
Quarta Forma Normal
• Uma visão (não normalizada) seria:
P# FNome C#
P1 JoséJoão
C1C5
P2 CarlosAna
C4C6C7
P3 PedroMartaJulia
C2C3
![Page 38: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/38.jpg)
Quarta Forma Normal
• Como se poderia implementar isso num Banco de Dados Relacional?
• Uma alternativa seria a criação de uma tabela PFC(P#, Fnome, C#) com todas as combinações de alocações possíveis
![Page 39: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/39.jpg)
Quarta Forma Normal
• Ficaria:
P# Fnome C#
P1 José C1
P1 José C5
P1 João C1
P1 João C5
P2 Carlos C4
P2 Carlos C6
P2 Carlos C7
![Page 40: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/40.jpg)
Quarta Forma Normal
• Continuação:
P2 Ana C4
P2 Ana C6
P2 Ana C7
P3 Pedro C2
P3 Pedro C3
P3 Marta C2
P3 Marta C3
P3 Julia C2
P3 Julia C3
![Page 41: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/41.jpg)
Quarta Forma Normal• A relação PFC está na 3FN?
– Não possui multivalorados
– Não possui dependências parciais
– Não possui dependências transitivas
• SIM!• Está na BCNF?
– Todo mundo é chave (não há determinantes não chaves candidatos)
• SIM!
![Page 42: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/42.jpg)
Quarta Forma Normal
• Anomalias:
• De inclusão: Como incluir um novo projeto ainda sem computador e/ou funcionários?
• De exclusão: Excluindo-se todos os computadores de um projeto, como saber os funcionários dele?
![Page 43: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/43.jpg)
Quarta Forma Normal
• Anomalias:
• De alteração– Trocar um computador de um projeto para
outro, ou um funcionário: Alteração de várias linhas
– Alocar mais um computador ou funcionário para um projeto: Idem
![Page 44: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/44.jpg)
Quarta Forma Normal
• Qual o problema?
• Há uma dependência multivalorada: Apesar de não determinar unicamente um funcionário ou um computador, P# determina um conjunto bem definido e único de C# ou de FNome
![Page 45: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/45.jpg)
Quarta Forma Normal
• Dependência de Múltiplos Valores (MVD):
• Dada uma relação R com atributos A, B e C, a dependência de múltiplos valores R.A R.B vale para R sse o conjunto de valores que se combinam com um dado par (valores de A e de C) depender somente de A e for independente de C.
![Page 46: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/46.jpg)
Quarta Forma Normal
• MVD R.A R.B R.A R.C – Se R.A determina multivaloradamente R.B,
então também determina multivaloradamente R.C
• MVD R.A R.B|R.C• Como na dependência funcional vista até
agora uma coluna determina apenas um elemento em outra, pode-se dizer que a DP é um caso especial de MVD
![Page 47: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/47.jpg)
Quarta Forma Normal
• 4NF: Uma relação R está na quarta forma normal sse sempre que existir uma MVD em R (AB), todos os atributos de R sejam funcionalmente dependentes de A ( ou seja, A X para qualquer X em R)
![Page 48: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/48.jpg)
Quarta Forma Normal
• Como fica?– Cria-se uma tabela PF(P#, Fnome) e uma tabela
PC(P#, C#)
• Temos P# Fnome e P#C#
• Ou P# C# e P#Fnome
• Atendendo à 4FN
![Page 49: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/49.jpg)
Quarta Forma Normal
• Relações:
P# Fnome
P1 José
P1 João
P2 Carlos
P2 Ana
P3 Pedro
P3 Marta
P3 Julia
P# C#
P1 C1
P1 C5
P2 C4
P2 C6
P2 C7
P3 C2
P3 C3
![Page 50: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/50.jpg)
Normalização
• De modo geral os diagramas de modelagem de dados (diagramas de classes, MER, etc.) tendem a distribuir os dados já na 3FN, normalmente já na BCNF, salvo raríssimas exceções
• Em circunstâncias de projeto, com freqüência, considerações de performance acabam se impondo à observância das Formas Normais
![Page 51: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/51.jpg)
Normalização
• Projetos de bancos de dados multidimensionais ou OLAP não devem se espelhar na normalização tradicional
• A Normalização destina-se a atender melhor às transações (OLTP)
![Page 52: Normalização Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br](https://reader033.vdocuments.net/reader033/viewer/2022051515/552fc182497959413d8f450e/html5/thumbnails/52.jpg)
Normalização.
FIM!
“Qualquer idéia, por mais simples que seja, pode ser expressa em termos complicados”
Lei de Murphy aplicada à TecnocraciaManet