はじめに

データベース管理において、データが正規化され、正しく構造化されていることを確保することは、データ整合性と有用性を維持する上で重要です。時には、データポイント間の必要な関係が不足しているテーブルに直面することもあります。一般的なシナリオの一つとして、顧客の位置情報を記録するテーブルがあり、会社名のための専用フィールドがない場合があります。

この投稿では、約18,000行からなる「位置情報名」用の単一フィールドしかなく、「会社名」フィールドが存在しないテーブルを渡された場合の特定の例について説明します。この状況は、同じ会社が運営する複数の場所に対する適切な会社指定の不在が原因で、データの取得や分析において複雑さを引き起こす可能性があります。

このブログでは、そのようなテーブルを正規化し、一意の位置情報記述に基づいて会社リストを生成し、データベースを再び効率的にするための体系的なアプローチを探ります。

現在のテーブル構造の理解

既存の位置情報テーブルはシンプルな構造を持っています:

 ID  Location_Name     
 1   TownShop#1        
 2   Town Shop - Loc 2 
 3   The Town Shop     
 4   TTS - Someplace   
 5   Town Shop,the 3   
 6   Toen Shop4        

私たちが目指すものは、各位置に「Company_ID」を含むより構造化された出力です:

 ID  Company_ID   Location_Name     
 1   1            Town Shop#1       
 2   1            Town Shop - Loc 2 
 3   1            The Town Shop     
 4   1            TTS - Someplace   
 5   1            Town Shop,the 3   
 6   1            Toen Shop4        

この位置情報テーブルと併せて、別の会社テーブルも作成します:

 Company_ID  Company_Name  
 1           The Town Shop 

会社名の生成

既存の会社名リストがないため、提供された位置名から生成する必要があります。これを達成するためのステップバイステップのアプローチは次のとおりです:

ステップ1: 候補会社名の特定

  • 位置情報名の抽出: 主にアルファベット文字で構成された位置情報名のリストを作成します。
  • 正規表現の使用: 無関係なエントリ(数値や特殊文字を含む場所など)を除外するために、正規表現を使用してデータをパースします。

ステップ2: 手動レビュー

  • リストのソート: フィルタリングされた位置情報名のリストをアルファベット順にソートします。
  • 会社名の選択: ソートされたリストを手動で確認し、どの位置情報が代表的な会社名として最適かを判断します。

ステップ3: マッチスコアの算出

  • マッチングのためのソフトウェアアルゴリズム: レーベンシュタイン距離や同様の文字列比較アルゴリズムを使って、各候補会社名とさまざまな位置情報名との親密さを評価します。
  • スコアシステムの作成: これらの結果をCompanyNameLocationName、及びそれに対応するMatchScoreを反映する新しいテーブルに保存します。

ステップ4: スレッショルドの実装

  • マッチのフィルタリング: スレッショルドスコアを定義し、このあらかじめ決定されたスコアを下回るマッチは以降の検討から除外します。

ステップ5: 手動検証

  • データの確認: CompanyNameLocationName、およびMatchScoreでリストされた各エントリを手動でチェックし、どの名前が各会社を真に代表するかを最終決定します。
  • 効率のための整理: レビュー過程を簡素化し、作業負担を軽減するために、結果をMatchScoreで順序付けします。

結論

説明したプロセスは時間がかかるように思えるかもしれませんが、約18,000レコードを扱う複雑さを管理するために自動化およびアルゴリズム技術を活用します。この構造化アプローチは時間を節約するだけでなく、データを自信を持って分類する手助けをし、最終的にはデータベースの整合性を向上させ、将来の有意義な分析を実現します。

この方法を使用すれば、低整合性のテーブルを正規化し、データベースの使いやすさを向上させることがずっと簡単になるはずです。正規化の目標はデータを構造化するだけでなく、その可アクセス性と信頼性を高めることであるということを常に覚えておいてください。