DB設計

ER図

DDLはここからダウンロードする。SQL Server用。

住所マスタはアプリからは使用しないのだが、ダウンロードした郵便番号データをほぼそのまま登録できるように用意した。

Entity FrameworkでJOINを試したかったので大した項目数じゃなけど郵便番号マスタと市区町村名マスタに分けて登録することにした。

都道府県マスタはコンボボックスのドロップダウンアイテムに設定するためだけに用意した。起動時に毎回DISTINCTで取り出すのもアレだし。郵便番号データの更新時についでに更新する。

マスタデータ用意

郵便番号検索および電話番号ハイフン区切り桁数検索のために2つのデータをマスタとして登録する。

郵便番号データ

郵便番号データは日本郵便が配布しているデータを使用する。

住所の郵便番号(1レコード1行、UTF-8形式)(CSV形式) – 日本郵便

郵便番号データの説明

解凍したデータの中身はこんな感じ。

01101,"060  ","0600000","ホッカイドウ","サッポロシチュウオウク","イカニケイサイガナイバアイ","北海道","札幌市中央区","以下に掲載がない場合",0,0,0,0,0,0
01101,"064  ","0640941","ホッカイドウ","サッポロシチュウオウク","アサヒガオカ","北海道","札幌市中央区","旭ケ丘",0,0,1,0,0,0
01101,"060  ","0600041","ホッカイドウ","サッポロシチュウオウク","オオドオリヒガシ","北海道","札幌市中央区","大通東",0,0,1,0,0,0
01101,"060  ","0600042","ホッカイドウ","サッポロシチュウオウク","オオドオリニシ(1−19チョウメ)","北海道","札幌市中央区","大通西(1〜19丁目)",1,0,1,0,0,0
01101,"064  ","0640820","ホッカイドウ","サッポロシチュウオウク","オオドオリニシ(20−28チョウメ)","北海道","札幌市中央区","大通西(20〜28丁目)",1,0,1,0,0,0
01101,"060  ","0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0,0,1,0,0,0
01101,"060  ","0600001","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウニシ(1−19チョウメ)","北海道","札幌市中央区","北一条西(1〜19丁目)",1,0,1,0,0,0
01101,"064  ","0640821","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウニシ(20−28チョウメ)","北海道","札幌市中央区","北一条西(20〜28丁目)",1,0,1,0,0,0
01101,"060  ","0600032","ホッカイドウ","サッポロシチュウオウク","キタ2ジョウヒガシ","北海道","札幌市中央区","北二条東",0,0,1,0,0,0
01101,"060  ","0600002","ホッカイドウ","サッポロシチュウオウク","キタ2ジョウニシ(1−19チョウメ)","北海道","札幌市中央区","北二条西(1〜19丁目)",1,0,1,0,0,0

最初の数行をみただけでもわかるが「以下に掲載がない場合」であるとか「(1−19チョウメ)」だとか人間様向けの説明文がチョイチョイ挿入されていて郵便番号入力して「住所を補完する」ための文字列を取得する目的で使用するにはひと手間かかる困ったちゃん。この問題は以下の記事が詳しい。

郵便番号データ ken_all.csv の改定は、本質的に未だ何の解決にもなっていない

これを毎回手直しをするのは大変なので郵便番号データをDBに登録するで対応する。

電話番号データ

総務省が配布しているデータを使用する。

総務省|電気通信番号制度|市外局番の一覧

WORDとPDFで配布されているのでこれをCSV形式に変換する。

1,北海道江別市、札幌市、北広島市、空知郡南幌町,11,CDE
2,北海道恵庭市、千歳市,123,DE
3,北海道夕張市(富野を除く。),123,DE
4-2,北海道夕張市富野、夕張郡,123,DE
6,北海道芦別市,124,DE
7,北海道赤平市、歌志内市、砂川市、滝川市、雨竜郡雨竜町、樺戸郡(浦臼町及び新十川町に限る。)、空知郡(上砂川町及び奈井江町に限る。),125,DE
8-2,北海道岩見沢市(宝水町を除く。)、美唄市、石狩郡新篠津村、樺戸郡月形町,126,DE
10,北海道岩見沢市宝水町、三笠市,1267,E

このデータも人間様向けの文字列がチラホラあるけど使用するのは市外局番列だけなので気にしない。

マスタデータ登録

郵便番号と市外局番のCSVを用意したら既出の郵便番号データをDBに登録するで登録する。

トップページ

コメント

タイトルとURLをコピーしました