質問: Railsを使ってシステム開発をおこなっているのですが、ほぼ変更がない都道府県データなどをデータベースに持たせることの利点と欠点を教えていただきたいです。 アプリケーション側でenum等で管理することもできますし、都道府県データのように、あまり可変がない特定のステータス、例えば、記事データに紐づくステータス『公開・非公開・下書き』などの管理は、アプリケーション側でマッピングしてあげればテーブルが増えることもなくすっきりしている気がします。 もしデータベース周りで経験豊富な方がいらっしゃいましたら、ご意見お聞かせください。 ※ 追記 回答で「都道府県データに変更があった場合に〜」という意見がありますが、アプリケーション側でマッピングしている箇所を変更すれば、対応することは容易にできますよね(例:Railsのenum等)。 今の所は外部キー制約で制限がかけられるからという意見が入っている投稿をベストアンサーに選ばさせていただきましたm(_ _)m 今後は外部キー制約を貼れる部分には積極的にテーブルを追加していこうと思います。
回答: メリットは「東京都」という文字列からSQL文を作ってサブクエリで検索出来ることですね。 MySQLはサブクエリの扱いが下手くそで、インデックスが剥がれたり、やたら遅い事があります。 あまり別テーブルから沢山の情報を引っ掛けるのはあまりしないですね。 デメリットはローカル環境作るのが面倒です。 結合テストするのに一時的なDBをDockerで作るときも、createコマンドと同時に全ての都道府県をバルクインサートで流し込まないと動作しないことを意味します。 ちりも積もれば山となり、あれやらコレやらの情報を全てDBに詰め込むとおまじないだらけになって環境構築に時間がかかるようになってしまいます。 おまけ 都道府県コードはJISコード(JIS X0401)で管理されています。 東京都と言えば13......覚えておいて損はないわ...... 東京都はウルトラマンやゴジラがしょっちゅう決闘の舞台に採用してビルとか倒壊させてますので、 東京都がなくなる可能性はありますが、仮になくなってもJISコードが変更されると思いますのでこれに従っておけば間違いないですね。