P. 1
Material Didatico Normalizacao Prof Eurico Antunes

Material Didatico Normalizacao Prof Eurico Antunes

|Views: 168|Likes:
Publicado pormatheustche

More info:

Published by: matheustche on Oct 15, 2010
Direitos Autorais:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

09/21/2012

pdf

text

original

Faccat Curso de Sistemas de Infomação Disciplina de Banco de Dados Prof.

Eurico Antunes Normalização O desenvolvimento de software, em algumas situações, leva o profissional da área de TI a necessidade de reaproveitamento de dados manipulados por sistemas anteriormente utilizados no ambiente onde se está trabalhando. Nestas ocasiões por vezes torna-se necessário o processo de engenharia reversa, que consiste de uma análise do sistema afim de definirmos o modelo de negócio (nível mais abstrato) implementado. Este processo é o inverso do processo de análise e projeto de software. Quando pensamos em reestruturação de sistemas, e portanto nos dados armazenados, devemos lembrar que, por vezes, os dados legados não estão estruturados da melhor forma possível quando consideramos o projeto de uma base de dados relacional. Para situações como esta existem regras para adequação dos dados ao formato relacional, regras estas que tornam o conjunto de dados corretamente projetados. Estas regras são denominadas regras de Normalização. Existem inúmeras regras de normalização, 4 delas são ditas suficientes para a construção de uma base de dados bem estruturada. Estas regras serão apresentadas a seguir: Para apresentarmos as regras de normalização utilizaremos o exemplo a seguir como exemplo de um conjunto de dados não normalizados:

a passagem à primeira forma normal por decomposição de tabelas é feita nos seguintes passos: 1. Para transformar um esquema de tabela não-normalizada em um esquema na 1FN há duas alternativas: . Considerando apenas a correção do processo de normalização.Construir uma tabela para cada tabela aninhada Cria-se uma tabela referente a própria tabela que está sendo normalizada e uma tabela para cada tabela aninhada. Tipo. fica fácil visualizar a tabela na 1FN (primeira forma normal). preferimos a segunda alternativa. A chave primária da tabela na 1FN é idêntica a chave da tabela não normalizada. Cat. podem ser perdidas relações entre informações. é criada uma tabela na 1FN composta pelas seguintes coluas: . Descr. como ocorre na segunda alternativa. Ao decompor uma tabela em várias tabelas. isto é. como a do exemplo. Sal.O conjunto de dados apresentados acima. organizado em forma de tabelas não normalizadas (identificadas pela sigla NN) seria apresentada da seguinte maneira: E teríamos para tal o seguinte esquema de tabelas aninhadas: Proj (CodProj. Na decomposição de tabelas. 2. DataIni. Entretanto. Passagem à prmeira forma normal Diz que uma tabela está na forma normal quando esta não contém tabelas aninhadas. (CodEmp.Construir uma única tabela com redundância de dados Cria-se uma tabela na qual os dados das linhas externas à tabela aninhada são repetidos para cada linha da tabela aninhada. sem as tabelas aninhadas. Nome. A motivação é de ordem prática. a primeira alternativa é a preferida. É criada uma tabela na 1FN referente a tabela não normalizada e que contém apenas as colunas com valores atômicos. para fins práticos. . No caso de uma tabela não normalizada. que possui apenas uma tabela aninhada. Para cada tabela aninhada. TempAl)) 1. mesmo sabendo que ela pode levar a modelos imperfeitos.

a passagem à 2FN é o seguinte: . TempAl) 2. Nome. . CodEmp. não contém dependências parciais. quando.a chave primária de cada uma das tabelas na qual a tabela em questão está aninhada. Tipo. DataIni. Passagem à segunda forma normal Uma tabela encontra-se na segunda forma normal. Sal.Copiar para a 2FN cada tabela que tenha chave primária simples ou que não tenha colunas além chave. .as colunas da própria tabela aninhada 3. além de estar na 1FN. Cat. Descr) ProjEmp(CodProj. Para cada coluna não chave fazer a seguinte pergunta: .. Dependência (funcional) parcial ocorre quando uma coluna depende apenas de ma parte de uma chave primária composta. São definidas as chaves primárias das tabelas na 1FN que correspondem a tabelas aninhadas. após a aplicação da primeira forma normal (1FN) os seguintes esquemas: Sendo os esquemas das tabelas acima : Proj (CodProj. Para o conjunto de dados utilizados neste texto teríamos então.Para cada Tabela com chave primária composta e com pelo menos uma coluna não chave: Criar na 2FN uma tabela com as chaves primárias da tabela na 1FN. De forma mais precisa.

TempAl) Emp(CodEmp. Caso a Coluna dependa apenas de parte da chave: Criar.) Como resultado após a aplicação da segunda forma normal teremos o conjunto de dados de exemplo organizado segundo os esquemas apresentados abaixo: . Cat. DataIni. caso ainda não existir. CodEmp. Sal. Para o exemplo utilizado neste texto temos as seguintes dependências funcionais parciais: Subdividindo as tabelas e colocando-as na segunda forma normal teremos: E teremos então os seguintes esqeumas: ProjEmp(CodProj.“a coluna depende de toda a chave ou de apenas parte dela?” Caso a Coluna dependa de toda a chave Criar a coluna correspondente na tabela coma chave completa na 2FN. Nome. uma tabela na 2FN que tenha como chave primária a parte da chave que é determinante da coluna em questão. Criar a coluna dependente dentro da tabela na 2FN.

Passagem à terceira forma normal Uma tabela encontra-se na terceira forma normal.Para tabelas com duas ou mais colunas não chave: a) Criar uma tabela no esquema da 3FN com a chave primária da tabela em questão. quando . depende de outra coluna ou conjunto de colunas da tabela. . além de estar na segunda forma normal.Copiar para o esquema na 3FN cada tabela que tenha menos que duas colunas não chave. pois neste caso não há como haver dependências transitivas. b) Para cada coluna não chave fazer a seguinte pergunta: . não contém dependências transitivas. além de depender da chave primária da tabela .3. o processo de passagem da 2FN a 3FN é o seguinte: . Dependências transitivas (dependências funcionais transitivas) ocorrem quando uma coluna. De forma mais precisa.

