如何设计数据库来存储随时间的变化?

时间:2008-12-17 04:04:14

标签: database database-design

此数据库将存储子项列表。但问题是,他们每天会测量一次体重。如何存储更改,以便我可以轻松查询一天,一周和一个月的实际重量和重量变化?

5 个答案:

答案 0 :(得分:5)

我认为如下:

table kid
    int pkey(id)
    text name

table weight
    date when
    int kidid fkey(kid.id)
    int weight
    int pkey(id)

答案 1 :(得分:2)

您需要“子”表和“权重”表之间的一对多关系。

Child Table
-----------
ID (Generated) (PK)
Name 


WeightTable
-----------
ID (Generated) (PK)
Date
Weight
ChildID (FK)

现在已经很晚了,而且我觉得我做得比我需要的要复杂得多;而且我有理由相信你可以在孩子和体重之间做一对多。每次你给孩子称体重,都要重新开始。

答案 2 :(得分:1)

您可能还想设置几个视图(基本上存储的选择操作),这些视图仅显示当前权重,或者显示其他常见查询的视图,从而将实现与用户隔离开来。

现在,如果这是我,并且我有大量的孩子要跟踪,我可能会保留一个缓存表,其中包含频繁查询的结果,但这可能是一种过度杀伤。

答案 3 :(得分:0)

两张桌子。第一个,比如孩子,应该有一个id列和关于每个孩子的信息,如姓名,年龄等。第二个应该被称为像儿童权重。每行包含三件事。来自儿童表的孩子的身份,体重和测量的时间。然后你可以使用sql来查询children_weights表,为孩子选择一系列的权重,比如从1月1日开始到1月8日结束,并用它们做任何事情。或者你甚至可以让sql查询返回它的平均值或总和。

答案 4 :(得分:0)

儿童表

ID(生成)(PK)

文字名称

浮动InitialWeight

WeightTable

ID(生成)(PK)

日期日期

浮动ChangeInWeight

ChildID(FK Child.ID)


仅在ChangeInWeight<>时存储0

查询总和(ChangeInWeight),其中日期范围从WeightTable关系到查找变异,查询IntitalWeight + Variation如上所述为Actualweight。