我有一个名为FoodMaker
的表和另一个名为Settings
的表。每个FoodMaker
都有多个Settings
。我还需要一个第三个表来记录已经制作的内容,时间和Settings
。它可能包含以下字段:id
,food_made
,date_time
,settings_used
。
这非常简单,因为我可以在第3个表中放置FoodMaker
和Settings
的ID来引用它们。但问题是,Settings
可能会在以后发生变化,但我希望食物的Settings
而不是更新的食物。因此,每次我插入第3个表时,我都需要拍摄Settings
的快照。
一种简单的方法就是在每个INSERT上将所有Settings
字段添加到第3个表。但这不是多余和丑陋的吗?有更好的解决方案吗?
答案 0 :(得分:1)
我认为问题在于您对实体“设置”的定义。
如果设置是食谱,例如“我使用Bob的食谱制作了汉堡包ID XX”。如果Bob的食谱是表中的记录,或汉堡包的“设置”,那么你不应该只是更新它而不保留某种版本控制。
我认为对此问题进行建模的正确方法是将“已制作”的内容与Bob的配方或“设置”相关联。
保留与原始Bob的配方相关的表格中可以更改的所有内容。有不止一种方法可以做到这一点。这是一个例子:
汉堡包A:身份1,设置5,日期11/18/2014;
设置5:配方Bob,delta-coffee + 5ml,delta-sugar -1g; #(计量单位ml和g)
食谱鲍勃:奶油:10毫升,咖啡10毫升,威士忌100毫升;糖3g; (计量单位ml和g)