Juliana Jenny Kolb
Home > Simulados on-line > Questões de Concursos > Tecnologia da Informação (TI)
Apostilas – Modelagem Relacional
-> Apostila de Modelagem_Relacional (+)
Formas Normais
Formas normais são várias regras expressando critérios práticos de simplificação de tabelas. E finalmente, o processo de adequação de tabelas àquelas regras práticas chama-se normalização.
A normalização tem a função de analisar tabelas e organizá-las de forma que a sua estrutura seja simples, relacional e estável, a fim de que o gerenciamento possa ser também simples, eficiente e seguro. os objetivos são evitar a perda e a repetição da informação e atingir uma forma de representação adequada para o que se deseja armazenar. Para adequar uma tabela a uma forma normal, deve-se redesenhar seu formato. Também pode-se usar normalização para projetar, partindo de um documento existente, considerando-o como sendo uma tabela única, e aplicando as regras. A normalização não faz parte do modelo ER, mas pode auxiliar enormemente o controle da qualidade de um projeto lógico.
Quando uma tabela não atende ao critério de um forma normal, sua estrutura é redesenhada através da projeção de alguns atributos e construção de nova(s) tabela(s), onde algum atributo é incluído na(s) nova(s) tabela(s) para que se possa refazer o conteúdo da tabela original através da junção das tabelas resultantes. O uso da normalização como auxiliar no projeto lógico segundo o modelo ER implica em redesenho do diagrama ER, ou seja, nova concepção lógica.
Primeira Forma Normal (1FN): Eliminação de domínios multivalorados
“Uma tabela só estará na 1FN se nenhum dos seus atributos tem domínio multivalorado”
Nesta forma os atributos precisam ser atômicos, o que significa que as tabelas não podem ter valores repetidos e nem atributos possuindo mais de um valor. Exemplo: CLIENTE = {ID + ENDEREÇO + TELEFONES}. Porém, uma pessoa poderá ter mais de um número de telefone, sendo assim o atributo “TELEFONES” é multivalorado. Para normalizar, é necessário:
- Identificar a chave primária e também a coluna que possui dados repetidos (nesse exemplo “TELEFONES”) e removê-los;
- Construir uma outra tabela com o atributo em questão, no caso “TELEFONES”. Mas não se esquecendo de fazer uma relação entre as duas tabelas: CLIENTE = {ID + ENDEREÇO} e TELEFONE (nova tabela) = {CLIENTE_ID (chave estrangeira) + TELEFONE}.
Segunda forma normal (2FN): dependência do atributo determinante
“Para uma tabela estar na 2FN ela deve estar na 1FN e seus atributos dependerem funcionalmente da totalidade da chave ou atributo determinante.”
Primeiramente, para estar na 2FN é preciso estar também na 1FN. 2FN define que os atributos normais, ou seja, os não chave, devem depender unicamente da chave primária da tabela. Assim como as colunas da tabela que não são dependentes dessa chave devem ser removidas da tabela principal e cria-se uma nova tabela utilizando esses dados. Exemplo: PROFESSOR_CURSO = {ID_PROF + ID_CURSO + SALARIO + DESCRICAO_CURSO} Como podemos observar, o atributo “DESCRICAO_CURSO” não depende unicamente da chave primária “ID_PROF”, mas sim somente da chave “ID_CURSO”. Para normalizar, é necessário:
- Identificar os dados não dependentes da chave primária (nesse exemplo “DESCRICAO_CURSO”) e removê-los;
- Construir uma nova tabela com os dados em questão: PROFESSOR_CURSO = {ID_PROF + ID_CURSO + SALARIO} e CURSOS (nova tabela) = {ID_CURSO + DESCRICAO_CURSO}.
Terceira forma normal (3FN): eliminação da dependência funcional transitiva
“Uma tabela estará na 3FN quando estiver na 2FN e não houver dependência funcional transitiva entre seus atributos.”.
Assim como para estar na 2FN é preciso estar na 1FN, para estar na 3FN é preciso estar também na 2FN. 3FN define que todos os atributos dessa tabela devem ser funcionalmente independentes uns dos outros, ao mesmo tempo que devem ser dependentes exclusivamente da chave primária da tabela. 3NF foi projetada para melhorar o desempenho de processamento dos banco de dados e minimizar os custos de armazenamento. Exemplo: FUNCIONARIO = {ID + NOME + VALOR_SALARIO + VALOR_FGTS}. Como sabemos o valor do FGTS é proporcional ao salário, logo o atributo normal “VALOR_FGTS” é dependente do também atributo normal “VALOR_SALARIO”. Para normalizar, é necessário:
- Identificar os dados dependentes de outros (nesse exemplo “VALOR_FGTS”);
- Removê-los da tabela. Esses atributos poderiam ser definitivamente excluídos — e deixando para a camada de negócio a responsabilidade pelo seu cálculo — ou até ser movidos para uma nova tabela e referenciar a principal (“FUNCIONARIO”).
Forma Normal de Boyce-Codd (ou BCNF)
“Uma tabela está na FNBC quando todo atributo determinante existente na tabela é chave candidata”.
Requer que não exista nenhuma dependência funcional não trivial de atributos em algo mais do que um superconjunto de uma chave candidata. Neste estágio, todos os atributos são dependentes de uma chave, de uma chave inteira e de nada mais que uma chave (excluindo dependências triviais, como A → A);
Quarta Forma Normal (ou 4FN)
Requer que não exista nenhuma dependência multi-valorada não trivial de conjuntos de atributo em algo mais de que um superconjunto de uma chave candidata;
Quinta Forma Normal (ou 5FN ou PJ/NF)
Requer que não exista dependências de joins (associações) não triviais que não venham de restrições chave;
Domain-Key Normal Form (ou DK/NF)
Requer que todas as restrições sigam os domínios e restrições chave.