Sql 是否有一种有效的方法来存储不经常更改的每月定期数据?
我正试图找到一种有效的方法来存储每月不经常更改的重复数据Sql 是否有一种有效的方法来存储不经常更改的每月定期数据?,sql,ruby-on-rails,activerecord,recurring-events,Sql,Ruby On Rails,Activerecord,Recurring Events,我正试图找到一种有效的方法来存储每月不经常更改的重复数据 class Fund < ApplicationRecord has_many :factsheets end class Factsheet < ApplicationRecord belongs_to :fund end 目标将有一列:effective_on,表明:从哪个月起,基金应在其情况说明书上使用该目标记录。 (如果仅更改一次,则将2个目标存储12个月) 选项3: 更好的主意?对于你的情况,我会选择最
class Fund < ApplicationRecord
has_many :factsheets
end
class Factsheet < ApplicationRecord
belongs_to :fund
end
目标将有一列:effective_on
,表明:从哪个月起,基金应在其情况说明书上使用该目标记录。
(如果仅更改一次,则将2个目标存储12个月) 选项3:
更好的主意?对于你的情况,我会选择最简单的方案,这是第一个 现在为什么?我的动机是规模。在我看来,方案2是过度设计的常见情况。在100年内,一张表上大约有1200条记录,为了论证,让我们假设目标从未改变:数据库中会有1200条重复的条目 这有什么大不了的吗?我想不是。对于这种规模,我认为有点重复是完全可以容忍的
如果您每秒钟创建一个条目,我们可以为更好的解决方案争论不休,但我建议您使用最简单的解决方案,集中精力解决确实需要一些精心设计的解决方案的问题:) 我会选择选项2。。。因为这是真实世界中的真实关系,正如你所解释的。“一只基金有许多:目标”的说法要求目标成为一种模式。这样做也适应了未来的灵活性。。。也许目标可以属于其他模型 如果使用选项2,则可以执行类似于
Fund.last.objectives
的操作,查看最后一个基金的所有目标,而第一个解决方案不容易实现这种灵活性。。。你必须做Fund.where('created_at>?',Time.now.年初)。pull(:objective)
。。。。第二种选择要干净得多,当然也不是“过度工程”
class Objective < ApplicationRecord
belongs_to :fund
end