2016-12-20 29 views
0

在Microsoft Access中,我有三個表:訂單表,客戶表和產品表。我的訂單表中包含客戶聯繫人和產品信息。我不時需要更新客戶地址。這樣做時,我只希望新的地址出現在未來的訂單上。我不希望Access使用最初不屬於該訂單的地址更新以前的訂單。我還想維護客戶列表中的活動地址和過去地址列表。請提供建立客戶表的最佳方法以及如何在訂單表上保留客戶聯繫信息。在訪問更新聯繫人信息時保留舊數據庫中的記錄

回答

3

爲此,您需要將客戶地址從客戶表中取出並保存在單獨的CustomerAddress表中。這個新表有一個主鍵(當然),一個返回到客戶表的外鍵,所有你想保持歷史的地址字段和一個當前標誌(是/否)。您的訂單表然後直接指向CustomerAddress表格而不是Customer表格(由於CustomerAddress到Customer中的FK鏈接,您可以從Order到Customer)。現在你的樂趣開始了!您必須以這樣的方式維護您的CustomerAddress表:對於每個客戶ID,您應該只有一個地址記錄,其中Current爲True。

另一種選擇是在CustomerAddress表中沒有Current標誌,而是在Customer表中有一個CurrentAddress字段 - 這可以確保只有一個Address可以成爲Customer的當前標誌。但是,您無法強制執行CurrentAddress完整性和CustomerAddress外鍵 - 在添加Address記錄之前,您無法設置CurrentAddress的值,因此Customer記錄必須能夠以NULL CurrentAddress存在(儘管我想你可以有一個虛擬的「未設置」CustomerAddress記錄)。

1

簡單的方法是將當前客戶信息與訂單一起存儲。

擴展方法是將客戶表(一個或多個)存儲爲表,或者使用自定義的方法或天然的 - 例如 - 通過SQL服務器的最新版本提供。查找術語時間數據庫瞭解更多信息。

+0

我會選擇@Skippy提出的第一個建議。只需進行一次更改,請勿使用當前標誌(是/否),而是使用日期範圍(有效日期和有效日期字段)。原因可能是客戶提前向您發送地址更改。 – Rene

相關問題