aula05.1 - normalização

40
Normalização Banco de Dados Autoria: Prof. Thiago Lima Adaptação: Jorge Barreto Universidade Federal de Sergipe Departamento de Computação

Upload: leonardo-paixao

Post on 10-Dec-2015

239 views

Category:

Documents


3 download

DESCRIPTION

Aula de Banco de Dados

TRANSCRIPT

Normalização

Banco de Dados

Autoria: Prof. Thiago Lima Adaptação: Jorge Barreto

Universidade Federal de Sergipe Departamento de Computação

Normalização

• Considere o exemplo de tabela mal projetada:

– O que ocorre se o aluno muda de endereço?

– O que ocorre quando precisamos cadastrar uma nova habilidade?

– O que acontece se removermos um aluno e este é o último relacionado a determinada habilidade?

2

COD ALUNO ENDERECO HABILIDADE

21547 THIAGO AV. AUGUSTA C#

21547 THIAGO AV. AUGUSTA Java

21547 THIAGO AV. AUGUSTA Oracle

21547 THIAGO AV. AUGUSTA SQL Server

Normalização

• A tabela citada sofre do que chamamos de anomalias de atualização: Inserção (INSERT), Atualização (UPDATE) e Remoção (DELETE)

• A solução abaixo seria ideal?

• Qual o problema do esquema acima?

3

COD ALUNO ENDERECO HABILIDADE

21547 THIAGO AV. AUGUSTA C#,

Java,

Oracle,

SQL Server

Normalização

• Considerando o modelo relacional a seguinte solução pode ser dada:

4

COD ALUNO ENDERECO

21547 THIAGO AV. AUGUSTA

COD HABILIDADE

21547 C#

21547 Java

21547 Oracle

21547 SQL Server

Normalização • Definições

– É uma das atividades do projeto lógico de banco de dados;

– Assegura que as relações surgidas possam atender a semântica do sistema de informação projetado;

– Consiste em uma formalização dos bons princípios para o projeto de bancos de dados;

– Processo de refinamento de um projeto de banco de dados com o objetivo de eliminar as anomalias;

• Características

– É um processo intuitivo;

– É baseada no conceito de formas normais;

– As regras de normalização vão de encontro com a análise de desempenho;

5

Normalização

• Tipos de formas normais

– 1 FN, 2 FN, 3 FN e BCNF (Codd)

– 4 FN e 5 FN (Fagin)

• Definição formal: “Uma formalização de ideias simples para aplicações práticas no projeto de banco de dados” (DATE)

• As formas normais visam os seguintes objetivos:

– Reduzir a redundância;

– Eliminar anomalias ao processo de manipulação dos dados de um banco de dados relacional;

6

Dependência Funcional

• A dependência funcional ocorre quando um conjunto de atributos é determinado por um outro conjunto de atributos ou é dependente por esse outro conjunto de atributos;

• Considere o exemplo – “Posto de Lavagem Carango”

7

#COD_CLIENTE

*NOME

*DAT_NASC

*PLACA

*ANO

*MARCA

CLIENTES Observações • O nome e data de nascimento dependem

exclusivamente do cliente • Para cada código do cliente existe um

nome e data de nascimento associado • Dizemos nesse caso que os atributos são

funcionalmente dependentes do código do cliente;

Dependência Funcional

• Outro exemplo – “Posto de Lavagem Carango”

8

#COD_CLIENTE

#PLACA_CARRO

#DATA

*NOME_CLIENTE

*CPF

*COR

*TIPO

*PRECO

DUCHA Observações

• Chave composta;

• NOME_CLIENTE e CPF dependem do cliente – Como os atributos são dependentes funcionais de parte da chave dizemos então que existe uma dependência parcial;

• Cor é dependente da placa do carro;

• Preço é dependente do tipo de lavagem;

Dependência Funcional

• Considerando a relação CLIENTES ...

9

#COD_CLIENTE

*NOME

*DAT_NASC

*PLACA

*ANO

*MARCA

CLIENTES

Observações

• Podemos observar que os atributos NOME e

DAT_NASC são dependentes de toda chave primária (COD_CLIENTE) – Neste caso, classificamos a dependência funcional total ou completa;

Dependência Funcional

