23
Prof. Luiz Vivacqua Projeto de Banco de Dados Banco de Dados I NORMALIZAÇÃO Prof. Luiz Antônio Vivacqua C. Meyer ([email protected])

Banco de Dados I · 2019-05-09 · 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

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Banco de Dados I · 2019-05-09 · 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

Prof. Luiz Vivacqua

Projeto de Banco de Dados

Banco de Dados I

NORMALIZAÇÃO

Prof. Luiz Antônio Vivacqua C. Meyer

([email protected])

Page 2: Banco de Dados I · 2019-05-09 · 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

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

Page 3: Banco de Dados I · 2019-05-09 · 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

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.

Page 4: Banco de Dados I · 2019-05-09 · 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

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.

Page 5: Banco de Dados I · 2019-05-09 · 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

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.

Page 6: Banco de Dados I · 2019-05-09 · 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

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

Page 7: Banco de Dados I · 2019-05-09 · 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

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

Page 8: Banco de Dados I · 2019-05-09 · 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

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

Page 9: Banco de Dados I · 2019-05-09 · 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

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

Page 10: Banco de Dados I · 2019-05-09 · 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

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

Page 11: Banco de Dados I · 2019-05-09 · 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

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.

Page 12: Banco de Dados I · 2019-05-09 · 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

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:

Page 13: Banco de Dados I · 2019-05-09 · 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

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.

Page 14: Banco de Dados I · 2019-05-09 · 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

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

Page 15: Banco de Dados I · 2019-05-09 · 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

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)

Page 16: Banco de Dados I · 2019-05-09 · 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

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?

Page 17: Banco de Dados I · 2019-05-09 · 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

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

Page 18: Banco de Dados I · 2019-05-09 · 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

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)

Page 19: Banco de Dados I · 2019-05-09 · 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

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

Page 20: Banco de Dados I · 2019-05-09 · 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

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.

Page 21: Banco de Dados I · 2019-05-09 · 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

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

Page 22: Banco de Dados I · 2019-05-09 · 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

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.

Page 23: Banco de Dados I · 2019-05-09 · 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

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)