情况如下:
假设我有一个 Dog 模型和一个 Vaccination 模型(因此,一个存储 Dogs 行的表和一个存储给 Dog 的 Vaccinations 行的表)。
所以,一只狗has_many
接种疫苗和一只狗接种疫苗belongs_to
。
我希望能够快速回答这个问题:“狗 A 上一次接种疫苗是什么时候?” 有两种方法可以存储这些数据:
1)规范化数据库方式:让疫苗表存储一切。要回答这个问题,请在数据库中搜索所有给予狗 A 的疫苗,并返回最近的疫苗。
2)非标准化数据库方式:在Dog中有一个名为“last_vaccination”的字段,每次给Dog A接种疫苗时都要维护这个字段。
#1 的优点是:您可以获得数据库规范化,并且不必担心维护准确的数据。
#2 的优点是:性能——您不必每次都搜索疫苗数据库。
这样做的正确方法是什么???