Normalização: Noções Básicas Introdução a Banco de Dados – DCC 011 Além de corresponder a uma representação relacional do diagrama ER discutido no livro-texto, o esquema relacional acima possui alguma propriedade específica que o qualifica como um bom esquema para a aplicação considerada? Introdução a Banco de Dados – DCC 011 1 Normalização Processo através do qual esquemas de relação são sucessivamente decompostos até que satisfaçam determinadas propriedades ou formas normais Medidas (propriedades) informais de qualidade do projeto de um esquema relacional: Compatibilidade semântica entre os atributos de uma mesma relação Ausência de valores redundantes nas relações (inexistência de anomalias de atualização) Existência reduzida de valores nulos nas relações Impossibilidade de se gerar tuplas espúrias (com valores ilegítimos) ao se recompor relações decompostas Introdução a Banco de Dados – DCC 011 Semântica dos Atributos de uma Relação Diretriz 1: Projete um esquema de relação de modo que seja fácil explicar o seu significado (intuitivamente, cada esquema de relação deve representar um tipo de entidade ou de relacionamento). Introdução a Banco de Dados – DCC 011 2 Redundância nas Tuplas e Anomalias de Atualização Diretriz 2: Projete os esquemas de relação de modo que não exista redundância de dados e, portanto, não ocorram anomalias de atualização (inserção, remoção ou alteração) nas relações. Exemplos de esquemas de relação em que ocorrem anomalias de atualização: Introdução a Banco de Dados – DCC 011 ? Introdução a Banco de Dados – DCC 011 3 Valores Nulos A existência de valores nulos nas relações pode causar desperdício de espaço físico de armazenamento além de gerar problemas de entendimento do siginificado dos atributos e do resultado de determinadas operações. Interpretação de valores nulos: O atributo não se aplica O valor do atributo é desconhecido O valor do atributo está ausente (não foi registrado) Diretriz 3: Até onde possível, deve-se evitar a inclusão em um esquema de relação de atributos que possam ser frequentemente nulos. Introdução a Banco de Dados – DCC 011 Geração de Tuplas Espúrias Diretriz 4: Projete esquemas de relação de modo que as operações de junção possam ser formuladas por meio de condições de igualdade definidas sobre atributos que sejam chaves primárias ou estrangeiras (satisfaçam a propriedade de decomposição sem perdas). Introdução a Banco de Dados – DCC 011 4 Geração de Tuplas Espúrias Introdução a Banco de Dados – DCC 011 Formas Normais Processo de normalização: 1FN 2FN 3FN Formas normais definidas a partir do conceito de dependência funcional. Primeira Forma Normal (1FN): Um esquema de relação R está na 1FN se todos os seus atributos forem atômicos. Introdução a Banco de Dados – DCC 011 5 Gera anomalias de atualização Introdução a Banco de Dados – DCC 011 Dependências Funcionais Definição: Uma dependência funcional entre dois atributos (ou conjuntos de atributos) X e Y de um esquema de relação R, denotada por X Y, é uma restrição de integridade que estabelece que, para quaisquer tuplas t1 e t2 de uma instância de R tal que t1[X] = t2[X], t1[Y] = t2[Y]. Exemplos: EMP-DEPT(ENOME,SSN,DATANASC,ENDERECO,DNUMERO,DNAME,DGERSSN) SSN {ENOME,DATANASC,ENDRECO,DNUMERO} DNUMERO {DNOME,DGERSSN} Atenção: Não confundir a notação X Y com a notação R1[X] R2[Y] que denota a RIR entre os esquemas de relação R1 e R2. Introdução a Banco de Dados – DCC 011 6 Segunda Forma Normal (2FN) Um esquema de relação R está na 2FN se todo atributo de R não pertencente a uma de suas chaves for totalmente dependente da chave primária. O esquema de relação EMP-PROJ(SSN,PNUMERO,HORAS,ENOME,PNOME,PLOCALIZACAO) não está na 2FN porque SSN ENOME e PNUMERO {PNOME,PLOCALIZACAO}, ou seja, há atributos em EMP-PROJ que não são totalmente dependentes da chave primária {SSN,PNUMERO}. Introdução a Banco de Dados – DCC 011 Introdução a Banco de Dados – DCC 011 7 Terceira Forma Normal (3FN) Um esquema de relação R está na 3FN se estiver na 2FN e nenhum atributo de R não pertencente a uma de suas chaves for transitivamente dependente da chave primária. O esquema de relação EMP-DEPT(ENOME,SSN,DATANASC,ENDERECO,DNUMERO,DNOME,DGERSSN) não está na 3FN porque SSN DNUMERO e DNUMERO {DNOME,DGERSSN}, ou seja, há atributos em EMP-DEPT que são transitivamente dependentes da chave primária {SSN}. Introdução a Banco de Dados – DCC 011 Introdução a Banco de Dados – DCC 011 8 Exemplo de Decomposição Seja o esquema de relação R(A,B,C,D,F,G). Considerando as DFs {A,B} G, A C, A D e D F válidas em R, podemos decompor R da seguinte forma: 1º passo: R não está na 2FN Eliminando-se A C, A D e D F de R R1(A,C,D,F) R2(A,B,G) 2º passo: R1 e R2 estão na 2FN, mas R1 não está na 3FN Eliminando-se D F de R1 R11(A,C,D) R12(D,F) R2(A,B,G), R11(A,C,D) e R12(D,F) estão na 3FN Introdução a Banco de Dados – DCC 011 Definição Geral Informalmente, podemos dizer que um esquema de relação R está normalizado (ou seja, na 3FN) se todos os seus atributos são dependentes exclusivamente de suas chaves. Representa um tipo de entidade ou de relacionamento (Diretriz 1) Introdução a Banco de Dados – DCC 011 9 Propriedades do Processo de Decomposição Seja R um esquema de relação e F o conjunto de dependências funcionais válidas sobre os seus atributos. A decomposição de R em R1, R2, …, Rn deve satisfazer às seguintes propriedades: 1. Preservação das dependências funcionais (F1 U F2 U … Fn)+ = F+ onde F1, F2, …, Fn são os conjuntos de dependências funcionais válidas em R1, R2, …, Rn e F+ é o conjunto de todas as dependências funcionais derivadas de F. 2. Decomposição sem perdas R = R1 R2 … Rn Introdução a Banco de Dados – DCC 011 Resumo Normalização Processo de decomposição sucessiva de esquemas de relação para que satisfaçam determinadas formas normais Propriedades informais de um esquema de relação Formas normais 1FN, 2FN, 3FN (outras FNs: FNBC, 4FN) Dependência funcional Propriedades do processo de decomposição Introdução a Banco de Dados – DCC 011 10 Questões e Exercícios Sugeridos 10.2, 10.3, 10.4, 10.5, 10.6, 10.13, 10.14, 10.15, 10.17, 10.22, 10.25, 10.26, 10.28, 10.30. Introdução a Banco de Dados – DCC 011 11