質問: データベースの正規化について質問させて頂きたいのですが、どの程度まで正規化をしたら良いのでしょうか? これ以上はやりすぎとか、こういう場合は重複する値が同一テーブルに多数生まれるけど、正規化しないみたいな判断基準とかってありますか? 都道府県名とか市区名も都道府県テーブル、市区テーブルをそれぞれ作った方が良いのでしょうか?
回答: 端的に言えば、**使い方次第**です。 たとえば、同じ住所でも「緊急連絡先」のような、「保存・確認・削除ができればそれでいい、検索はしない」ような項目であれば、正規化を行ってもあまり値打ちはありません。また、「須恵町/須惠町」とか「鎌ヶ谷市/鎌ケ谷市」のような表記ゆれまで元の通りに再現したい、というのであれば、それは正規化できないことになります。 逆に、「特定の地域だけにセールをかけたい」というような場合には、都道府県・市区町村単位で正規化はしておいたほうがいいかなと思います。総務省が市区町村にコードを振っていますので、特殊な理由がなければそれをマスターにすれば確実です。 なお、市区町村以下の住所は**千差万別**ですので、GISシステムのような「それ専門のシステム」以外では、パースすら困難な作業となります。正規化など望むべくもありません。