Baixe o app para aproveitar ainda mais
Prévia do material em texto
AULA 9,10 e 11 Introdução - Normalização A teoria da normalização tem origem na área de projetos de bancos de dados relacionais, e teve como criador o Dr. E. F. Codd. A teoria continua se desenvolvendo até os dias atuais, quando o modelo relacional se mantém como o padrão da indústria mundial para bancos de dados, mesmo tendo o modelo de objetos crescente aceitação. A teoria da normalização visa resolver três problemas potenciais no projeto de bancos de dados relacionais [2]: Repetição da informação: informações repetidas desperdiçam espaço de armazenamento e criam dificuldades na atualização do banco de dados; Incapacidade de representação de informação; Perda de informação. A aplicação da normalização a um modelo de banco de dados relacional é realizada (ao menos teoricamente) em etapas, denominadas formas normais; A 1ª forma normal (1FN) é o ponto de partida. Posteriormente, são aplicadas as formas normais seguintes até o nível de normalização desejado; O fato de uma relação se encontrar em uma determinada forma normal implica que ela se encontra também em todas as formas normais anteriores. Na prática, as formas normais 1FN, 2FN e 3FN são aplicadas de forma conjunta sobre as relações em um projeto de banco de dados. 1ª Forma Normal (1ª FN) Uma tabela encontra-se na 1ª FN se todos os seus atributos estiverem definidos em domínios que contenham apenas valores atômicos, isto é, os domínios devem ser formados por valores elementares e não por conjuntos de valores. Vejamos o seguinte exemplo: Imaginemos uma tabela destinada a registrar a informação sobre os alunos e as disciplinas em que estes estão matriculados: 1º caso) ALUNOS (CodAluno, Nome, Morada, Disciplinas) Esta tabela não obedece à primeira forma normal (1FN), uma vez que o atributo Disciplinas admite conjuntos de valores. Consideremos a tabela com alguns dados como exemplo: Como podemos constatar, o atributo Disciplinas apresenta o conjunto de disciplinas freqüentadas por cada aluno.Poderíamos, no entanto, repetir os valores na tabela para que o atributo Disciplinas apenas contivesse um único valor (2º caso). 2º caso) ALUNOS (CodAluno, Nome, Morada, Disciplina1, Disciplina2, Disciplina3,...) Esta tabela não obedece à primeira forma normal (1FN) porque, embora todos os campos sejam atômicos, existem campos repetidos para a mesma categoria. Consideremos a tabela com alguns dados como exemplo: Como podemos constatar os atributos Disciplina1, Disciplina2 e Disciplina3 aparecem como campos repetidos para a mesma categoria. A solução para este problema, ou seja, para a tabela se encontrar na 1ª FN é a apresentada no 3º caso. 3º caso) ALUNOS (CodAluno, Nome, Morada, Disciplina) A tabela ALUNOS agora está na 1FN, pois todos os atributos contêm apenas valores elementares. Apresenta, no entanto, grande redundância de informação, que se reflete na repetição dos identificadores dos nomes e moradas dos alunos. Para além desse inconveniente, podem apontar-se ainda os seguintes: Problemas de atualização - se a morada de um aluno for alterada, essa alteração tem de ser feita em várias linhas da tabela, sob o risco de gerar incoerências na Base de Dados, isto é, numa determinada linha o aluno poderá aparecer uma morada e noutra linha outra; Problemas de inserção – com a tabela estruturada desta maneira torna-se impossível registrar um aluno que não esteja matriculado a nenhuma disciplina, mas que se encontra a fazer apenas exames, sem o atributo DISCIPLINA fique com valor nulo não obedecendo à regra de integridade de entidade; Problemas de eliminação - porque para anular a matrícula de um aluno implica ter de eliminar várias linhas da tabela, e mesmo perder a informação do aluno, tal como NÚMERO, NOME e MORADA. 2ª Forma normal (2ª FN) Dependência funcional Dependência funcional é o relacionamento que existe entre os atributos. Determina uma restrição entre dois conjuntos de atributos de um BDRelacional. Denotado pelo símbolo , onde X Y significa que o atributo X determinafuncionalmente o atributo Y ou ainda, o atributo Y é dependente funcionaldo atributo X. Um atributo ou conjunto de atributos é determinante de outros atributos quando os identifica de modo unívoco. Os atributos identificados de modo unívoco por um outro atributo, ou conjunto de atributos, são funcionalmente dependentes deste último. Considerando a seguinte entidade: ALUNOS (CodAluno, Nome, Morada, CodDisciplina, Disciplina) Temos que: - Nome e Morada são dependentes de CodAluno - Disciplina é dependente de CodDisciplina Exemplos: CPF NOME_FUNCIONARIO CPF determina funcionalmente NOME_FUNCIONARIO; NOME_FUNCIONARIO é dependente funcional de CPF Informalmente: Conhecido o valor de um CPF eu consigo determinar qual o NOME_FUNCIONARIO (único) com o qual este CPF está relacionado. Uma tabela encontra-se na 2ª FN se: • estiver na primeira forma normal (1FN); • todos os atributos que não pertencem à chave dependem da chave através de uma dependência funcional elementar, isto é, dependem da totalidade da chave e não de um dos seus atributos ou subconjuntos isoladamente. Esta condição evidentemente só se aplica no caso da chave ser composta por mais de um atributo. Caso a chave seja constituída por um único atributo, chave simples, a condição imposta é que os restantes atributos dependam funcionalmente da chave. 3ª Forma normal (3ª FN) A 3a Forma Normal prega o conceito de dependência transitiva. Uma dependência funcional X Y em uma tabela T é uma dependência transitiva se existir um conjunto de atributos Z que não é um subconjunto de chaves de T e as dependências X Z, Z Y, são válidas. Considere a seguinte tabela como exemplo: Empregado RG Nome No_Departamento Nome_Depto RG_Ger_Depto onde temos a seguinte dependência transitiva: RG { Nome_Depto, RG_Ger_Depto } RG No_Departamento No_Departamento { Nome_Depto, RG_Ger_Depto } Porém, verifique o caso da tabela abaixo: Empregado RG CIC Nome No_Funcional Neste caso, a dependência transitiva: RG { Nome, No_Funcional } RG CIC CIC { Nome, No_Funcional } não é valida pois o atributo CIC é uma chave candidata. Uma tabela está na 3a Forma Normal se estiver na 2a Forma Normal e não houver dependência transitiva entre atributos não chave.
Compartilhar