• Considerando a relação DUCHA...

10

#COD_CLIENTE

#PLACA_CARRO

#DATA

*NOME_CLIENTE

*CPF

*COR

*TIPO

*PRECO

DUCHA Observações • Podemos observar que o atributo PRECO é

dependente funcional do atributo TIPO, pois o tipo de lavagem que determina o PRECO. Neste caso, como configura uma dependência funcional entre atributos não chave, podemos dizer que é uma dependência transitiva;

Núm Pedido Cód Cliente Nome Cliente Sexo Cód do Produto Nome do Produto Valor do Produto Quantidade Unidade Total Prod

1 1 João M 1 HD 160GB 3.500,00 2 CX 7.000,00

1 1 João M 2 Mouse 150,00 10 CX 1.500,00

1 1 João M 3 Teclado 100,00 100 UN 10.000,00

2 2 Mario M 1 HD 160GB 3.500,00 1 CX 3.500,00

3 1 João M 3 Teclado 100,00 50 UN 5.000,00

4 3 Maria F 2 Mouse 150,00 2 CX 30,00

4 3 Maria F 1 HD 160GB 3.500,00 1 CX 3.500,00

Dependência Funcional

• Problemas causados nas estruturas vistas

– Redundância

– Anomalias

• Inserção (INSERT)

• Alteração (UPDATE)

• Deleção (DELETE)

• Considere a relação “Pedidos”, não normalizada:

11

Anomalias de Manutenção

• Anomalia de inclusão

– Para inclusão de um novo cliente ou um novo produto é necessário que esteja associado a um pedido;

– Caso não esteja associado todos os valores deverão receber NULL;

• Anomalia de atualização

– A alteração do nome de um cliente, ocasiona a atualização de todos os registros que o cliente aparece;

– Caso todos os registros que um determinado cliente não forem atualizados, a base de dados ficará inconsistente;

12

Anomalias de Manutenção

• Anomalia de exclusão

– A exclusão de um registro pode ocasionar a deleção de dados que não deveriam ser removidos;

– Caso um pedido seja excluído, as informações de clientes e produtos também o serão;

– Como viabilizar que um cliente seja excluído porém as informações relacionadas ao produto não sejam removidos?

13

Primeira Forma Normal – 1 FN

• Podemos afirmar que uma relação está na primeira forma normal se todos os seus atributos possuem apenas de valores atômicos, ou seja, apenas de valores não vetoriais;

• Exemplo de relação que viola a 1 FN:

14

COD_DISC NOM_DISC ALUNOS

F10234 BANCO DE D. A01, A02, A03

F98423 REDES A03, A04

F33421 S.O A05, A06

Primeira Forma Normal – 1 FN

• Tabelas normalizadas na 1 FN

15

MAT_ALU NOM_ALU

A01 JOSÉ

A02 CINTHIA

A03 CÁSSIA

A04 ROBERTA

A05 SAMARA

A06 NATHALIE

COD_DISC NOM_DISC

F10234 BANCO DE D.

F98423 REDES

F33421 S.O

COD_DISC MAT_ALU

F10234 A01

F10234 A02

F10234 A03

F98423 A03

F98423 A04

F33421 A05

F33421 A06

Segunda Forma Normal – 2 FN

• A primeira condição é que a relação deve estar na 1 FN;

• Uma relação que contenha uma chave primária composta está na segunda forma normal se todos os seus atributos que não fazem parte da chave são dependentes funcionais de toda a chave – É relevante apenas para chaves compostas;

• Caso a relação tenha um único atributo como chave primária, então a mesma já está na 2 FN;

• A segunda formal normal é violada quando um campo não chave é um fato sobre parte da chave;

16

Segunda Forma Normal – 2 FN

• Exemplo de relação que viola a 2 FN

17

#COD_DISC

#MAT_ALU

*NOTA

*NOM_DISC

NOTAS #COD_DISC

*NOM_DISC

DISCIPLINAS

#COD_DISC

#MAT_ALU

*NOTA

NOTAS

Dependência Parcial

Anomalia de atualização

Terceira Forma Normal – 3 FN

• Definição: Uma relação está na terceira forma normal se estiver na 2 FN e não existir dependência entre seus atributos não chaves;

