Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Banco de Dados I
NORMALIZAÇÃO
Prof. Luiz Antônio Vivacqua C. Meyer
Prof. Luiz Vivacqua
Projeto de Banco de Dados
❑Normalização de RelaçõesO que é ?
– Processo para produzir um projeto lógico a partir do conhecimento deuma implementação existente em algum meio físico tal como umarquivo, formulário e relatório.
Como é feito?
– É um processo formal que avalia cada relação sob os critérios de cada
forma normal e as decompõe, caso seja necessário.
Objetivo?
– O objetivo a ser alcançado é substituir um conjunto de relações poroutro minimizando redundâncias e anomalias de atualização(inclusão, alteração e exclusão).
Prof. Luiz Vivacqua
Projeto de Banco de Dados
❑ Normalização
▪ PROCESSO
➢ Os esquemas de relações que não atendam a certas condições (definidas
pelas formas normais) são decompostos em esquemas de relações
menores que possuem as propriedades desejadas.
➢ O procedimento de normalização proporciona ao projetista do banco de
dados:
• Uma estrutura formal para a análise de esquemas de relações com base em
suas chaves e nas dependências funcionais de seus atributos.
• Uma série de testes para garantir que o esquema do banco de dados atinja o
grau de normalização desejado.
Prof. Luiz Vivacqua
Projeto de Banco de Dados
❑ Normalização
• Embora existam varias formas normais de alto grau, como as 4FN e
5FN, a utilidade prática destas formas normais é questionável devido as
restrições as quais são baseadas serem difíceis de entendidas e detectadas
pelos projetistas e usuários.
• Em termos práticos, o usual é dar atenção a normalização até as formas
normais 3FN ou BCNF.
Prof. Luiz Vivacqua
Projeto de Banco de Dados
• 1A FORMA NORMAL (1FN): É considerada parte da
definição formal de uma relação no modelo relacional.
Uma relação está na Primeira Forma Normal (1FN) se
todos os atributos contiverem valores atômicos e não
existirem tuplas duplicadas.
• Ou seja, a 1FN impede que haja ‘relações dentro de
relações’ e atributos multivalorados, como por exemplo, um
vetor.
Prof. Luiz Vivacqua 6
Projeto de Banco de Dados
❑ Considere o esquema de tabela INSCRIÇÃO, em que um sócio pode
estar matriculado em várias atividades esportivas.
▪ INSCRIÇÃO (matricula, nome, {atividade (modalidade, preço)}),
▪ {( )} indica que o atributo atividade é multivalorado e composto.
INSCRIÇÃO
Matricula Nome Modalidade Preço
1267 João Ribeiro Natação
Musculação
Pilates
150,00
120,00
150,00
6590 Maria Ramos Natação
Pilates
150,00
150,00
8786 Antonio Vieira Judô 80,00
0324 Ana Rocha Musculação
Pilates
120,00
150,00
Prof. Luiz Vivacqua 7
Projeto de Banco de Dados
❑ A tabela INSCRIÇÃO não está na 1FN, pois as colunas
modalidade e preço não possuem valores atômicos.
INSCRIÇÃO
Matricula Nome Modalidade Preço
1267 João Ribeiro Natação
Musculação
Pilates
150,00
120,00
150,00
6590 Maria Ramos Natação
Pilates
150,00
150,00
8786 Antonio Vieira Judô 80,00
0324 Ana Rocha Musculação
Pilates
120,00
150,00
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Processo para obter a 1FN:• Eliminação dos atributos multivalorados.
• Determinação da nova chave primária: Pk (matricula, modalidade)
Matricula Nome Modalidade Preço
1267 João Ribeiro Natação 150,00
1267 João Ribeiro Musculação 120,00
1267 João Ribeiro Pilates 150,00
6590 Maria Ramos Natação 150,00
6590 Maria Ramos Pilates 150,00
8786 Antonio Vieira Judô 80,00
0324 Ana Rocha Musculação 120,00
0324 Ana Rocha Pilates 150,00
INSCRIÇÃO
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Anomalias ?
Matricula Nome Modalidade Preço
1267 João Ribeiro Natação 150,00
1267 João Ribeiro Musculação 120,00
1267 João Ribeiro Pilates 150,00
6590 Maria Ramos Natação 150,00
6590 Maria Ramos Pilates 150,00
8786 Antonio Vieira Judô 80,00
0324 Ana Rocha Musculação 120,00
0324 Ana Rocha Pilates 150,00
INSCRIÇÃO
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Anomalias Existentes:
1. Redundância.
2. Se Antonio Vieira deixar de ser sócio, perde-se a informação que judô custa 80,00.
3. Se quisermos incluir uma nova modalidade, por exemplo, hidroginástica, é preciso
também incluir algum sócio para a modalidade.
Matricula Nome Modalidade Preço
1267 João Ribeiro Natação 150,00
1267 João Ribeiro Musculação 120,00
1267 João Ribeiro Pilates 150,00
6590 Maria Ramos Natação 150,00
6590 Maria Ramos Pilates 150,00
8786 Antonio Vieira Judô 80,00
0324 Ana Rocha Musculação 120,00
0324 Ana Rocha Pilates 150,00
INSCRIÇÃO
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Uma relação está na Segunda Forma Normal (2FN) se está
na Primeira Forma Normal e não existir
dependência funcional parcial entre a chave
e os demais atributos não primários.
Dependência Funcional:
É um relacionamento entre pelo menos dois atributos. Por exemplo, dado
uma relação R (A, B, C, D), onde A, B, C, D são atributos, ocorre uma
dependência funcional entre atributos de R se conhecendo o valor de um
atributo, consegue-se determinar um único valor de outro atributo. Por
exemplo, se A determina C.
Notação: A->C
Atributo não primário: atributo que NÃO é parte de uma
chave candidata.
Prof. Luiz Vivacqua
Projeto de Banco de Dados
❑Dependência Funcional
Código Nome Cidade
10 Jurídico Rio de Janeiro
20 Pessoal Rio de Janeiro
30 Financeiro São Paulo
Dependências Funcionais:?
Exemplo:
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Dependência Funcional - Observações:
OBS1:
Se X-> (Y,Z), então X->Y e X->Z
Se (X,Y) -> Z não implica em X->Z ou Y->Z.
OBS2:
Uma coluna depende parcialmente da chave se para que
seu valor seja determinado não é necessário conhecer a
chave como um todo, mas sim somente uma parte da chave.
OBS3:
Se a chave da relação é definida por somente uma
coluna, então a relação está na 2FN.
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Processo para obtenção da 2FN:
1 – Para as colunas que não fazem parte da chave analisar se o seu valor é
determinado por parte ou totalidade da chave.
INSCRIÇÃO
Análise das dependências funcionais:
Matricula -> nome modalidade-> preço
Matricula Nome Modalidade Preço
1267 João Ribeiro Natação 150,00
1267 João Ribeiro Musculação 120,00
1267 João Ribeiro Pilates 150,00
6590 Maria Ramos Natação 150,00
6590 Maria Ramos Pilates 150,00
8786 Antonio Vieira Judô 80,00
0324 Ana Rocha Musculação 120,00
0324 Ana Rocha Pilates 150,00
Prof. Luiz Vivacqua
Projeto de Banco de Dados
2 – As colunas que são dependentes funcionais parciais da Pk formarão
novas tabelas cuja chave primária será à parte da chave de qual dependem.
SÓCIO
matricula nome
1267 João Ribeiro
6590 Maria Ramos
8786 Antônio Vieira
0324 Ana Rocha
modalidade preço
Natação 150,00
Musculação 120,00
Pilates 150,00
Judô 80,00
ATIVIDADE
Pk (matricula) Pk (modalidade)
Prof. Luiz Vivacqua
Projeto de Banco de Dados
3 – As colunas com dependência funcional parcial são removidas da
relação original
INSCRIÇÃO
Matricula Modalidade
1267 Natação
1267 Musculação
1267 Pilates
6590 Natação
6590 Pilates
8786 Judô
0324 Musculação
0324 Pilates
Pk (matricula, modalidade)
Esquema final na 2FN:
Inscrição (matricula, modalidade)
Sócio (matricula, nome)
Atividade (modalidade, preço)
Obs: Anomalias Anteriormente
Citadas Resolvidas?
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Uma relação está na Terceira Forma Normal se está na
Segunda Forma Normal, e não existir dependência funcional
entre atributos não primários que não pertencem chave.
Exemplo: Um cliente mora em um único edifício e um edifício tem uma
única taxa.
ADMINISTRAÇÃO
Cliente Edifício Taxa
100 Barão de Mauá 500,00
200 Cidade 800,00
300 Metropolitan 1.000,00
400 Cidade 800,00
Pk (Cliente)
Análise das Dependências funcionais:
Cliente -> Edifício, Cliente -> Taxa
Edifício -> Taxa
Logo a relação está na 2FN mas
não está na 3FN
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Anomalias:Se o cliente 300 for excluído, o valor da taxa para o edifício “Metropolitan” é
perdido
Se a Administradora quiser incluir o valor da taxa para um novo edifício, ela não
poderá fazer até que surja um cliente para o edifício.
ADMINISTRAÇÃO
Cliente Edifício Taxa
100 Barão de Mauá 500,00
200 Cidade 800,00
300 Metropolitan 1.000,00
400 Cidade 800,00
Pk (Cliente)
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Processo para obtenção da 3FN
1 - Identificar as colunas que não fazem parte da chave primária.
2 - Analisar se existe dependência funcional entre estes atributos.
3- As colunas que têm seu valor determinado por uma coluna não chave,
formarão novas tabelas cujas chaves primárias serão as colunas que as determinam.
Administração
Cliente Edifício
100 Barão de Mauá
200 Cidade
300 Metropolitan
400 Cidade
PK (Cliente)
Condomínio
Edifício Taxa
Barão de Mauá 500,00
Metropolitan 1.000,00
Cidade 800,00
PK (Edifício)
Esquema final na 3FN:
Administração (cliente, edifício)
Condomínio (edifício, taxa)
OBS: ANOMALIAS ANTERIORMENTE CITADAS RESOLVIDAS
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Forma Normal Boyce-Codd
1. Foi proposta como uma forma mais simples de 3FN, mas é
considerada mais rígida que a 3FN, isto é, toda relação na
BCNF está na 3FN, porém uma relação na 3FN não está
necessariamente na BCNF.
2. A 3FN não tratou satisfatoriamente casos onde uma
relação tem mais de uma chave candidata, estas chaves são
compostas e possuem atributos em comum.
DEFINIÇÃO: Uma relação está em BCNF se todo
determinante for uma chave candidata.
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Forma Normal Boyce-Codd
Exemplo: Seja ENSINO (estudante, disciplina, professor) uma Relação
com o seguinte significado:
a) Para cada disciplina, cada estudante recebe aula de apenas um Professor.
b) Cada professor ensina somente uma disciplina.
c) Uma disciplina pode ser ensinada por diversos professores.
Estudante Disciplina Professor
100 Matemática José
100 Física Maria
200 Matemática José
200 Física Roberto
ENSINO
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Estudante Disciplina Professor
100 Matemática José
100 Física Maria
200 Matemática José
200 Física Roberto
Forma Normal Boyce-Codd
Chaves Candidatas:
(estudante, disciplina)
(estudante, professor)
Dependências Funcionais:
(estudante, disciplina) -> professor
Professor -> disciplina
Se a PK for (estudante, disciplina) a relação está em 3FN. Se a
PK for (estudante, professor) a relação também está em 3FN. Em
ambos os casos, a relação não está em BCNF porque o
determinante Professor não é uma chave candidata.
Prof. Luiz Vivacqua
Projeto de Banco de Dados
Processo para obtenção da BCFN
1. Identificar as dependências funcionais que violem a BCNF.
2. Para cada dependência funcional achada em 1, criar uma relação com
a PK igual ao determinante.
3. As colunas que têm seu valor determinado em 1, são excluídas da
relação original.
Aplicação da BCNF:
Estudante Professor
100 Jose
100 Maria
200 Jose
200 Roberto
Professor Disciplina
Jose Matemática
Maria Física
Roberto Física
ENSINO (estudante, professor) LECIONA (professor, disciplina)