在Microsoft Access中,我有三個表:訂單表,客戶表和產品表。我的訂單表中包含客戶聯繫人和產品信息。我不時需要更新客戶地址。這樣做時,我只希望新的地址出現在未來的訂單上。我不希望Access使用最初不屬於該訂單的地址更新以前的訂單。我還想維護客戶列表中的活動地址和過去地址列表。請提供建立客戶表的最佳方法以及如何在訂單表上保留客戶聯繫信息。在訪問更新聯繫人信息時保留舊數據庫中的記錄
0
A
回答
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服務器的最新版本提供。查找術語時間數據庫瞭解更多信息。
相關問題
- 1. 捕獲數據庫中聯繫人信息的歷史記錄
- 2. Android中的聯繫人更新信息
- 3. MYSQL - 更新但保留舊信息
- 4. 訪問2010年從舊數據庫更新記錄到新數據庫
- 5. 如何更新數據庫記錄並仍然保留MySQL中的舊值?
- 6. 使用數據庫中的新記錄詳細信息查找最舊記錄
- 7. 更新聯繫人詳細信息android
- 8. 如何在更新asp時保留舊的數據記錄mvc 5
- 9. 訪問聯繫人數據
- 10. 更新記錄並保留mysql中的先前記錄數據
- 11. 從數據庫中保存的聯繫人更新Listview的問題android
- 12. Android如何更新,但保留數據庫信息
- 13. 替換sql數據庫,但保留舊的記錄
- 14. Python的電報機器人:訪問聯繫人信息
- 15. Mysql更新但保留舊數據?
- 16. 如何從數據庫中讀取聯繫人信息
- 17. iOS - 在更新到新版本時保留舊的sqlite數據庫
- 18. 如何只在ListView中查看聯繫人的詳細信息並保留未經檢查的聯繫人?
- 19. 更新信息時插入新記錄?
- 20. 是否可以訪問iPhone中的聯繫人信息屏幕?
- 21. 在Mysql數據庫中保留時區信息
- 22. 如何在更新android數據庫時保留舊的日期和時間?
- 23. 如何在android中更新聯繫人信息?
- 24. 如何在Mllib中工作時保留記錄信息
- 25. 的Android訪問聯繫人數據
- 26. 當新信息應該在上面時,數據仍舊保留在舊視圖中 - Swift
- 27. 只獲取聯繫人數據庫中存在其生日的聯繫人的詳細信息
- 28. 問題添加聯繫人信息
- 29. 使用ajax發送聯繫人詳細信息到數據庫
- 30. 訪問Django中最舊的數據庫記錄的更快方法?
我會選擇@Skippy提出的第一個建議。只需進行一次更改,請勿使用當前標誌(是/否),而是使用日期範圍(有效日期和有效日期字段)。原因可能是客戶提前向您發送地址更改。 – Rene