我剛開始一個新的數據庫項目定價客戶標書:Grails的數據庫表的版本控制
一些數據庫將包含定期更新信息的表,比方說是價格表。
現在,新的出價應該總是使用數據庫的最新信息,但是現有的出價應該繼續當他們開始除非投標筆者另有決定使用的數據。
事情有些簡化,因爲出價在任何情況下都不會在各個版本之間使用價格,因此即使產品在舊版定價表上可用並且可用,它也不適用於較新的項目。
爲了達到這個目的,我計劃包括版本列和可能的鏈接版本控制表。我認爲這將是足夠的。
但是我覺得這必須是一個常見的數據庫設計要求,因此必須有現有的「最佳實踐」和技術來實現這一目標,所以我寧願利用現有的經驗不是很差推倒重來。
有關如何解決此問題的任何建議?此外,我正在與Grails平臺合作,因此任何Grails特定信息都將非常感謝。
我不知道我正確解釋了我的問題,所以這裏有一個例子:
class Bid { // Each new customer bid is stored in this table
String bidName
static hasMany = [ item: ItemList ]
static belongsTo = [ versionNumber: VersionControl]
}
class ItemList { // Products/Services are associated with a bid via this table
String description
static belongsTo = [ bid: Bid, item: Price ]
}
class Price { // The price of individual products and services the company offers
String description
Long value
static belongsTo = [ versionNumber: VersionControl]
}
class VersionControl {
/** So that when filling in the ItemList form for a bid, I can query for only
* prices with the correct version number
*/
String user
Long versionNumber
Date timestamp
static hasMany = [ bid: Bid, productOrService: Price ]
}
這個例子正常工作,並說明了什麼,我想做的事情。我只是不知道這是否是解決問題的最好方法,它將如何擴展 - 我有大約20個包含不同參數的表格,這些參數是我需要跟蹤的版本。
出價總是被賦值的最新版本定價清單的,但用戶必須有能夠選擇不同版本的功能。
我也許應該提到的是價格將在批量使用由會計部門提供的csv文件進行更新,而不是個別。每個csv代表一個新的謹慎的價格表版本,不僅涉及數據庫而且涉及內部管理角度。
一個類似的理念會影響數據庫中的其他表格,例如公司使用的匯率或地理區域。
與新版本發佈的規律,也很難預測,這可能使確定結束日期的問題。
感謝勝利者,但在我們的情況下,時間間隔將是一個僵化的系統。我在問題 – Chopo87