·

Cursos Gerais ·

Estrutura de Dados

Send your question to AI and receive an answer instantly

Ask Question

Preview text

Banco de Dados Profa MSc Viviane Guimarães Ribeiro 1 Normalização Antes de entender o que é a Normalização de um banco de dados é necessário entender o que é a chamada Dependência Funcional A dependência funcional DF é um conceito muito importante em banco de dados relacionais e que consiste em uma restrição entre dois conjuntos de atributos de uma mesma entidaderelação Uma dependência funcional é representada pela expressão X Y em que X e Y são subconjuntos de atributos de uma relação qualquer Isso impõe uma restrição na qual um componente Y de uma tupla é dependente de um valor do componente X ou é determinado por ele Do mesmo modo os valores do componente X determinam de forma unívoca os valores do componente Y Resumindo Y é dependente funcionalmente de X Ex MatriculaAluno CodigoCurso CodigoDisciplina NomeAluno DataMatricula NomeCurso NomeDisciplina NotaProva É possível estabelecer 4 DF MatriculaAluno NomeAluno DataMatricula CodigoCurso NomeCurso CodigoDisciplina NomeDisciplina MatriculoAluno CodigoCurso CodigoDisciplina NotaProva A normalização é um processo de refinamento do esquema de banco de dados procurando eliminar possíveis redundâncias dados repetidos em entidades sanar problemas de dependências parciais entre atributos e reduzir ao mínimo as anomalias de inclusão alteração e exclusão Tabela Aluno Nome Atividade Taxa José Musculação 3000 Pedro Judô 3500 Manoel Judo 3500 Anomalia de exclusão ao excluir a tupla do aluno José perdemos além do nome do aluno as informações referentes à atividade Musculação Anomalia de inclusão ao implantar uma nova atividade não podemos inserilo até que um aluno tenha a disposição de fazêlo Anomalia de alteração como Judô foi grafado de diferentes formas teremos dificuldade na atualização do valor a ser cobrado como taxa Banco de Dados Profa MSc Viviane Guimarães Ribeiro 2 11 Primeira Forma Normal 1FN Uma tabela está na primeira forma normal se e somente se todas as colunas possuem um único valor e não existem grupos repetitivos colunas em uma linha ou atributos compostos Aplicar a 1FN consiste em retirar da estrutura os elementos repetitivos ou seja aqueles dados que podem compor uma estrutura do tipo vetor Tabela Pedido NumPedid o CodClient e Cliente Enderec o Cidad e U F CodProdut o NomeProdut o Qt d Valor U Valor T CodVendedo r Vendedo r 347 100 Francisc o Moura Av Nove de Julho 19 Jd Paulista São Paulo S P 1234 Caderno 200 fl 2 800 1600 23 Álvaro 347 100 Francisc o Moura Av Nove de Julho 19 Jd Paulista São Paulo S P 5678 Caneta Azul 1 150 150 23 Álvaro 347 100 Francisc o Moura Av Nove de Julho 19 Jd Paulista São Paulo S P 9876 Caneta Vermelha 1 150 150 23 Álvaro 347 100 Francisc o Moura Av Nove de Julho 19 Jd Paulista São Paulo S P 5432 Papel Sulfite A4 1 1200 1200 23 Álvaro 347 100 Francisc o Moura Av Nove de Julho 19 Jd Paulista São Paulo S P 1357 Envelope A4 10 050 500 23 Álvaro A tabela Pedido não está na 1FN por possuir valores repetidos em várias tuplas Banco de Dados Profa MSc Viviane Guimarães Ribeiro 3 Colocando na 1FN Tabela Pedido NumPedido CodCliente Cliente Endereco Cidade UF CodVendedor Vendedor 347 100 Francisco Moura Av Nove de Julho 19 Jd Paulista São Paulo SP 23 Álvaro Tabela ItemPedido NumPedido CodProduto NomeProduto Qtd ValorU ValorT 347 1234 Caderno 200 fl 2 800 1600 347 5678 Caneta Azul 1 150 150 347 9876 Caneta Vermelha 1 150 150 347 5432 Papel Sulfite A4 1 1200 1200 347 1357 Envelope A4 10 050 500 12 Segunda Forma Normal 2FN Consiste em retirar das estruturas de dados que possuem chaves compostas todos os campos que são funcionalmente dependentes de somente alguma parte dessa chave Podemos afirmar que uma estrutura está na 2FN se ela estiver na 1FN e não possuir campos que sejam funcionalmente dependentes de parte da chave Tabela ItemPedido NumPedido CodProduto NomeProduto Qtd ValorU ValorT 347 1234 Caderno 200 fl 2 800 1600 347 5678 Caneta Azul 1 150 150 347 9876 Caneta Vermelha 1 150 150 347 5432 Papel Sulfite A4 1 1200 1200 347 1357 Envelope A4 10 050 500 A tabela ItemPedido apesar de estar na 1FN não está na 2FN pois as colunas NomeProduto e ValorU dependem funcionalmente de parte da chave primária CodProduto Tabela Pedido NumPedido CodCliente Cliente Endereco Cidade UF CodVendedor Vendedor 347 100 Francisco Moura Av Nove de Julho 19 Jd Paulista São Paulo SP 23 Álvaro Banco de Dados Profa MSc Viviane Guimarães Ribeiro 4 Tabela ItemPedido NumPedido CodProduto Qtd ValorT 347 1234 2 1600 347 5678 1 150 347 9876 1 150 347 5432 1 1200 347 1357 10 500 Tabela Produto CodProduto NomeProduto ValorU 1234 Caderno 200 fl 800 5678 Caneta Azul 150 9876 Caneta Vermelha 150 5432 Papel Sulfite A4 1200 1357 Envelope A4 050 13 Terceira Forma Normal 3FN A terceira forma normal determina que não devem existir atributos com dependência funcional transitiva em uma tabela pois podem provocar anomalias de inclusão alteração e deleção A aplicação da 3FN consiste em retirar das estruturas os campos que são funcionalmente dependentes de outros campos que não são chaves Podemos afirmar que uma estrutura está na 3FN se ela estiver na 2FN e não possuir campos dependentes de outros campos não chaves Tabela Pedido NumPedido CodCliente Cliente Endereco Cidade UF CodVendedor Vendedor 347 100 Francisco Moura Av Nove de Julho 19 Jd Paulista São Paulo SP 23 Álvaro Apesar de estar na 2FN a tabela Pedido não está na 3FN pois os atributos Cliente Endereco Cidade e UF são dependentes funcionalmente de CodCliente dependência transitiva e o campo Vendedor é dependente funcionalmente de CodVendedor dependência transitiva Banco de Dados Profa MSc Viviane Guimarães Ribeiro 5 Tabela Pedido NumPedido CodCliente CodVendedor 347 100 23 Tabela Cliente CodCliente Cliente Endereco Cidade UF 100 Francisco Moura Av Nove de Julho 19 Jd Paulista São Paulo SP Tabela Vendedor CodVendedor Vendedor 23 Álvaro Tabela ItemPedido NumPedido CodProduto Qtd ValorT 347 1234 2 1600 347 5678 1 150 347 9876 1 150 347 5432 1 1200 347 1357 10 500 Tabela Produto CodProduto NomeProduto ValorU 1234 Caderno 200 fl 800 5678 Caneta Azul 150 9876 Caneta Vermelha 150 5432 Papel Sulfite A4 1200 1357 Envelope A4 050 Banco de Dados Profa MSc Viviane Guimarães Ribeiro 6 14 Forma Normal de BoyceCodd FNBC Na verdade a FNBC é uma extensão da 3FN que não resolvia certas anomalias presentes na informação contida em uma entidade O problema foi observado porque a 2FN e a 3FN só tratavam dos casos de dependência parcial e transitiva de atributos fora de qualquer chave porém quando o atributo observado estiver contido em uma chave primária ou candidata ele não é captado pela verificação da 2FN e 3FN A definição da FNBC é a seguinte uma entidade está na FNBC se e somente se todos os determinantes forem chaves candidatas Note que esta definição é em termos de chaves candidatas e não sobre as chaves primárias Emprestimo NomeAgencia NomeCliente NumEmp Valor Rio Branco Luis Sampaio 902230 150000 Rio Branco Carlos Pereira 902230 150000 Rio Branco Luis Paulo Souza 902240 120000 Ipanema José Alves 902289 300000 Ipanema Luis Paulo Souza 902255 85000 Acaraí Calos Pereira 902290 70000 Acaraí José Alves 202212 40000 Esta estrutura de dados entretanto não satisfaz a FNBC pois se considerarmos somente NumEmp como sua chave candidata pode haver um par de linha representando o mesmo empréstimo desde que fossem duas as pessoas participantes dele como na tabela apresentada Banco de Dados Profa MSc Viviane Guimarães Ribeiro 7 NomeAgencia NomeCliente NumEmp Valor Rio Branco Luis Sampaio 902230 150000 Rio Branco Carlos Pereira 902230 150000 Como existe dependência multivalorada neste caso temos que aplicar a FNBC Decompomos a entidade que não está na FNBC em duas entidades sem perder a capacidade de junção delas Emprestimo NomeAgencia NumEmp Valor Rio Branco 902230 150000 Rio Branco 902240 120000 Ipanema 902289 300000 Ipanema 902255 85000 Acaraí 902290 70000 Acaraí 202212 40000 Devedor NomeCliente NumEmp Luis Sampaio 902230 Carlos Pereira 902230 Luis Paulo Souza 902240 José Alves 902289 Luis Paulo Souza 902255 Calos Pereira 902290 José Alves 202212 15 Quarta Forma Normal 4FN Uma entidade que esteja na 3FN também está na 4FN se ela não contiver mais do que um fato multivalorado não estamos falando de atributo multivalorado a respeito da entidade descrita Vamos imaginar o conteúdo da tabela Compra CodFornecedor CodProduto CodComprador 101 BA3 01 102 CJ10 05 110 88A 25 530 BA3 01 101 BA3 25 Banco de Dados Profa MSc Viviane Guimarães Ribeiro 8 Embora esteja na 3FN pois não existem dependências transitivas na tabela ao conter mais de um fato multivalorado sua atualização tornase muito difícil Para passarmos a entidade anterior para a 4FN é necessário a realização de um divisão da entidade original Compra em duas outras ambas herdando a chave CodProduto e concatenada em cada nova entidade com os atributos CodFornecedor e CodComprador CodFornecedor CodProduto 101 BA3 102 CJ10 110 88A 530 BA3 CodProduto CodComprador BA3 01 CJ10 05 88A 25 BA3 25 A aplicação da 4FN foi realizada neste caso para corrigir um erro de modelagem de dados pois no primeiro modelo utilizamos um relacionamento ternário de forma desnecessária associando o comprador somente ao processo de compra e não aos produtos que ele compra 16 Quinta Forma Normal 5FN A aplicação da 5FN consiste em encontrar a Dependência de Junção que permite decompor uma relação sem perdas Advém das dependências multivaloradas que ocorrem entre os atributos de uma relação A verificação da 5FN somente precisa ser empreendida em relações que tenham 3 ou mais atributos como parte da chave A 5FN trata da situação em que a informação permite ser reconstruída a partir de componentes menos que possam ser mantidos com uma redundância menor Ela generaliza os casos não cobertos pela segunda terceira e quarta formas normais Abaixo segue o exemplo da relação Fornecimento que não pode ser decomposta em 2 relações pois a junção entre elas geraria tuplas espúrias tuplas não existentes na relação original Assim usamos a 5FN para decompor a relação em três R1 R2 e R3 de modo que uma junção feita sobre essas relações mantenha a propriedade de junção sem perdas Banco de Dados Profa MSc Viviane Guimarães Ribeiro 9 Produto PedidoCompra Fornecedor Padrão B2 7801 341 Padrão B2 7801 108 Poste duplo T 9M 7801 108 Padrão B2 7802 108 Se desmembrarmos esta relação chegamos às seguintes entidades R1 Produto PedidoCompra Padrão B2 7801 Poste duplo T 9M 7801 Padrão B2 7802 R2 PedidoCompra Fornecedor 7801 341 7801 108 7802 108 R3 Produto Fornecedor Padrão B2 341 Padrão B2 108 Poste duplo T 9M 108 select r1Produto r2PedidoCompra r3Fornecedor from r1r2r3 where r1PedidoCompra r2PedidoCompra and r2Fornecedor r3Fornecedor and r3Produto r1Produto