Zusammenfassung der Ressource
Normalização de Banco de Dados
- O objetivo da normalização é eliminar redundâncias e inconsistências de
um banco de dados com reorganização mínima dos dados.
- A normalização é um processo baseado nas formas normais.
- Formas Normais
- Primeira Forma Normal - 1FN
- Na Primeira Forma Normal 1FN os campos devem ser atômicos (simples) ou
indivisíveis e não podem serem multivalorados ou compostos.
- Identificar a chave primária da entidade;
- Identificar o grupo repetitivo e removê-lo da entidade
- Criar uma nova entidade com o grupo repetitivo.
- Exemplo
- prontuário: é a chave e não pode ser dividido.
- nome: pode ser dividido em "nome" e "sobrenome" mas para este problema não seria relevante;
- endereço: pode ser dividido em: "rua", "número", "cidade", "estado", "cep";
- disciplinas: pode ser dividida em: "nome", "horário", "sala", "carga horária"
- curso: pode ser dividido em: "nome", "descrição", "perfil do egresso", "carga horária"
- Correção
- ALUNO {prontuário, nome, cod_disciplina, cod_curso}
- ENDEREÇO {cod_endereço, rua, numero, cidade, estado, cep, prontuário}
- DISCIPLINA {cod_disciplina, nome, horario, sala, carga_horaria}
- CURSO {cod_curso, nome, descrição, perfil_egresso, carga_horária}
- Segunda Forma Normal - 2FN
- Uma tabela encontra-se na Segunda Forma Normal (2FN) se estiver em conformidade com a 1FN e todo atributo do
complemento de uma chave candidata é totalmente funcionalmente dependente daquela chave, ou seja, todos os atributos
não chave devem ser totalmente dependentes da chave primária (dependente de toda a chave e não apenas de parte dela).
- Exemplo
- NOTA {cod_nota, cod_disciplina, cod_aluno, valor_nota, nome_aluno, nome_disciplina}
- identificar atributo não chaves: valor_nota, nome_aluno e nome_disciplina.
- analisar para cada atributo não chave sua dependência das chaves:
- atributo "valor_nota": está correto pois é o valor do cod_nota, que é de uma
disciplina (cod_disciplina) e de um aluno (cod_aluno).
- atributo "nome_aluno": está incorreto pois ele é desnecessário nesta tabela tendo
em vista que dado uma nota (cod_nota) eu consigo descobrir qual é o nome do aluno
dela (cod_aluno).
- atributo "nome_disciplina": está incorreto pois ele é desnecessário nesta tabela tendo em
vista que dado uma nota (cod_nota) eu consigo descobrir qual é o nome da disciplina dela
(cod_disciplina)
- Correção
- ALUNO {cod_aluno, nome}
- DISCIPLINA {cod_disciplina, nome}
- NOTA { cod_nota, cod_disciplina, cod_aluno, valor_nota}
- Terceira Forma Normal - 3FN
- Uma tabela está na Terceira Forma Normal 3FN se estiver em conformidade com a
1FN, 2FN e se nenhuma coluna não-chave depender de outra coluna não-chave. Na
terceira forma normal temos de eliminar aqueles campos que podem ser obtidos
pela equação de outros campos da mesma tabela.
- Exemplo
- NOTA {cod_nota, cod_disciplina, cod_aluno, nota1, nota2, nota3, nota4, media_notas}
- Correção
- os atributos que não são chaves são: "nota1", "nota2",
"nota3", "nota4" e "media_notas"
- "nota1", "nota2", "nota3" e "nota4": são atributos de um aluno em uma
determinada disciplina, portanto estão corretos.
- o atributo "media_notas" é um atributo transitivo, ou seja, para ele
existir ele depende diretamente da existência de "nota1", "nota2",
"nota3" e "nota4" e não do aluno e não da disciplina.
- NOTA {cod_nota, cod_disciplina, cod_aluno, nota1, nota2, nota3, nota4}
- Conceitos
- Uma forma normal é uma regra de deve ser aplicada na construção das
tabelas do banco de dados para que estas fiquem bem estruturadas.
- Esta estruturação consiste em: reduzir ao mínimo a redundância e,
como consequência, permitir aos usuários inserir, modificar e
apagar linhas (registros) em tabelas, sem erros ou inconsistências.