簡體   English   中英

如何設計數據庫來存儲隨時間變化的信息?

[英]How do I design a database to store changes over time?

該數據庫將存儲子項列表。 但是問題是,他們每天要測量一次體重。 如何存儲更改,以便可以輕松查詢它們的實際體重以及一天,一周和一個月內的體重變化?

我認為類似以下內容:

table kid
    int pkey(id)
    text name

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

您需要“孩子”表和“體重”表之間一對多的關系。

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


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

這已經很晚了,我認為我正在使它變得比我需要的更加復雜。 而且我有把握地確定您可以在“孩子”和“體重”之間進行一對多。 每次給孩子稱重時,都要重新輸入。

您可能還希望設置一些僅顯示當前權重的視圖(基本上是存儲的選擇操作),或設置其他常見查詢的視圖,從而將實現與用戶隔離。

現在如果這是我,並且我有很多孩子要跟蹤,我可能會保留一個緩存表,其中包含頻繁查詢的結果,但這可能是一個過大的殺傷力。

兩張桌子。 第一個,例如孩子,應該有一個id列,並包含每個孩子的信息,例如姓名,年齡等。第二個應該稱為“兒童體重”。 每行包含三件事。 兒童表中兒童的ID,體重和進行測量的時間。 然后,您可以使用sql查詢children_weights表以選擇子項的權重范圍,例如從1月1日開始到1月8日結束,然后對它們進行任何操作。 或者,甚至可以讓sql查詢返回其平均值或總和。

子表

ID(生成的)(PK)

文字名稱

浮動InitialWeight

重量表

ID(生成的)(PK)

日期日期

浮動ChangeInWeight

ChildID(FK Child.ID)


僅在ChangeInWeight <> 0時存儲。

從WeightTable關系中查詢日期范圍內的Sum(ChangeInWeight)以查找變化,並查詢IntitalWeight + Variation,如上至Actualweight。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM