SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

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

 会員情報を含むリレーショナルデータベース(以下、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の作成方法の知識も必要になります。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
【理論編】名寄せ処理の理論

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
既存のRDBシステムに会員情報の名寄せ機能を追加する連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6741 2012/09/13 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング