2011-08-05 66 views
0

我有一個人,每個人都有:firstname,lastName。 每個人都有參數:[車數,錢數,奶牛計數...] 有時這個參數正在改變。 我想擁有過去的參數計數和目前的統計參數。 我該如何構建我的數據庫結構?時間跨度的數據庫結構

我的版本:

  • [的peopleid(PK):名字,姓]
  • [СhangesID(PK):的peopleid(FK),ChangesDate]
  • [參數標識(PK),changesID( FK),DayOfBirth,CarCount,Adress,MoneyCount,CowCount ...]

回答

1

這是一種歷史日誌模式。

[的peopleid(PK):名字,姓,DayOfBirth,ADRESS,CarCount,MoneyCount,CowCount ...] [ChangesID(PK):的peopleid(FK),ColumnID的,的OldValue,ChangesDate]

ColumnID的將是你自己的定義,例如對於CarCount ColumnId = 1,對於MoneyCount ColumnId = 2,對於CowCount Column Id = 3

我的想法是爲人們,你不應該只與人創建一個表首先&姓氏, DayOfBirth和其他人也應該包含在這張表(People)中。對於參數,CarCount,MoneyCount或CowCount將始終存儲當前值。任何時候CarCount從a更改爲b,然後更新People表中的相應行,將CarCount設置爲b,並在ColumnId = 1和OldValue = a的更改表中創建新記錄。其他參數類似。

這樣,您可以通過表格People中的信息快速獲取每個人的最新參數。如果用戶想要知道每個參數的先前值,則可以通過ChangesDate遞減查詢Changes表順序來完成。

希望這會有所幫助。

+0

什麼類型的OldValue?(字符串,數字...) – GLeBaTi

+0

cowCount =數字(整數),地址=字符串 – GLeBaTi

+0

@GLeBati您可以將其視爲字符串並稍後進行轉換。 – longbkit