DEPENDÊNCIA FUNCIONAL E NORMALIZAÇÃO Professor Victor Sotero Banco de Dados 1
DEPENDÊNCIA FUNCIONAL Uma dependência funcional é representada por: A B A - denominado determinante Banco de Dados 2
DEPENDÊNCIA FUNCIONAL Exemplo de dependências funcionais: Departamento N_funcionário? Não, pois Departamento 900 => {1021, 1023} Nome_Próprio N_funcionário? Não, pois podem haver múltiplos valores de N_funcionário para o mesmo Nome_Próprio. Funcionários com mesmo nome N_funcionário Departamento? Sim, pois conhecendo o N_funcionário, saberá que ele só pode participar de um Departamento. Banco de Dados 3
DF Outro exemplo O preço é funcionalmente dependente de artigo? (Artigo Preço)? Não, o mesmo artigo pode ter preços distintos em diferentes papelarias. Banco de Dados 4
NORMALIZAÇÃO O problema central no desenho de modelos de dados relacionaisé a forma de determinar quais são as relações necessárias. A teoria da dependência funcional associada à normalização dos dados, é a forma de ultrapassar este problema, facilitando o desenho do modelo de dados relacional. A normalização consiste em Formas Normais. Banco de Dados 5
NORMALIZAÇÃO A normalização é uma técnica formal que examina os dados e os agrupa na melhor forma que facilite futuras alterações e minimize o impacto dessas mudanças no funcionamento do sistema. São divididas em 5 etapas, mas normalmente só utiliza-se até a terceira etapa. Banco de Dados 6
PRIMEIRA FORMA NORMAL -1FN Uma relação estará na Primeira Forma Normal, se e somente se todos os domínios básicos tiverem apenas valores atômicos (sem repetição de valores). Em outraspalavraspodemos definir que aprimeira forma normalnão admite repetições ou campos que tenha mais que um valor, além de não admitir atributo composto. Banco de Dados 7
EXEMPLO PRIMEIRA FORMA NORMAL Tabela desnormalizada, ou seja, não está na Primeira Forma Normal. Todos osclientespossuem Rua, CEP e Bairro, e essas informações estão na mesma célula da tabela, logo ela não está naprimeira forma normal. Para normalizar, deveremos colocar cada informação em uma coluna diferente. Está tabela ainda não está na primeira forma normal Banco de Dados 8
PRIMEIRA FORMA NORMAL(cont.) Mesmo com o ajuste anterior, a tabela ainda não está naprimeira forma normal, pois há clientes com mais de um telefone e os valores estão em uma mesma célula. Para normalizar será necessário criar uma nova tabela para armazenar os números dos telefones e o campo-chave da tabela cliente. Tabela na primeira formal normal Tabela na primeira formal normal Nesse exemplo foi gerado uma segunda entidade para que a primeira forma normal fosse satisfeita, contudo é possível manter a tabela original, admitindo-se valores duplos em uma mesma coluna, como exemplo o campo telefone ficaria assim: 11-3400-3563 e 19-3500-9650. Mas estaria desnormalizada. Banco de Dados 9
SEGUNDA FORMA NORMAL 2FN Uma tabela está nasegunda Forma Normal2FN se ela estiver na 1FN e todos os atributos não chave forem totalmente dependentes da chave primária (dependente de toda a chave e não apenas de parte dela). Banco de Dados 10
PROCEDIMENTOS 2FN a) Identificar os atributos que não são funcionalmente dependentes de toda a chave primária; b) Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles. A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes. Banco de Dados 11
SEGUNDA FORMA NORMAL Tabela não está na Segunda forma normal O nome do produto depende do código do produto, porém não depende de N_pedido que é a chave primária da tabela, portanto não está nasegunda forma normal. Isto gera problemas com a manutenção dos dados, pois se houver alteração no nome do produto teremos que alterar em todos os registros da tabela venda. Para normalizar esta tabela teremos de criar a tabela Produto que ficará com os atributos Código_produto e produto e na tabela Venda manteremos somente os atributos N_pedido, código_produto, quant, valor_unit e subtotal. Veja o resultado a seguir: Banco de Dados 12
SEGUNDA FORMA NORMAL (cont.) Tabela na segunda forma normal Conforme visto na Primeira forma normal, quando aplicamos normalização é comum gerar novas tabelas a fim de satisfazer as formas normais que estão sendo aplicadas. Tabela na segunda forma normal Banco de Dados 13
TERCEIRA FORMA NORMAL -3FN Uma tabela está naterceira Forma Normal3FN se ela estiver na 2FN e se nenhuma coluna não-chave depender de outra coluna não-chave. Naterceira forma normaltemos de eliminar aqueles campos que podem ser obtidos pela equação de outros campos da mesma tabela. Banco de Dados 14
PROCEDIMENTOS -3FN a)identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave; b) Removê-los. A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes. Banco de Dados 15
TERCEIRA FORMA NORMAL 3FN Considerando ainda a nossa tabela Venda, veremos que a mesma não está naterceira forma normal, pois o subtotal é o resultado da multiplicação Quant X Valor_unit, desta forma a coluna subtotal depende de outras colunas não-chave. Para normalizar esta tabela naterceira forma normalteremos de eliminar a coluna subtotal, como no exemplo a seguir: Tabela na terceira forma normal Banco de Dados 16