De que trata o artigo?

Desenvolvimento de soluções para problemas cotidianos enfrentados por DBAs e desenvolvedores de aplicações para banco dados.


Para que serve?

Fornecer conceitos de utilização de funcionalidades do padrão SQL ANSI na resolução de problemas enfrentados no dia-a-dia na recuperação de informações do banco de dados.


Em que situação o tema é útil?

Criação de diferentes tipos de índices.

Neste mês, o trabalho na empresa fictícia ItsMyBusiness está bem mais calmo. Mas, como sempre acontece, a empresa não está parada. O projeto de melhoria do controle de pedidos está terminando e logo tudo estará em produção (Nota DevMan 1).

Atualmente, o modelo do banco de dados da empresa está da maneira como mostra a Figura 1.

Figura 1. Modelo de dados simplificado da empresa ItsMyBusiness.

O script para criação desta base de dados está disponível no portal da SQL Magazine. Este script adota um SQL padrão, de tal modo que ele roda, com pequenas alterações, em SQL SERVER, DB2, ORACLE, FIREBIRD e POSTGRES. As alterações necessárias para cada SGBD são apresentadas como comentários.

Mas o que nos interessa no Desafio SQL deste mês é que uma das razões para o projeto ainda não ter terminado é que, durante os testes de inserção de dados, se descobriu que o sistema permite o cadastramento de dois ou mais produtos com o mesmo nome. Cada registro terá um ID diferente, mas ainda assim a descrição dos produtos pode ser idêntica.

Para fins de ilustração, a Listagem 1 mostra o script de definição da tabela de produtos.

Listagem 1. Criação da tabela de produtos


  1    CREATE TABLE dbo.tblProduto(
  2      codProduto int NOT NULL,
  3      Nome varchar(100) ,
  4    PRIMARY KEY (codProduto)); 

No caso da ItsMyBusiness, assim como seria na maioria das empresas, este comportamento é completamente indesejável.

Ter no banco de dados vários códigos para um mesmo produto cria uma duplicidade indesejável nos dados e certamente será fonte de erros. Para ilustrar a questão, cito alguns exemplos:

1. quando um cliente fizer um pedido pelo site, qual dos “códigos válidos” daquele produto será considerado?

2. quando analisarmos o histórico das vendas do produto, quais dos “códigos válidos“ vamos considerar para geração do relatório?

...

Quer ler esse conteúdo completo? Tenha acesso completo