はじめに
「ワタナベだけど同じDMが何通も届く!」会員からのクレームの電話は、それだけ言い放って切られてしまいました。発信番号も非通知で、他の情報は一切確認できません。
会員テーブルから、同姓同名のデータ一覧の抽出が必要ですが、どうしましょうか。
下図はSQL命令で抽出後、コーディングで処理する一例ですが、想像以上に難解です。
ところが実は、SQL命令だけで目的を達する、魔法のような一文が作れるのです。
「名寄せ」とは
「名寄せ」は元々金融機関の用語で、同一顧客の複数口座を一元管理することを指し、ペイオフ制度(注1)の導入に伴い、その重要性が増しています。また年金でも、一人に複数の年金番号が振られると、受給資格(25年以上の加入期間)の確認のため、名寄せが不可欠です。
金融機関破たん時、預金者一人あたり1,000万円までの払い戻しを保証すること。
本連載では、一般的なRDBシステムにおいて、テーブルに二重登録された同一人物を1つの会員IDに統合する処理を「名寄せ」と定義することとします。スタッフが「既存の会員情報を修正」せず「新規に会員登録」する、Web上で顧客が複数IDを取得する、など二重登録は日々発生するため、RDBの整合性を保つためにも名寄せ機能は常時必要になります。
対応可能なRDB
MySQL(4.1以上)、SQL Server、Access、PostgreSQL、OracleなどのRDBで可能です。
ただし、EXISTS演算子とサブクエリー(後述)が利用できないSQLiteでは不可です。
本連載の構成
各回を通して、前半がRDBのテーブルの理論編、後半がASP.NET+SQL Serverでの実践編、という形で進めます。前半は開発言語、RDBに依存しませんので、広く応用できます。
第1回はSQLによる重複値データの抽出と単純な名寄せ、第2回は複雑な名寄せとその処理、第3回は名寄せに関連したテーブルの処理、という順で紹介します。
皆様のRDBシステムに名寄せ機能を組み込む際の一助となることが目標です。
必要となる前提知識と環境
前半部分はSQL命令の解説になるので、SQLの基礎知識が前提となります。
後半部分は各回を通して、ASP.NET開発の基礎知識(SQL Serverへのアクセス方法、MultiViewコントロールの使い方を含む)、および以下の環境が前提となります。
- 開発ツール:Visual Web Developer 2010 Express SP1(以下、VWD2010)
- 開発言語など:Visual Basic(以下、VB)、コードビハインドモデルで開発
- 使用データベース:SQL Server 2008 Express Edition SP1
今回は、ビジネスオブジェクトを用いたGridViewの作成方法の知識も必要になります。