Cursos / Informática para Internet / Banco de Dados / Aula

arrow_back Aula 06 - Normalização Básica

Anomalia de inserção, remoção e atualização

Antes de falar sobre normalização, vamos entender o problema de anomalia de inserção, de remoção e de atualização. Anomalias são mudanças em dados que podem gerar uma inconsistência no banco de dados relacional.

Uma inconsistência é geralmente representada por situações em que dados que deveriam ser iguais, apresentam valores diferentes em várias tabelas do banco de dados. Por exemplo, o valor de compra de um produto deve ser o mesmo valor armazenado nas tabelas recibo e nota fiscal. Desse modo, se os valores forem diferentes, entende-se geralmente que existe uma inconsistência.

Tal inconsistência geralmente aparece quando o banco de dados é projetado de forma inadequada. Para exemplificar, usaremos a Figura 1, que mostra os tipos mais comuns de anomalias.

Exemplo de tabela AgenciaFuncionario.

Note que mostramos, na parte superior, a estrutura da tabela (como você está acostumado a ver) e, na parte inferior da figura, exemplos de valores para os registros. Os valores são importantes para facilitar o entendimento dos cenários que produzem as anomalias.

Assim, na Figura 1, temos uma tabela chamada AgenciaFuncionario, que armazena os dados dos funcionários e de agências bancárias. Como essas duas informações (funcionário e agência) são armazenadas na mesma tabela, é possível também saber onde cada funcionário trabalha (agência, endereço, telefone). Ou seja, à primeira vista, a tabela AgenciaFuncionario parece ser uma ótima opção para reduzir o número de tabelas e aumentar a velocidade do sistema, entretanto, tal solução pode gerar várias anomalias.

Anomalia de inserção

Uma anomalia de inserção acontece quando, ao inserir um dado, este pode gera uma inconsistência no banco de dados. No exemplo da Figura 1, para inserir os detalhes (NumAg, Endereço, Tel.) de um novo funcionário, você deve tomar cuidado para usar exatamente os dados já cadastrados por outros funcionários. Por exemplo, um novo funcionário para a agência 1550 deve usar exatamente o mesmo endereço dos outros dois funcionários que também trabalham nessa agência. Se isso não for feito, teremos um problema de inconsistência de dados, no qual dois funcionários que trabalham na mesma agência possuem endereços diferentes.

Anomalia de remoção

Uma anomalia de remoção acontece quando, ao remover um registro, você pode gerar inconsistência no banco de dados. No exemplo da Figura 1, uma anomalia de remoção acontece quando removemos o funcionário de número 30. Nesse caso, o objetivo é apenas remover os dados do funcionário e preservar os dados da agência 1668. Entretanto, da forma como a tabela está estruturada, os dados da agência também são removidos.

Anomalia de atualização

Uma anomalia de atualização acontece quando, ao atualizar um registro, você pode gerar inconsistência no banco de dados. No exemplo da Figura 1, uma anomalia de atualização acontece quando modificamos o endereço da agência 1632. Nesse caso, teremos que atualizar o endereço de todos os funcionários da agência 1632. Caso contrário, teremos uma inconsistência no banco de dados no qual funcionários da mesma agência possuem endereços diferentes. Note que todas as anomalias acontecem devido à existência de redundância de informação na tabela AgenciaFuncionario. Por exemplo, o mesmo endereço de uma agência é armazenado várias vezes quando ele poderia ser armazenado apenas uma vez. Assim, para evitar as anomalias é preciso evitar a redundância. A redundância é evitada através da normalização das tabelas, que você verá como se faz logo a seguir.

Versão 5.3 - Todos os Direitos reservados