Normalização de Dados Prof. Christiano Lima Santos Sumário O que é? Por quê? Benefícios Formas Normais Exercícios O que é? Conjunto de passos em um projeto de banco de dados visando o armazenamento consistente e acesso eficiente aos dados; Tais passos reduzem a redundância dos dados e as chances dos dados se tornarem inconsistentes. Por quê? Um banco de dados não-normalizado pode apresentar: Redundância; Dependência Maior incorreta entre os dados; complexidade nas consultas SQL. Benefícios Elimina a necessidade de redundância dos dados; Reduz os riscos de inconsistência; Evita anomalias de atualização; Facilita a manipulação dos dados por meio de uma linguagem de consulta (SQL); Conceitos Atributo principal: é um atributo da relação R que é membro de alguma chave candidata de R. Formas Normais Uma tabela num banco de dados relacional está numa certa forma normal se satisfaz as condições impostas pela mesma; Edgar F. Codd definiu originalmente três formas normais, mas existem hoje outras formas normais geralmente aceitas. Formas Normais Formas normais mais comuns: Primeira Forma Normal (ou 1FN); Segunda Forma Normal (ou 2FN); Terceira Forma Normal (ou 3FN); Forma Normal de Boyce-Codd (ou FNBC); Quarta Forma Normal (ou 4FN); Quinta Forma Normal (ou 5FN); Forma Normal Chave-Domínio (FNCD). Para efeitos práticos, considera-se que a base de dados está normalizada se aderir à terceira forma normal. Primeira Forma Normal (1FN) Uma relação está na 1FN quando (três possíveis definições): Todos os atributos baseiam-se em um domínio simples, não contendo grupos ou valores repetidos; Não possui atributos multivalorados ou compostos; Todos os seus atributos são atômicos. Ela reprova “relações dentro de relações”. Primeira Forma Normal (1FN) Tabela Não-1FN Primeira Forma Normal (1FN) Tabela Não-1FN Tabela 1FN Primeira Forma Normal (1FN) Tabela Não-1FN VendaID Produto ID___Nome___PrecoUnitario___Qtd Total 1 1, Sabão em pó, 2.50, 2, Camisa, 1.00, 3 5 12.50 2 1, Sabão em pó, 2.50, 4, Balde, 6.00, 1 2 14.50 3 5, Feijão (1kg), 10.00, 1 10.00 Primeira Forma Normal (1FN) Tabela 1FN VendaID ProdutoID ProdutoNome PrecoUnitario Qtd Subtotal 1 1 Sabão em pó 2.50 3 7.50 1 2 Camisa 1.00 5 5.00 2 1 Sabão em pó 2.50 1 2.50 2 4 Balde 6.00 2 12.00 3 5 Feijão (1kg) 10.00 1 10.00 Primeira Forma Normal (1FN) Problemas Redundância; Anomalias de atualização. Segunda Forma Normal (2FN) Uma relação está na 2FN se: Estiver na 1FN; Cada atributo não principal for dependente da chave primária inteira. Se a tabela possui chave primária composta, se um atributo depende apenas de uma parte da chave primária, ele deve ser colocado em outra tabela. Segunda Forma Normal (2FN) Tabela Não-2FN VendaID ProdutoID ProdutoNome PrecoUnitario Qtd Subtotal 1 1 Sabão em pó 2.50 3 7.50 1 2 Camisa 1.00 5 5.00 2 1 Sabão em pó 2.50 1 2.50 2 4 Balde 6.00 2 12.00 3 5 Feijão (1kg) 10.00 1 10.00 Segunda Forma Normal (2FN) Tabela 2FN VendaID ProdutoID 1 1 1 Qtd ProdutoID ProdutoNome PrecoUnitario Subtotal 3 2.50 7.50 1 Sabão em pó 2 5 1.00 5.00 2 Camisa 2 1 1 2.50 2.50 1 Sabão em pó 2 4 2 6.00 12.00 4 Balde 3 5 1 10.00 10.00 5 Feijão (1kg) Terceira Forma Normal (3FN) Uma relação R está na 3FN se: Estiver Cada na 2FN; atributo não principal de R não possui dependência transitiva da chave primária. Terceira Forma Normal (3FN) Tabela Não-3FN VendaID ProdutoID 1 1 1 Qtd PrecoUnitario Subtotal 3 2.50 7.50 2 5 1.00 5.00 2 1 1 2.50 2.50 2 4 2 6.00 12.00 3 5 1 10.00 10.00 Terceira Forma Normal (3FN) Tabela 3FN VendaID ProdutoID Qtd PrecoUnitario 1 1 3 2.50 1 2 5 1.00 2 1 1 2.50 2 4 2 6.00 3 5 1 10.00 Resumo das Três Primeiras FN Forma Normal Teste Solução (normalização) Primeira (1FN) Relação não deve ter atributos multivalorados ou relações aninhadas. Formar novas relações para cada atributo multivalorado ou relação aninhada. Segunda (2FN) Para relações em que a chave primária contém múltiplos atributos, nenhum atributo não chave deverá ser funcionalmente dependente de uma parte da chave primária. Decompor e montar uma nova relação para cada chave parcial com seu(s) atributo(s) dependente(s). Certificar-se de manter uma relação com a chave primária original e quaisquer atributos que sejam total e funcionalmente dependentes dela. Terceira (3FN) A relação não deve ter um atributo não chave determinado funcionalmente por outro atributo não chave (ou por um conjunto de atributos não chave). Ou seja, não deve haver dependência transitiva de um atributo não chave sobre a chave primária. Decompor e montar uma relação que inclua o(s) atributo(s) não chave que determina(m) funcionalmente outro(s) atributo(s) não chave. Forma Normal de Boyce-Codd (FNBC) Uma relação R está na FNBC se: Estiver Toda na 3FN; vez que uma dependência funcional não trivial X A se mantiver em R, então X é uma superchave de R. Forma Normal de Boyce-Codd (FNBC) Considere uma relação LOTES com as seguintes dependências: DF1: PropriedadeID {Cidade, Lote, Area} DF2: {Cidade, Lote} {PropriedadeID, Area} DF3: Area Cidade PropriedadeID Cidade Lote Tal relação satisfaz 3FN, mas não é FNBC. Area Forma Normal de Boyce-Codd (FNBC) Relação após normalização (segundo FNBC): PropriedadeID Area Lote Area Cidade O que aconteceu com as dependências DF1, DF2 e DF3? Perguntas de Revisão A que se refere o termo relação não-normalizada? Defina cada forma normal aqui estudada; Como a Forma Normal de Boyce-Codd difere da 3FN? Por que ela é considerada uma forma mais forte de 3FN? Exercícios Dada a relação SERVIDOR: Nome CPF Dependentes Telefones Endereço Rua__Numero__Bairro Anderson 001.001.001-01 {Adriana, Antonio} {2222-2222} Gentil Tavares, 27, Inacio Bruno 002.002.002-02 {Bianca} {3333-3333} Getulio Vargas, 12, Siqueira Quais formas normais ela satisfaz? Por quê? Que alterações são necessárias para que ela satisfaça as demais? Exercícios Dada a relação MANUTENCAO: ManutencaoID Dia 1 01/01/2014 2 02/02/2014 Bairro Vila Velha Vila Nova Rua Pereira Lobo José Machado 3 4 Vila Mais Nova Ainda Vila Qualquer Guimarães Rosa Zaqueu Brandão 03/03/2014 04/04/2014 Em que forma normal ela se encontra? Como alterá-la para satisfazer as demais? Exercícios Dada a relação CONTROLE_BIBLIOTECA: EmprestimoID Livro Autores Aluno Matricula DataPedido DataDevolucao Em que forma normal ela se encontra? Como alterá-la para satisfazer as demais? Bibliografia Recomendada ELMASRI, Ramez; NAVATHE, Shamkant. Sistemas de Banco de Dados. 6ª ed. São Paulo : Pearson Addison-Wesley, 2011.