特定のカラムから算出できる値を、別のカラムに持たすべきか?
質問自体はタイトルの通りなのですが、理解しにくい質問なので例を書かせていただきます。
例えば、経験値とレベルが存在するゲームのDBを設計したいとします。
経験値は一定値たまると、レベルが上昇します。そしてその経験値とレベルの対応表は別のテーブルで、マスターデータとして持っているとします。
この時に、レベルをDBに入れるべきか、入れるとしたらどのようにテーブルを設計するのか、で悩んでいます。
レベルは経験値とマスターデータから読み出し、アプリケーションないで計算して算出できるため、厳密には保存する必要性がありません。
しかしレベルに依存するデータが色々(パラメータ上限とか、ダメージ算出とか)あった場合、毎回2つのテーブルからデータを読み込んで計算することになりため、DBの負荷とCPUのリソースを使用します。
ではレベルをDBに持たせてしまうと、今後はDB内に保存したレベルと経験値の不整合が起こるリスクを抱える事になります。
このような、特定のデータから算出できる値はどのように扱うべきでしょうか?
よろしければご回答よろしくお願いします。