我需要設計一個數據庫系統中,如果有客戶和廠商但是,每一個用戶或者是客戶或供應商他們都涉及到實體,稱爲用戶。 問題是,供應商與其他實體客戶不相關。 那麼我該如何設計這樣的數據庫呢?泛化數據庫
泛化數據庫
回答
其他實體會將供應商的ID作爲外鍵存儲。而廠商和客戶無論如何都不會在同一張表中*,所以它不像兩個ID都可以同時使用。
此外,如果您的數據庫允許,您需要爲用戶添加的外鍵可以作爲添加/編輯觸發器進行管理。這樣,您可以確保用於這些相關實體的供應商ID不是與客戶鏈接的用戶ID。 (...WHERE userid NOT IN (SELECT userid FROM users WHERE customer = TRUE)
)
*客戶和供應商有不同的屬性/字段,所以不應該在同一個表中。
他們可以共享一組共同的信息,例如登錄信息到一個網站。 – Marvo 2013-04-26 21:46:51
但問題是,有時我需要將兩個供應商和客戶鏈接到同一張表。 假設我想將供應商加入到名爲(Accounts) 的表中,並且我希望將客戶加入到同一張表(帳戶) 但是,每個帳戶記錄都應該鏈接到一個用戶(客戶或供應商)!我該如何解決這個問題? – wadda7j 2013-04-26 22:54:16
我假設,當你加入'帳戶'表或者a)供應商和客戶不鏈接在同一記錄 - 所以帳戶中的'entityID'字段可以是客戶或供應商 - 在這種情況下,使用'userID '並且你有一個'customer = TRUE/FALSE'的字段。或b)如果供應商和客戶被鏈接在同一條記錄中,那麼明顯的'vendorID'和'customerID'字段(但我不認爲這就是你要求的,所以使用選項a)。 – aneroid 2013-04-29 07:12:55
您可以讓供應商和客戶與用戶表有關係。
user
===========
userId
name
vendor
===========
vendorId
companyName
userId
customer
===========
customerId
source
userId
然後,您可以從同一個表中鏈接到客戶和供應商,但它們仍然可以在用戶表中共享相同的公用數據。事實上,一個客戶也可能是一個供應商。
- 1. SQL泛化/專業化,數據冗餘
- 2. 處理基於數據庫數據在運行時實例化的泛型類
- 3. 泛化haskell函數
- 4. 泛型和數據庫訪問
- 5. 數據庫優化
- 6. JHipster持久化數據/ Access數據庫
- 7. 優化InnoDB數據庫
- 8. 優化BerkeleyDB JE數據庫
- 9. 數據庫優化問題
- 10. 優化sql server數據庫
- 11. MySQL數據庫優化
- 12. mysql數據庫規範化
- 13. 優化數據庫結構
- 14. 優化數據庫 - 修復
- 15. mysql數據庫優化(table_cache)
- 16. Azure數據庫初始化
- 17. Firebase數據庫規範化
- 18. 規範化數據庫表
- 19. 數據庫優化訂單
- 20. 大數據庫優化
- 21. 數據庫規範化
- 22. 優化Mysql數據庫
- 23. 數據庫查詢優化
- 24. 數據庫規範化
- 25. 優化數據庫調用
- 26. ASP.NET數據庫本地化
- 27. 數據庫本地化
- 28. 優化數據庫查詢
- 29. 數據庫 - 扁平化與標準化
- 30. Typedef泛化
不幸的是,這個問題是不適合做。請閱讀http://stackoverflow.com/faq – Barranka 2013-04-26 21:21:53
這就是所謂的派對模特 – 2013-04-27 21:23:09