• A terceira forma normal é violada quando um campo não chave é um fato acerca de um outro campo não chave;

• Exemplo:

18

COD_EMP NOME_EMP DEPT LOCAL_DEPT

2344 THIAGO LIMA TI BLOCO A, 2º PISO

4998 SUZANA RH BLOCO C, 1º PISO

3325 ADRIANA CTB BLOCO E, TÉRREO

Terceira Forma Normal – 3 FN

• Exemplo...

– É importante perceber que cada departamento tem apenas uma localização, independente do empregado, então o local é um fato acerca do departamento;

– Problemas:

• Inclusão/Exclusão: se não houver empregado, perdemos a localização do departamento;

• Alteração: Ao mudar de local o departamento, vários registros serão alterados;

– Solução?

19

Terceira Forma Normal – 3 FN

• Normalização do exemplo conforme 3 FN

20

COD_EMP NOME_EMP DEPT

2344 THIAGO LIMA TI

4998 SUZANA RH

3325 ADRIANA CTB

DEPT LOCAL_DEPT

TI BLOCO A, 2º PISO

RH BLOCO C, 1º PISO

CTB BLOCO E, TÉRREO

Forma Normal Boyce/Codd

• A tabela está na forma de Boyce/Codd se toda determinante funcional existente for chave candidata;

• Pode ser encarada como uma forma normal mais criteriosa e restritiva que a terceira forma normal;

• Comtempla em uma única definição a segunda e terceira formas normais;

• Toda entidade que está na BCNF também está na 3 FN, o contrário não é garantido;

21

Forma Normal Boyce/Codd

• Considere a relação que armazena dados sobre estudantes, cursos e tutores;

• Iremos impor também as seguintes restrições a relação:

– Um curso pode ter vários tutores;

– Entretanto, cada tutor deve estar associado a somente um curso;

– Em cada curso, um determinado aluno possui um tutor;

22

#CURSO

#ALUNO

*TUTOR

TUTORIAS

Considere a relação:

A relação está na 3FN pois a mesma está na segunda forma normal e não apresenta dependências transitivas entre os atributos não chave;

Forma Normal Boyce/Codd

CURSO ESTUDANTE TUTOR

CC ANDRE PATRICIA

CC CARLOS CARLA

SI ANDRE MOEMA

SI JOAO TEREZA

SI ALBERTO MOEMA

23

Note que: - Curso e estudante

determinam o tutor; - O tutor é

determinado pelo curso;

Forma Normal Boyce/Codd

• Apesar de estar na 3FN, podemos observar as seguintes anomalias:

– Inclusão (INSERT): Não é possível associar um tutor a um Curso sem que o mesmo esteja associado a um aluno;

– Modificação (UPDATE): Se o nome do Tutor mudar, vários registros serão afetados;

• Essas anomalias existem pois a relação não está na forma normal de Boyce-Codd em função da dependência funcional (Tutor) -> Curso;

24

#ALUNO

CURSO

Forma Normal Boyce/Codd

• A solução para este cenário seria:

25

ALUNOS

#ALUNO

#TUTOR

ESTUDANTES_TUTORES

#TUTOR

CURSO

TUTORES_CURSOS

Quarta Forma Normal - 4 FN

• Definição

– Um registro não deve conter dois ou mais fatos multivalorados e independentes, acerca de uma entidade;

• Características

– Para estar na 4FN deve estar na 3FN;

– A 4 FN reza acerca dos relacionamentos múltiplos;

• Exemplo

– Um colaborador possui algumas habilidades, comuns á vários colaboradores e domina idiomas diferentes;

– O fato de dominar um idioma não influencia no domínio da habilidade ou vice-versa;

26

Quarta Forma Normal – 4 FN

• Considere a tabela não normalizada:

• Problemas

– A atualização de uma habilidade ou idioma implica na atualização de diversos registros;

– A exclusão de uma habilidade implica na exclusão de vários registros;

27

Colaborador Habilidade Idioma

João cozinheiro inglês

João motorista francês

João cozinheiro francês

João motorista inglês

Maria secretária inglês

Maria secretária alemão

Quarta Forma Normal – 4 FN

• Tabelas normalizadas:

28

Colaborador Habilidade

João cozinheiro

João motorista

Maria secretária

