個人情報の重複登録を避けるための一意インデックス

餅は餅屋に頼みましょう。クレジットカード会社勤務歴25年の方のエントリ同姓同名 - クレジットカードの裏情報と雑学が参考になります。こんなエントリを探してもらえるのもGoogle先生様様ですね。

エントリによれば、おおむね氏名・生年月日・住所で一意インデックスを作ると良いようです。あまり出番が無いでしょうが、性別も入れるべきだと思います。

"COLLATE Japanese_CI_AS"で比較してもらえるので、番地・部屋番号などの1バイト文字 or 2バイト文字や大文字 or 小文字の表記の揺れがあっても同一視されて重複が検出されますが、「一丁目二番地三号」と「1-2-3」が同一視されない*1 ので、小規模データの場合はあえて住所を入れない方が良いのかも。

SELECT CASE WHEN '123' = '123' THEN 'OK' ELSE 'NG' END
SELECT CASE WHEN 'A456' = 'a456' THEN 'OK' ELSE 'NG' END
SELECT CASE WHEN '一二三' = '123' THEN 'OK' ELSE 'NG' END
SELECT CASE WHEN '百二十三' = '123' THEN 'OK' ELSE 'NG' END
SELECT CASE WHEN '1丁目2番地3号' = '1-2-3' THEN 'OK' ELSE 'NG' END

大規模データで実用になるようにするには、先のエントリにあるとおり日本行政区画番号を使うのが良いのでしょうけど、買うとそれなりのお値段になるようです。市区町村レベルでお茶を濁すのならば自治体コードで良いのかも。

http://news22.2ch.net/test/read.cgi/newsplus/1190988462/みたいな事故が起きるのは、きっと内部的に自治体コードで扱ってるんでしょうねー。

*1:そりゃ無茶な相談だ。