Upload
leonardo-paixao
View
240
Download
3
Embed Size (px)
DESCRIPTION
Aula de Banco de Dados
Citation preview
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