caso ainda não exista.“A coluna depende de alguma outra cluna não chave (dependência transitiva ou indireta)?” Caso a coluna dependa apenas da chave • Copiar a coluna para a tabela na 3FN. uma tabela no esquema na 3FN que tenha como chave primária a coluna da qual há a dependência indireta. Para os exemplos apresentados identificamos as seguintes dependências funcionais transitivas e sua correspondente solução: Teremos após aplicação da 3FN a seguinte organização para o conjunto de dados: . • Copiar a coluna dependente para a tabela criada. • A coluna determinante deve permanecer também na tabela original. Caso a coluna depender de outra coluna • Criar.

Passagem à quarta forma normal Para a maioria dos documentos e arquivos. além de estar na 3FN. Uma tabela encontra-se na quarta forma normal. Destas a única que tem importância na prática da engenharia reversa é a quarta forma normal (4FN).4. Para exemplificarmos esta situação utilizaremos a tabela abaixo: UTILIZAÇÃO CodProj 1 1 1 1 1 1 2 CodEmp 1 2 3 1 2 3 2 CodEquip 1 1 1 2 2 2 2 . a decomposição até a 3FN é suficiente para obter o esquema de um banco de dados correspondente ao documento. Na literatura aparecem outras formas normais. não contém dependências multi-valoradas. a 4FN e a 5FN. como a forma normal de Boyce/Codd. quando.

CodEquip 1 1 1 2 2 2 Para representar um dependência funcional multi-valorada usa-se uma expressão semelhante a usada para representar dependências funcionais simples substituindo a seta simples por uma seta dupla..2 3 3 3 3 3 3 4 2 3 4 3 4 3 4 2 4 1 1 3 3 5 5 5 Podem ser observadas as dependências funcionais multi-valoradas em: UTILIZAÇÃO CodProj 1 1 1 1 1 1 CodEmp 1 2 3 1 2 3 . Na tabela UTILIZAÇÃO (apresentada acima). há as seguintes dependências: CodProj CodProj CodEmp CodEquip Aplicando-se a 4FN teremos então: ProjEquip: CodProj 1 1 2 2 3 3 3 4 ProjEmp: CodProj 1 1 1 2 3 CodEmp 1 2 3 2 3 CodEquip 1 2 2 4 1 3 5 5 ..

DescricaoProd.NumeroProd) DescricaoProd CodigoTipoProd DescricaoTipoProd NumeroNF DataVenda NumeroNF CodReg NumeroNF CodEmp NumeroNF NomeEmp Observe que o identificador de um produto é a chave composta pelo código do tipo do produto e pelo número do produto: A passagem a 2FN resulta nas seguintes tabelas: ItemVenda (NumeroNF. CodigoTipoProd. na passagem à 3FN. Devido a esta dependência. DescricaoTipoProd) Venda(NumeroNF. isto é de colunas não chave que dependem de outras colunas não chave. QtdeItem. No caso do exercício. CodEmp. CodigoTipoProd. NumeroProd. b) Apresente a segunda e ternceira formas normais. CodEmp) Empregado(CodEmp. Datavenda. NumeroProd. é criada a tabela Empregado. pois não existem tabelas aninhadas no esquema apresentado. NumeroProd. DescricaoTipoProd) Venda(NumeroNF. NomeEmp) . NomeEmp) A passagem a 3FN consta da eliminação das dependências funcionais transitivas ou indiretas. PreçoItem. NomeEmp. DataVenda. CodReg. DataVenda. DescricaoProd) TipoProd(CodigoTipoProd. QtdeItem. NumeroProd. CodigoTipoProd. há uma dependência funcional transitiva na tabela Venda que é CodEmp NomeEmp. CodReg. CodReg. DescricaoProd) TipoProd(CodigoTipoProd. QtdeItem. PreçoItem) Produto (CodigoTipoProd. O Modelo relacional resultante da passagem à 3FN é o seguinte: 3FN ItemVenda (NumeroNF. PreçoItem) Produto (CodigoTipoProd. DescricaoTipoProd) a) A Tabela acima está na primeira forma normal? Resposta: Sim. CodEmp. Resposta: Passagem à segunda forma normal que consiste na eliminação das dependências funcionais parciais as quais são: (CodigoTipoProd.3 4 Exercícios: 4 2 1. NumeroProd.1 do livro do Heuser) : ItemVenda (NumeroNF. Considere a tabela abaixo (exercício 6.

You're Reading a Free Preview

Descarregar
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->