Banco de Dados - SQL Server
O Modelo Relacional de Dados – Parte IV
Nesta quarta parte sobre os fundamentos do Modelo Relacional de dados, falarei sobre Normalização de banco de dados e as três principais formas normais.
por Júlio Cesar Fabris BattistiObjetivo: Na primeira parte deste artigo falei sobre Entidades (tabelas), Atributos (campos) e sobre o conceito de Chave Primária. Na segunda parte falei sobre Relacionamentos e tipos de relacionamentos. Na terceira parte falei sobre um dos conceitos mais importantes do modelo relacional de dados: Integridade Referencial. Também mostrei um exemplo prático de como configurar Relacionamentos e Integridade Referencial no Microsoft Access. Nesta quarta parte sobre os fundamentos do Modelo Relacional de dados, falarei sobre Normalização de banco de dados e as três principais formas normais.
Nota: Os exemplos apresentados utilizarão telas do Microsoft Access e o arquivo de exemplos Northwind.mdb, o qual é instalado juntamente com o Microsoft Access. Este arquivo está disponível, por padrão, no seguinte caminho: C:\Arquivos de programas\Microsoft Office\Office\Samples
Porém os princípios básicos do modelo relacional aplicam-se a qualquer banco de dados baseado no modelo relacional de dados. Estes bancos de dados são algumas vezes denominados: SGBDR - Sistemas Gerenciadores de Banco de Dados Relacionais.
Normalização de tabelas
Objetivo: O objetivo da normalização é evitar os problemas provocados por falhas no Projeto do Banco de Dados, bem como eliminar a "mistura de assuntos" e as correspondentes repetições desnecessárias de dados. Uma Regra de Ouro que devemos observar quando do Projeto de um Banco de Dados baseado no Modelo Relacoional de dados é a de "não Misturar assuntos em uma mesma Tabela". Por exemplo na Tabela Clientes devemos colocar somente campos relacionados com o assunto Clientes. Não devemos misturar campos relacionados com outros assuntos, tais como Pedidos, Produtos, etc. Essa "Mistura de Assuntos" em uma mesma tabela acaba por gerar repetição desnecessária dos dados bem como inconsistência dos dados.
O Processo de Normalização aplica uma série de Regras sobre as Tabelas de um Banco de Dados, para verificar se estas estão corretamente projetadas. Embora existam 5 formas normais (ou regras de Normalização), na prática usamos um conjunto de 3 Formas Normais.
Normalmente após a aplicação das Regras de Normalização, algumas tabelas acabam sendo divididas em duas ou mais tabelas, o que no final gera um número maior de tabelas do que o originalmente existente. Este processo causa a simplificação dos atributos de uma tabela, colaborando significativamente para a estabilidade do modelo de dados, reduzindo-se consideravelmente as necessidades de manutenção. Vamos entender o Processo de Normalização na Prática, através de exemplos.
Primeira Forma Normal:
"Uma Tabela está na Primeira Forma Normal quando seus atributos não contém grupos de Repetição".
Por isso dissemos que uma Tabela que possui Grupos de Repetição não está na Primeira Forma Normal. Considere a estrutura da Tabela Indicada na Próxima Figura:
Tabela que não está na Primeira Forma Normal.
Uma tabela com esta estrutura apresentaria diversos problemas. Por exemplo se um casal tiver mais de um filho, teremos que digitar o Nome do Pai e da Mãe diversas vezes, tantas quantos forem os filhos. Isso forma um Grupo de Repetição. Além do mais pode ser que por erro de digitação o Nome dos Pais não seja digitado exatamente igual todas as vezes, o que pode acarretar problemas na hora de fazer pesquisas ou emitir relatórios.
Este problema ocorre porque "Misturamos Assuntos" em uma mesma tabela. Colocamos as informações dos Pais e dos Filhos em uma mesma tabela. A esolução para este problema é simples: Criamos uma tabela separada para a Informação dos Pais e Relacionamos a tabela Pais com a Tabela Filhos através de um relacionamento do tipo Um para Vários, ou seja, um casal da Pais pode ter Vários Filhos.
Observe na figura abaixo as duas tabelas: Pais e Filhos, já normalizadas.
Informações sobre Pais e Filhos em Tabelas Separadas.
As duas tabelas Resultantes da Aplicação da Primeira Forma Normal: Pais e Filhos estão na Primeira Forma Normal, a Tabela Original, a qual misturava informações de Pais e Filhos, não estava na Primeira forma Normal
Segunda Forma Normal:
Ocorre quando a chave Primária é composta por mais de um campo. Neste caso, devemos observar se todos os campos que não fazem parte da chave dependem de todos os campos que compõem a chave. Se algum campo depender somente de parte da chave composta, então este campo deve pertencer a outra tabela. Observe o Exemplo Indicado na Tabela da Figura abaixo:
Tabela com uma Chave Primária Composta. Não está Na Segunda Forma Normal.
A Chave Primária Composta é formada pela combinação dos Campos "NúmeroDaMatrícula" e "CódigoDoCurso". O Campo Avaliação depende tanto do CódigoDoCurso quanto do NúmeroDaMatrícula, porém o campo DescriçãoDoCurso, depende apenas do CódigoDoCurso, ou seja, dado o código do curso é possível localizar a respectiva descrição, independentemente do NúmeroDaMatrícula. Com isso temos um campo que não faz parte da Chave Primária e depende apenas de um dos campos que compõem a chave Primária Composta, por isso que dizemos que esta tabela não está na Segunda Forma Normal.
A Resolução para este problema também é simples: "Dividimos a Tabela que não está na Segunda Forma Normal em duas outras tabelas, conforme indicado pela figura abaixo, sendo que as duas tabelas resultantes estão na Segunda Forma Normal.
Informações sobre Avaliações e Cursos em Tabelas Separadas.
OBS -> A Distinção entre a Segunda e a Terceira forma normal, que veremos logo em seguida, muitas vezes é confusa. A Segunda Forma normal está ligada a ocorrência de Chaves Primárias compostas.
Terceira Forma Normal:
Na definição dos campos de uma entidade podem ocorrer casos em que um campo não seja dependente diretamente da chave primária ou de parte dela, mas sim dependente de um outro campo da tabela, campo este que não a Chave Primária.
Quando isto ocorre, dizemos que a tabela não está na Terceira Forma Normal, conforme indicado pela tabela da figura abaixo:
Tabela com um Campo dependente de Outro campo que não a Chave Primária. Não está na Terceira Forma Normal.
Observe que o Campo DescriçãoDoCargo depende apenas do Campo CódigoDoCargo, o qual não faz parte da Chave Primária. Por isso dizemos que esta tabela não está na terceira forma normal. A Solução deste problema também é simples. Novamente basta dividir a tabela em duas outras, conforme indicado pela figura a seguir. As duas tabelas resultantes estão na Terceira Forma Normal.
Tabelas Resultantes que estão na Terceira Forma Normal.
Com isso podemos concluir que como resultado do Processo de Normalização, iremos obter um número maior de tabelas, porém sem problemas de redundância e inconsistência dos dados.
Conclusão:
Nesta quarto artigo da série, você aprendeu sobre o conceitos de Normalização e formas normais, sem dúvidas um dos conceitos mais importantes do Modelo Relacional. Na Parte V falarei sobre os princípios básicos para projeto de um banco de dados. Até lá.
Entre em contato. Deixe-me conhecer a sua opinião e também suas sugestões. Entre em contato através do e-mail webmaster@juliobattisti.com.br ou diretamente através de um dos seguintes sites: www.juliobattisti.com.br e www.certificacoes.com.br.
- Representando dados em XML no SQL ServerSQL Server
- Diferenças entre SEQUENCES x IDENTITY no Microsoft SQL Server 2012SQL
- Utilizando FILETABLE no SQL Server 2012SQL Server
- NHibernate com o Delphi Prism: Acessando um Banco de Dados SQL ServerVisual Studio
- Novidades no SQL Server Codinome DenaliSQL Server