3

我創建一個銷售應用程序,並有產品和銷售感謝一些幫助的初步設計從人在這裏:)在工程數據庫設計

不過,我不知道如果我也許過工程或可能會略微簡化我的設計。

以下是我的產品訂單模式。

一些業務規則:

  1. 客戶可以訂購一個或多個合同
  2. 合同可以包含一個或多個產品
  3. A產品可以由一個或多個經銷
  4. A供給產品可以由一個或多個網絡供應
  5. A經銷商可以銷售來自一個或多個網絡的產品
  6. A pro管道價格可能基於經銷商

enter image description here

我的問題:

  1. 是我設計的過度設計?這似乎非常複雜,它的使用鏈接表和3個版本的產品創建

    • 網絡產品
    • 經銷商產品

    我試圖強制執行的產品例如,如果分銷商不銷售網絡a,那麼數據庫中的業務規則不應該可用。僅僅將產品分配給分銷商是不夠的。所有來自網絡a的產品,然後只是查詢,看到分銷商1銷售網絡a但沒有產品b這是一個硬性規則,我想阻止人們選擇他們不應該的產品?

  2. 假設我無法調整架構是我的2個鏈接表NetworkPRoduct和DistributorNetwork最好還剩一個分銷商產品中使用的複合主鍵或我可以一些如何與代理鍵如networkprodutid逃走?這還會在經銷商只銷售某些網絡的事實之前嗎?

感謝

羅布

+0

不是真的關係到你的問題,但我看到Distributor1表有兩個電話號碼列。這可能值得正常化到另一張桌子嗎?我只是想知道,當有人問第三/第四等:-) – Bridge

+0

由於會發生什麼,我會刪除,因爲它們不再需要的所有聯繫方式。 –

+0

「我試圖強制執行數據庫中的業務規則......」插入示例數據時,您的模式是否強制執行所有這些規則? –

回答

1

一個設計是過度設計的,當超出需要的地方,以滿足您的業務規則的點的複雜性成本。沒有人可以做出比你更好的決定。我個人認爲它雖然沒有被改造。

您可能遇到的問題是,從合同簽署時間起,可能無法知道該產品將從哪個分銷商處購買。它看起來對我來說(我可能會誤解這一點),你的圖表假設你知道這一點。因此,您可能需要額外的產品表以及經銷商的真實價格矩陣。

如果您目前的設計看起來過於複雜,我應該告訴您是如何建模的,以及我們打算如何對它進行建模。

+0

嗨,感謝您的回覆,我們的立場是,我們確信在簽署合同之前,分銷商是誰。 –