ACCESS Base de Dados para a Gestão de Informação de Natureza Pedagógica @ Rafael Machado – 2004 e-mail: [email protected] ACCESS – Normalização Normalização É um processo que consiste em estruturar as tabelas e os atributos na forma mais adequada, do ponto de vista das operações a executar sobre a informação registada na base de dados, tendo em vista eliminar redundâncias desnecessárias e evitar problemas com a inserção, eliminação e actualização de dados. Existem 3 Formas normais: Primeira Forma Normal (1FN) Segunda Forma Normal (2FN) Terceira Forma Normal (3FN) ACCESS – Normalização Primeira Forma Normal (1FN) Uma tabela está na primeira forma normal (1FN) quando todos os seus atributos são elementares. Não pode existir um conjunto de valores para um determinado atributo. Exemplo: Registo da informação sobre alunos e respectivas disciplinas. Esta tabela não está na 1FN! ACCESS – Normalização Primeira Forma Normal (1FN) Tabela na 1FN Uma possível tabela, com a respectiva chave primária: Alunos-Disciplinas (IdAluno, Nome, Morada, IdDisciplina, Disciplina, IdProfessor, Professor) ACCESS – Normalização Primeira Forma Normal (1FN) Problemas com a 1FN A BD ocupa mais espaço em disco (redundância de informação) Repetição da morada, disciplina, nome, … Problemas de actualização Alteração da morada… inconsistência de informação Problemas de inserção Inserir um aluno que não esteja matriculado a nenhuma disciplina Problemas de eliminação Anular matrícula.. Pode perder-se informação do aluno ACCESS – Normalização Segunda Forma Normal (2FN) Uma tabela está na segunda forma normal (2FN) quando estiver na 1FN e os seus atributos que não fazem parte da chave primária dependerem funcionalmente da chave primária. A tabela: Alunos-Disciplinas (IdAluno, Nome, Morada, IdDisciplina, Disciplina, IdProfessor, Professor) não está na 2FN, pois os atributos Nome e Morada dependem de parte da chave primária (IdAluno), bem como o atributo Disciplina, IdProfessor e Professor, que depende de outra parte da chave primária (IdDisciplina). Tabelas na 2FN: Alunos-Disciplinas (IdAluno, IdDisciplina) Alunos (IdAluno, Nome) Disciplinas (IdDisciplina, Disciplina, IdProfessor, Professor) ACCESS – Normalização Terceira Forma Normal (3FN) Uma tabela está na terceira forma normal (3FN) quando estiver na 2FN e nenhum atributo que não seja parte da chave primária depender funcionalmente de outros atributos que não sejam parte da chave primária. É necessário verificar, tabela a tabela: As tabelas seguintes já estão na 3FN: Alunos-Disciplinas (IdAluno, IdDisciplina) Alunos (IdAluno, Nome) A tabela seguinte não está na 3FN Disciplinas (IdDisciplina, Disciplina, IdProfessor, Professor) pois o atributo Professor depende funcionalmente de IdProfessor que não é um atributo que faça parte da chave primária. ACCESS – Normalização Terceira Forma Normal (3FN) Desta forma, obtemos as seguintes tabelas normalizadas (3FN): Alunos-Disciplinas (IdAluno, IdDisciplina) Alunos (IdAluno, Nome) Disciplinas (IdDisciplina, Disciplina, IdProfessor) Professores (IdProfessor, Professor) ACCESS – Normalização Modelo E-R Simplificado ALUNOS 1 N ALUNOSDISCIPLINAS N 1 DISCIPLINAS N 1 PROFESSORES Regras: Onde o atributo é Chave Primária, tem o grau 1. Onde o atributo é Chave Externa, tem o grau N. ACCESS – Normalização Exemplo de Aplicação Matricula Classificação N N N N Inscrição ALUNOS 1 N N CADEIRAS N Lecciona 1 DEPARTAMENTOS N 1 Pertence PROFESSORES Pertence 1 CURSOS ACCESS – Normalização Exemplo de Aplicação Considerando o diagrama E-R, apresentado no diapositivo anterior, proceder à derivação das respectivas tabelas, à sua normalização e respectivo modelo E-R simplificado, , tendo em conta as seguintes entidades e respectivos atributos: Alunos (CodAluno, Nome, Morada, FotoAluno) Cursos (CodCurso, Curso) Cadeiras (CodCadeira, Cadeira, Ano, Semestre) Professores (CodProfessor, Professor) Departamentos (CodDepartamento, Departamento) ACCESS – Normalização Resolução Conjunto de Tabelas Normalizadas Alunos (CodAluno, Nome, Morada, FotoAluno) Cursos (CodCurso, Curso) Cadeiras (CodCadeira, Cadeira, Ano, Semestre, CodProfessor, CodCurso) Professores (CodProfessor, Professor, CodDepartamento) Departamentos (CodDepartamento, Departamento) Inscricao (CodAluno, CodCadeira) Classificacao (CodAluno, CodCadeira, Data , Classificacao) Matricula (CodAluno, CodCurso, DataMatricula) ACCESS – Normalização Modelo E-R Simplificado