2017-07-16 61 views
0

我試圖建立一個公司的數據庫模式作爲一箇中間人(銷售項目收集從供應商買家)。一個或兩個表:

這兩個實體(供應商和買家)都可以推廣爲客戶端 - 它們都具有非常相似的屬性(名稱,電子郵件,密碼,地址等),並且多個其他實體依賴於此。例如發票針對買家住區(不同類型的文書工作)爲廠商生成生成。事情是一個人(一個客戶端)可以由買方和賣方在同一時間。

我遇到的困境是如何爲此設置數據庫結構?

目前我更傾向於將供應商和買家都放在一張表中,並使用角色列之間的差異來區分它們。由於採用了這種方法,我可以避免數據冗餘,並且我仍然可以創建視圖,輕鬆將供應商與買方分離到外部世界。

我在想這個嗎?你通常如何解決這種情況?使用兩個單獨的表格會更好嗎?

謝謝您的建議和經驗:)

+1

您正在考慮這個問題,但解決方案必須是最符合您商業模式的解決方案。我認爲我們對此知之甚少。我不明白角色專欄會如何幫助 - 每個人都有可能成爲 – Strawberry

回答

1

如果你知道usecases,想想,這可能是一個粗糙的解決方案。但這是非常危險的,最後有時候這個巧妙的數據模型變得太複雜,無法理解和維護。

它決定現在有多重要,您的數據模型或組織是否適合以後的更改?你能敏捷嗎?然後實施,什麼是最適合您目前的使用情況,僅此而已!

btw。 如果人與角色之間存在1到2的關係,則應該分解角色,不重複數據,或者創建兩個屬性isBuyer和isVendor,或者將這些屬性引用到買方和供應商特定的數據中,如果有的話。

+0

酷感謝買家,isVendor是一個好主意,我不知道爲什麼我首先與角色合作。現在,當我思考這件事時,這是非常有意義的,並且將會更容易將這兩者分開。 只要靈活性。我雖然這樣說:如果我需要在將來添加供應商/買方特定信息,我可以通過添加兩個(可選)列將其轉換爲ISA關係 - 與** vendorDetails **和** buyerDetails的1:1關係**。 是否有任何重大缺點,我錯過了(應該知道)? –

+0

如果這兩個角色有許多共同點,那麼最好不要在人員表中使用屬性,並在有對人的反向引用的情況下創建角色表。然後,您可以專門化角色,而不必一直處理兩個不同的屬性。也許可以有更多的角色,如員工,政府...... – aschoerk