Normalizao Disciplina Bancos de Dados 1 (INE 5613 - 2006-1) Curso de Sistemas de Informao Prof. Renato Fileto INE/CTC/UFSC Tpicos Ciclo de Vida para o Desenvolvimento de Sistemas de Bancos de Dados Perigos Potenciais no Projeto de Bancos de Dados Relacionais Dependncias Funcionais Normalizao (ou normatizao ?) 1a. FN 2a. FN 3a. FN Restries de Integridade Projeto de Bancos de Dados "O objetivo bsico do projeto de bancos de dados possibilitar ao usurio obter a informao exata em um limite aceitvel de tempo, de maneira a executar sua tarefa dentro da organizao." (Teorey e Fry) "O objetivo do projeto de um banco de dados relacional gerar um conjunto de esquemas relacionais, que nos permita guardar informaes sem redundncia desnecessria, apesar de nos permitir recuperar a informao facilmente." (Korth e Silberschatz) Ciclo de Vida para o Desenvolvimento de Sistemas de Bancos de Dados 1. Anlise das Necessidades 2. Projeto Conceitual 3. Projeto Fsico 4. Implementao 5. Monitorao 6. Sintonizao (tunning) manuteno Perigos Potenciais no Projeto de Bancos de Dados Relacionais Repetio de informao Informaes repetidas consomem espao de armazenamento e dificultam a atualizao. Incapacidade de representar parte da informao Por vezes tem-se que incluir valores nulos. Perda de informao Projetos mal elaborados sugerem a decomposio de esquemas relacionais com muitos atributos. Dependncias Funcionais Dada uma relao R, o atributo Y de R funcionalmente dependente do atributo X de R, ou R.X R.Y se e apenas se, cada valor X em R for associado precisamente a um mesmo valor Y em R, a qualquer momento. Obs.: Os atributos X e Y podem ser compostos. fornecedor.cod_forn fornecedor.nome_forn fornecedor.cod_forn fornecedor.endereco fornecedor.cod_forn fornecedor.cidade fornecedor.cod_forn fornecedor.estado pessoa.rg pessoa.nome pessoa.rg pessoa.endereo pessoa.rg pessoa.fone A dependncia funcional uma noo semntica e seu estudo permite uma melhor compreenso dos dados. Exemplos de Dependncias Funcionais Diagramas de Dependncias Funcionais Pode-se representar as dependncias funcionais atravs de diagramas de dependncias. nome cor tamanho cod_prod cod_prod qtde cod_forn cod_ped cod_forn endereo nome cidade porte nome qualidade cod_prod Normalizao Processo de transformao das relaes (tabelas representando entidades e relacionamentos), em novas relaes, pela aplicao de projees (quebra das tabelas). Conseqncias Problemas de anomalias e inconsistncias diminuem; Relaes simplificadas e estrutura regular; Aumento da integridade dos dados; Necessidade de realizao de junes; Eventual queda na performance. Formas Normais universo das relaes (normalizadas e no-normalizadas) relaes na FN PJ (5a FN) relaes na FN de Boyce/Codd relaes na 3a. FN relaes na 2a. FN relaes na 1a. FN relaes na 4a. FN 1a. Forma Normal (1FN) "Todos de atributos admitem apenas a valores atmicos. cod_forn prod1 qtde1 prod2 qtde2 prod3 qtde3 F1 P1 200 P2 300 F2 P3 100 F3 P1 200 P3 400 P5 400 cod_forn cod_prod qtde F1 P1 200 F1 P2 300 F2 P3 100 F3 P1 200 F3 P3 400 F3 P5 400 1a. FN - Campos Atmicos 1a. FN 2a. Forma Normal (2FN) "Cada atributo no chave dependente de toda a chave primria. qtde cod_prod cod_forn cidade porte cod_ped 2a. FN qtde cod_forn cidade porte cod_prod cod_forn cod_ped Problemas solucionados (1FN) Insero O fornecedor s poder ser cadastrado quando fornecer pelo menos 1 pea. Remoo Ao se remover algum pedido, destri-se tambm a informao de localidade associada ao fornecedor a que se refere o pedido. Atualizao Redundncia de informaes em diversas tuplas. Ex. Mudana de um fornecedor de uma cidade para outra. 3a. Forma Normal (3FN) "Cada atributo no chave dependente no transitivo da chave primria. cod_forn cidade porte 3a. FN cod_forn porte cidade cidade Problemas solucionados (3FN) Insero No se pode registrar o fato de uma cidade ter um determinado "porte at que haja um fornecedor daquela cidade. Remoo Removendo-se o ltimo fornecedor de uma cidade, perde-se a informao "porte. Atualizao Quando uma cidade muda de categoria ("porte), pode ser necessrio atualizar diversas tuplas da relao fornecedor. Restries de Integridade Integridade de Chave; Integridade de Entidade; Integridade Referencial. Tipos: Restries Implcitas Restries Explcitas Especificao Procedimental; Especificao Declarativa; Especificao de Triggers. 1. Guiado pelo seu "bom-senso, construa um diagrama ER, agrupando os atributos nas tabelas que vo representar as entidades e os relacionamentos do seu banco de dados. 2. Construa os diagramas de dependncias funcionais para as tabelas propostas no MER (ou um nico diagrama de dependncias funcionais considerando todos os atributos do seu banco de dados). 3. Elimine os atributos repetitivos (se houver), de modo a obter um modelo de dados na 1FN. 4. Elimine as dependncias parciais da chave primria em suas tabelas (se houver), obtendo um projeto na 2FN. 5. Elimine as dependncias transitivas nas tabelas (se houver), obtendo um esquema na 3FN. Passos para o projeto de bancos de dados relacionais