状況は次のとおりです。
犬のモデルと予防接種のモデルがあるとします(つまり、犬の行を格納するテーブルと、犬に与えられた予防接種の行を格納するテーブル)。
だから、犬has_many
の予防接種と犬の予防接種belongs_to
。
「犬Aが最後に予防接種を受けたのはいつですか?」という質問にすばやく答えられるようにしたいと思います。このデータを保存する方法は2つあります。
1)正規化されたデータベースの方法:Vaccineテーブルにすべてを保存させます。質問に答えるには、犬Aに与えられたすべての予防接種をDBで検索し、最新のものを返します。
2)正規化されていないデータベースの方法:「last_vaccination」というフィールドをDogに設定し、DogAにワクチン接種が行われるたびにこのフィールドを維持します。
#1の長所は、データベースの正規化が可能であり、正確なデータの維持について心配する必要がないことです。
#2の長所は次のとおりです。パフォーマンス-毎回ワクチンデータベースを検索する必要はありません。
これを行う正しい方法は何ですか?