Olá galera o/
Vamos dar continuidade sobre a postagem de Normalização. Para quem não sabe o que é normalização ou não entende os seus principais conceitos, na parte 1 desta postagem eu explico seu objetivo e quais formas normais podemos aplicar. >>> LINK <<<
Vamos aplicar um processo de engenharia reversa em uma tela de um sistema. O armazenamento dos dados dessa tela estão desnormalizados, então, vamos aplicar as 3 formas normais para deixa-los normalizados para assim termos uma base consistente.
A tela ao abaixo contém os registros dos alunos e os cursos em que ele se matriculou. VL. TABELA é o valor padrão do curso na data da matricula. VL. PAGO é o valor efetivamente pago pelo aluno decorrente de negociação de desconto.
O esquema abaixo descreve como os registro do aluno em uma tabela não normalizada:
A tabela é considerada não normalizada porque apresenta redundância de dados , conforme observado no tabela com dados abaixo, outras situações que contrariam as regras das formas normais.
Tabela com os registros dos alunos:
Agora vamos começar a aplicar as 3 Formas Normais.
1ª FN
- Constrói-se uma tabela para cada atributo multivalorado e para cada tabela aninhada.
- Os atributos da tabela aninhada também podem ser representados como atributos multivalorados.
- Cada atributo composto é decomposto em atributos na própria tabela.
Ao final da 1ª FN surge no nosso modelo mais duas novas tabelas: TELEFONE_ALUNO e CURSO_ALUNO.
2ª FN
O que é Dependência Funcional?
- Estabelece uma relação de atributos dentro da tabela. A dependência mais comum é a funcional. A dependência funcional acontece sempre quando um atributo determina outro.
- Ex: Código do cliente > Nome do cliente
- Lê – se:
- Para descobrirmos o nome do cliente (dentro de um conjunto de clientes), primeiramente precisamos saber qual é o código dele. Assim, o campo/atributo nome é dependente do campo/atributo código.
Dependência Funcional Total
Ocorre quando um ou mais atributos de uma entidade dependem totalmente da chave primária composta (2 ou mais chaves primárias). Na tabela com esta dependência deve apenas conter os atributos que dependem das 2 PKs.
Verificamos que em nossa tabela CURSO_ALUNO temos 4 atributos que dependem tanto do ID_ALU quanto do ID_CURSO.
Dependência Funcional Parcial
Quando os atributos apenas dependem de sua chave primária. Constrói-se uma tabela para acomodar as dependências funcionais parciais. Na tabela CURSO_ALUNO os atributos CG_HOR, NM_CURSO somente dependem do código do curso e não do ID_ALU, então, criamos uma nova tabela que armazenara apenas as informações referentes ao CURSO
Ao final da 2ª FN surge no nosso modelo mais uma tabela: CURSO.
3ª FN
Dependência Transitiva
Ocorre quando um coluna não chave primária depende funcionalmente de outra coluna (ou colunas) não chave primária. Constrói-se uma nova tabela para a dependência transitiva. Em nosso caso o atributo NM_UF depende do atributo ID_UF que não é chave primária da tabela ALUNO.
Ao final da 3ª FN surge no nosso modelo mais uma tabela: UNIDADE_FEDERACAO.
Primeiro vamos comparar o antes e o depois de nosso modelo de dados. Agora nosso modelo está com os dados consistentes e sem redundâncias.
Espero essa segunda postagem sobre Normalização tenha sido de grande ajuda para quem tem dificuldade em entender a aplicação das formas normais em um modelo de dados. Que todos tenham gostado da postagem.