Documente Academic
Documente Profesional
Documente Cultură
Normalizao
Motivao O processo chamado de Normalizao uma das atividades do projeto lgico de banco de dados Seu objetivo assegurar que as relaes surgidas durante o projeto conceitual e lgico possam atender perfeitamente semntica da aplicao (sistema) em questo
Motivao Antes de definir de maneira mais formal o que Normalizao, vamos observar um pequeno exemplo.
Identidade Nome Endereo Habilidade
F F F F
Motivao A mesma sofre do que chamamos de anomalias de atualizao: Modificao, Insero, Remoo O que acontece se um jogador muda de endereo ? O que acontece se precisamos cadastrar uma nova habilidade ? O que acontece se removemos um jogador e esse o ltimo relacionado a determinada habilidade ?
9924
Carlos
Rua F
9924
Carlos
Identidade
Rua F
Habilidade
Normalizao O que acabamos de fazer foi normalizar a Relao original de maneira que a mesma no apresente redundncias que venham a causar anomalias de atualizao Normalizao o processo de refinamento de um projeto de banco de dados visando eliminar anomalias e inconsistncias. Regras de Normalizao entram em conflito com o desempenho
Este material no pode ser copiado sem autorizao Prof Ricardo Ariel Correa Rabelo
Normalizao Um bom projeto conceitual (um bom diagrama Entidade-Relacionamento) e um bom mapeamento para o modelo relacional so suficientes para normalizar um esquema relacional Nesse contexto, a normalizao utilizada somente para validar o projeto relacional
Dependncia Funcional Sendo A e B dois grupos de atributos de uma relao R, diz-se que B funcionalmente dependente (ou dependente funcional) de A se, sempre que duas tuplas de R coincidirem quanto aos valores assumidos pelos atributos de A, elas necessariamente tambm coincidem quanto aos valores assumidos pelos atributos de B. (A denominado determinante, neste caso) Denota-se: A B (A determina B)
Dependncia Funcional Exemplo: Funcionario(#Matricula, CPF, Nome, Endereo, Departamento) #Matricula #Matricula #Matricula #Matricula CPF Nome Endereo Departamento
Dependncia Funcional Temos tambm: CPF CPF CPF CPF Matricula Nome Endereo Departamento
Dependncia Funcional Dependncia Funcional Parcial Estoque(#Cd_Pea, #Cd_Depsito, Quantidade, Nome_Depsito) (#Cd_Pea,#Cd_Depsito) Nome_Depsito
Dependncia Funcional Dependncia Funcional Transitiva Sendo A, B e C trs grupos de atributos, diz-se que h dependncia transitiva entre C e A se B dependente funcional de A, e C dependente funcional de B. A B C
Dependncia Funcional Exemplo: Curso(#C, Nm_Curso, Id_Professor, Sala_Professor) #C Nm_Curso, Id_Professor, Sala_Professor Sala_Professor
Id_Professor
Formas Normais
Formas Normais
Formas Normais (2FN) A Relao abaixo no se encontra na 2FN Notas (#Cd_Disciplina, #Cd_Estudante, Nota, Nm_Disciplina) (#Cd_Disciplina, #Cd_Estudante) #Cd_Disciplina Nm_Disciplina Nota
Formas Normais (2FN) Notas (#Cd_Disciplina, #Cd_Estudante, Nota, Nm_Disciplina) Problemas com a Relao acima:
Anomalia de Remoo; Anomalia de Modificao; Anomalia de Insero.
Soluo
Extrair a dependncia parcial #Cd_Disciplina Nm_Disciplina para uma outra Relao
Formas Normais
Formas Normais (3FN) A Relao abaixo encontra-se na 2FN, mas no se encontra na 3FN (#Cd_Empregado, Nm_Empregado, Cd_Departamento, Local_Departamento) #Cd_Empregado Nm_Empregado, Cd_Departamento, Local_Departamento Cd_Departamento Local_Departamento
Formas Normais (3FN) (#Cd_Empregado, Nm_Empregado, Cd_Departamento, Local_Departamento) Problemas com a Relao acima:
Anomalia de Insero/Remoo: Se no tem empregado, no tem informaes sobre Departamento; Anomalia de Modificao:Se o Departamento muda de local, vrios registros sero alterados.
Soluo
Extrair a dependncia transitiva #Cd_Departamento Local_Departamento para uma outra Relao
Formas Normais
R(#Curso,#Estudante, Tutor)
Considere tambm as seguintes restries:
Cada curso pode ter n tutores Cada tutor est associado a um nico curso Para cada curso, um estudante possui um tutor
Instncia da Relao R
Curso C1 C1 C2 C2 C2 Estudante Andre Carlos Andre Joao Alberto Tutor Patricia Carla Moema Tereza Moema
Formas Normais (Boyce-Codd) Considere as dependncias existentes (#Curso,#Estudante) (Tutor) Curso Tutor
A relao est na 3FN pois a mesma est na 2FN e no apresenta dependncias transitivas entre atributos no chave
Essas anomalias existem pois a relao no est na forma normal Boyce-Codd em funo da dependncia funcional (Tutor) Curso
Formas Normais (Boyce-Codd) Uma soluo para esse cenrio seria Curso(#Curso,#Estudante) Estudante_Tutor(#Estudante, #Tutor) Tutor_Curso(#Tutor, Curso)
Formas Normais
Formas Normais (4FN) Para manter as tuplas da Relao anterior consistentes, precisaramos de uma tupla para representar cada combinao. Essa restrio chamada de Dependncia Multivalorada Curso Curso
Professor Livro
Formas Normais (5FN) Utilizaremos o exemplo clssico de Companhia, Produto e Vendedor Se vendedores representam companhias, companhias fazem produtos, e vendedores vendem produtos, ento podemos querer armazenar qual vendedor vende determinado produto para determinada companhia
Formas Normais (5FN) Essa informao poderia ser armazenada na seguinte relao R Vendedor Smith Smith Companhia Ford GM Produto carro caminho
Formas Normais (5FN) Vamos supor que tivssemos a seguinte regra: Se um vendedor vende determinado produto, e ele representa uma companhia que faz aquele produto, ento ele vende aquele produto para aquela companhia
Vendedor Smith Smith Smith Smith Jones Companhia Ford Ford GM GM Ford Produto carro caminho carro caminho carro
Prof Ricardo Ariel Correa Rabelo
Formas Normais (5FN) Nesse caso, podemos reconstruir a informao a partir de trs relaes normalizadas, contendo duas colunas cada: Vendedor Smith Smith Jones Companhia Ford GM Ford
Formas Normais (5FN) Companhia Ford Ford GM GM Vendedor Smith Smith Jones Produto carro caminho carro caminho Produto carro caminho carro
Prof Ricardo Ariel Correa Rabelo