Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

SQLによる条件付き重複データの抽出と単純な名寄せ

既存のRDBシステムに会員情報の名寄せ機能を追加する 第1回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2012/09/13 14:00

 会員情報を含むリレーショナルデータベース(以下、RDB)システムでは、同じ人が別々のIDでテーブルに登録されることがあります。本連載では、二重登録状態を解消する「名寄せ」機能の追加方法を紹介します。

目次

はじめに

 「ワタナベだけど同じDMが何通も届く!」会員からのクレームの電話は、それだけ言い放って切られてしまいました。発信番号も非通知で、他の情報は一切確認できません。

 会員テーブルから、同姓同名のデータ一覧の抽出が必要ですが、どうしましょうか。

図1 同姓同名データの抽出
 
図1 同姓同名データの抽出

 下図はSQL命令で抽出後、コーディングで処理する一例ですが、想像以上に難解です。

図2 コーディングでの処理
図2 コーディングでの処理

 ところが実は、SQL命令だけで目的を達する、魔法のような一文が作れるのです。

「名寄せ」とは

 「名寄せ」は元々金融機関の用語で、同一顧客の複数口座を一元管理することを指し、ペイオフ制度(注1)の導入に伴い、その重要性が増しています。また年金でも、一人に複数の年金番号が振られると、受給資格(25年以上の加入期間)の確認のため、名寄せが不可欠です。

注1

 金融機関破たん時、預金者一人あたり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コントロールの使い方を含む)、および以下の環境が前提となります。

  1. 開発ツール:Visual Web Developer 2010 Express SP1(以下、VWD2010)
  2. 開発言語など:Visual Basic(以下、VB)、コードビハインドモデルで開発
  3. 使用データベース:SQL Server 2008 Express Edition SP1

 今回は、ビジネスオブジェクトを用いたGridViewの作成方法の知識も必要になります。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 遠藤 存(エンドウ アリ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2012年2月時点での登録メンバは37名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂き...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:既存のRDBシステムに会員情報の名寄せ機能を追加する

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5