我有一个模型,我们导入更改,比如说,
一个人有固定的属性 - 名称,眼睛颜色 改变属性:身高,体重,年龄
我正在尝试为这些变化提出最佳解决方案。
解决方案1:
Table1: Person , Columns: Name,EyeColour
Table2: WeightChange: PersonId(FK), ChangeDate, FromWeight, ToWeight
Table3: OtherChange: PersonId(FK), ChangeDate, ChangeType(height or age), FinalState
解决方案2:
Table1: Person , Columns: Name,EyeColour
Table2: WeightChange: PersonId(FK), ChangeDate, FromWeight, ToWeight
Table3: HeightChange: PersonId(FK), ChangeDate, FinalState
Table4: AgeChange: PersonId(FK), ChangeDate, FinalState
如果可能的话,有人可以给我解释哪种方法更好或其他替代方法?
由于
答案 0 :(得分:0)
我将删除“from”列,只使用一个“Change”表并将其链接到具有“ChangeType”的外表,如:
Table1: Person , Columns: Name,EyeColour
Table2: Change: PersonId(FK), Type(FK) ChangeDate, Value
Table3: ChangeType: TypeDescription
如果您需要以历史方式检索值,那么您只需要使用“ChangeDate”列对它们进行查询以对它们进行排序并相应地处理输出。
答案 1 :(得分:0)
首先,您应该只存储出生日期,而不是每年1个条目存储在此人的生日。如果由于某种原因您没有此值,则首选解决方案2。无需将它们组合在一个表中。或者您可以拥有一个包含所有更改的表。您的第一个建议是在这两个选项之间。
您需要尽量降低数据不一致的风险。在今天你的体重从80公斤到82公斤,明天从81公斤到83公斤的情况下很容易结束。这没有多大意义。您应该只存储每个单独的数据点(toWeight)。如果您对此数据进行绘图,则应在数据点之间进行插值以获得连续函数。