Introdução

Na gestão de banco de dados, garantir que os dados sejam normalizados e estruturados corretamente é crucial para manter a integridade e a utilidade dos dados. Às vezes, você pode se deparar com tabelas que carecem das relações necessárias entre os pontos de dados, levando a uma estrutura de banco de dados desorganizada. Um cenário comum envolve uma tabela que registra localizações de clientes sem um campo dedicado para os nomes das empresas.

Este post tem como objetivo abordar um exemplo específico em que alguém recebeu uma tabela composta por aproximadamente 18.000 linhas com um único campo para “Nome da Localização” e nenhum campo para “Nome da Empresa”. A situação apresenta desafios devido à ausência de uma designação adequada para várias localizações operadas pela mesma empresa, podendo gerar complicações na recuperação e análise dos dados.

Neste blog, exploraremos uma abordagem sistemática para normalizar tal tabela, gerando uma lista de empresas com base em descrições distintas de localizações e tornando o banco de dados eficiente novamente.

Compreendendo a Estrutura da Tabela Atual

A tabela de localizações existente tem uma estrutura simples:

 ID  Nome_Localizacao     
 1   Loja da Cidade#1        
 2   Loja da Cidade - Loc 2 
 3   A Loja da Cidade     
 4   TLC - Algum lugar   
 5   Loja da Cidade, a 3   
 6   Loja da Toença4        

O que buscamos é um resultado mais estruturado que inclua um “ID_Empresa” para cada localização:

 ID  ID_Empresa   Nome_Localizacao     
 1   1            Loja da Cidade#1       
 2   1            Loja da Cidade - Loc 2 
 3   1            A Loja da Cidade     
 4   1            TLC - Algum lugar   
 5   1            Loja da Cidade, a 3   
 6   1            Loja da Toença4        

Em conjunto com esta tabela de localizações, também criaremos uma tabela de empresas separada:

 ID_Empresa  Nome_Empresa  
 1           A Loja da Cidade 

Gerando Nomes de Empresas

Como não existe uma lista existente de nomes de empresas, precisamos gerá-la a partir dos nomes de localização fornecidos. Aqui está uma abordagem passo a passo para realizar isso:

Passo 1: Identificar Nomes Candidatos de Empresas

  • Extrair Nomes de Localização: Crie uma lista de Nomes de Localização que são compostos principalmente por caracteres alfabéticos.
  • Usar Expressões Regulares: Para filtrar entradas irrelevantes (como locais com caracteres numéricos ou especiais), utilize expressões regulares para analisar os dados.

Passo 2: Revisão Manual

  • Classificar a Lista: Classifique a lista filtrada de nomes de localizações em ordem alfabética.
  • Selecionar Nomes de Empresas: Revise manualmente a lista classificada para determinar quais localizações servem melhor como nomes representativos de empresas.

Passo 3: Pontuação de Correspondência

  • Algoritmo de Software para Correspondência: Utilize a distância de Levenshtein ou qualquer algoritmo similar de comparação de strings para avaliar a proximidade entre cada potencial Nome da Empresa e os vários Nomes de Localização.
  • Criar um Sistema de Pontuação: Armazene esses resultados em uma nova tabela refletindo NomeEmpresa, NomeLocalizacao, e sua correspondente PontuacaoCorrespondencia.

Passo 4: Implementar Limiares

  • Filtrar Correspondências: Defina uma pontuação limiar; qualquer correspondência que caia abaixo dessa pontuação predeterminada será excluída de considerações futuras.

Passo 5: Verificação Manual

  • Revisar os Dados: Verifique manualmente cada entrada listada por NomeEmpresa, NomeLocalizacao, e PontuacaoCorrespondencia e finalize quais nomes genuinamente representam cada empresa.
  • Organizar para Eficiência: Ordene os resultados por PontuacaoCorrespondencia para agilizar o processo de revisão e reduzir a carga de trabalho.

Conclusão

Embora o processo delineado possa parecer demorado, ele utiliza técnicas de automação e algoritmos para gerenciar a complexidade de lidar com cerca de 18.000 registros. Essa abordagem estruturada não só economiza tempo, mas ajuda a categorizar os dados com confiança, levando, em última análise, a uma melhor integridade do banco de dados e análises significativas no futuro.

Ao empregar este método, você deve achar muito mais fácil normalizar tabelas com baixa integridade e melhorar a usabilidade do seu banco de dados. Sempre lembre-se: o objetivo da normalização não é apenas estruturar os dados, mas aumentar sua acessibilidade e confiabilidade.