現在開発中のRuby on Railsのウェブアプリケーションの設計について質問です。
データベースのレコードにコード値(30101のようなコード体系)をもつカラムがあり、その値が何を示すかを別途コードに記述し対応付けをしているのですが、この設計の優位性はなんでしょうか。
私としては、
- データベースだけではコードの意味がわからなくなる(表現できない)ので良くない
- コードの追加変更時に両方の修正が必要で、対応関係のミスによるバクを埋め込む可能性がある
- DBアクセスのパフォーマンスについては、ある程度ARのキャッシュに頼ることでそれほど問題にならない
という考えから、ラベル名はデータベースで持つほうがよいと考えているのですが、
それ以外で気が付けていないメリットなどのご意見やご経験からのアドバイスをください。
また、設計者の意図としては
- 頻繁に参照される値でありDBアクセスを回避できる(実行メモリ上にいるので速い)
ということでした。
ただし、パフォーマンスについては、まだ私も設計者もベンチマークは取っていないので比較はできていません。
どちらかといえば論理的、運用面でのお話しをしたいと思っています。
Railsとありますが、他の言語、FWでも同じことが言えると思いますので、他の言語、FW視点でもアドバイスをいただければと思います
本文を見ると、タイトルは間違いで、「レコードにコード値だけを持ち、ラベル名をプログラムソース内に持つパターンの優位性」ですか?
アドバイスありがとうございます。厳密にいえばyamlに記述したものを読み込み、クラスメソッド等で名前を取ってくるような仕組みなのですが、メモリに展開するという意味では同じかと思いますので修正させていただきました。