Colaborador Idioma

João francês

João inglês

Maria inglês

Maria alemão

Quarta Forma Normal – 4 FN

• A seguinte relação R tenta capturar dois relacionamentos 1:N (Curso:Professor) e (Curso:Livro). Contudo, não existe relação entre Professor e Livro.

29

Curso Professor Livro

C1 André L1

C2 André L2

C1 João L3

C2 Ricardo L5

C3 Pedro L5

Quarta Forma Normal – 4 FN

• Para manter as tuplas da Relação anterior consistentes, precisaríamos de uma tupla para representar cada combinação;

• Essa restrição é chamada de Dependência Multivalorada;

• Curso Professor

• Curso Livro

30

Quarta Forma Normal – 4 FN

• Exclusão de um livro implica na exclusão de várias tuplas;

• Modificação de um livro implica na modificação de várias tuplas;

• A Inserção de um livro para um curso implica na obrigatoriedade de um professor;

• Solução:

Curso_Professor(#Curso, #Professor)

Curso_Livro(#Curso, #Livro)

31

Quinta Forma Normal - 5 FN

• Definição

– A relação viola a 5 FN quando uma informação da mesma não pode ser reconstruída a partir de quantidades menores de informação;

• Características

– Deve estar na 4 FN;

– Ocorre quando relações submetidas a quarta forma normal não podem ser reconstruídas a sua forma original a partir das novas relações geradas;

– Neste caso, dizemos que existe uma dependência de junção;

– Também é chamada de forma normal projeção / função (PJNF);

32

Quinta Forma Normal – 5 FN

• Suponha a relação de venda:

33

Vendedor Fabricante Tipo Veículo

João Ford automóvel

João Ford caminhão

João Ford trator

João GM automóvel

João GM caminhão

Mário Ford automóvel

Mário GM caminhão

Quinta Forma Normal – 5 FN

• Pergunta:

– Quais os veículos um vendedor vende e de qual fabricante?

• Suponha a regra:

– “se um vendedor vende um certo tipo de veículo e ele representa um fabricante daquele tipo de veículo, então ele vende aquele tipo de veículo para aquele fabricante”

34

Quinta Forma Normal – 5 FN

• A relação pode ser particionada da seguinte forma:

35

Vendedor Fabricante

João Ford

João GM

Mário GM

Mário Ford

Vendedor Veículo

João automóvel

João caminhão

João trator

Mário caminhão

Mário automóvel

Fabricante Veículo

Ford automóvel

Ford caminhão

Ford trator

GM caminhão

GM automóvel

Note que: - As redundâncias são eliminadas - O crescimento das tabelas

normalizadas é menor

Análise de Redundância

• O controle de dados redundantes é um fator primordial para garantia da consistência das informações geradas por um banco de dados;

• A verificação das formas normais detecta redundâncias internas nas relações;

• É preciso checar através da análise do modelo possíveis redundâncias entre tabelas diferentes, ou seja, evitar que a mesma informação seja representada mais de uma vez;

36

Redução de Valores Nulos

• Evitar ao máximo a ocorrência exagerada de atributos opcionais nas relações;

• A ocorrência exagerada de atributos opcionais complica o processo de consulta e recuperação de informações da base;

• Existem detalhes de armazenamento que devem ser considerados para valores nulos;

37

Normalização: Qual o resultado?

• Robustez

• Eficiência

• Facilidade das operações de manutenção

• Flexibilidade

• Confiabilidade

38

Leitura Complementar

• NAVATHE, Shamkant B, ELMASRI, Ramez. Sistemas de Banco de

Dados. Addison Wesley BRA, 2005.

– Capítulo 15: Fundamentos de dependências funcionais e

normalização para bancos de dados relacionais;

– Capítulo 16: Algoritmos de projeto de banco de dados

relacional e demais dependências;

• DATE, Christopher J. Introdução a Sistemas de Banco de

Dados. 8 ed. Rio de Janeiro: Campus, 2004.

– Capítulo 11: Dependências funcionais;

– Capítulo 12: Normalização Avançada I: 1 FN, 2 FN, 3 FN e

FNBC;

– Capítulo 13: Normalização Avançada II: Formas normais

maiores;

39

Exercício de Normalização

40