最強に正規化された住所マスタ
最強の求人メディアサイトを考えるにあたって住所マスタは非常に重要である。
最強に正規化された住所マスタは以下の条件を満たすことを要求される。
都道府県・市区郡町村・字・丁・番・号・番地に対応する。
政令指定都市に対応する。
地域ブロックに対応する。(北海道・関東・中国・四国みたいなやつ)
別の概念は別のエンティティにする。
すべてのレコードに不変のIDを採番する。
そのIDは、存在するなら必ず国が指定したIDを利用する。
無限の追加・更新・削除に対応する。
必ず外部キーを張る。
テストケース
考えを深めるにあたって以下のようなテストケースにパスするか考えると良い。
以下の住所を自然に正規化できる
北海道余市郡余市町: 都道府県 → 郡 → 町のケース
宮城県富谷市上桜木1丁目42-: 都道府県 → 市 → 大字 → 丁 → 番 → 号(住居表示方式)
埼玉県さいたま市大宮区錦町630番地: 都道府県 → 市 → 区 → 町 → 番地(地番方式)
東京都世田谷区経堂: 都道府県 → 特別区 → 大字
愛知県名古屋市中区栄1-3-3: 都道府県 → 市 → 区 → 字 → 丁 → 番 → 号(政令指定都市)
以下の条件にマッチするデータを簡単に検索できる。(簡単 = LIKE文と自己再帰を使わず)
関西地方の都道府県の一覧
全国の政令指定都市の一覧
全国の特別区の一覧(実際には東京都だけだが)
宮城県の郡の一覧
また応用として、考案したERDは以下のテストケースにパスするか考えてみてはどうだろう。
三重県は基本的には中部地方扱いとするが、一部画面では関西地方に所属する場合もある。これを正規化する。
ref
ジオコーディングと住所データ | Qiita
位置参照情報ダウンロードサービス
住所とは? | 用語集とGISの使い方 | 株式会社パスコ
イミュータブルデータモデル(入門編) | SlideShare