2013-05-01 40 views
1

之間的關係我將在接下來的幾個月內設計一個數據庫,而且我認爲這將是一個重大挑戰。數據庫設計 - 定義協議條款與/或

如何使用和/或條件來跟蹤協議條款與產品之間的關係。

因此,我們真正感興趣的是客戶對各種產品達成的協議,以及協議是並行還是分離。

有些事情要記住

1)單一客戶可以有多個協議,涵蓋各種產品。

2)的單一協議會是這個樣子(雖然他們可以獲得更多更復雜):

5 of Product-A AND 10 of Product-B OR 50 of Product-C OR $500 of Product-D 

所以對我來說是代表一個這些不同的和複雜的條件協議(挑戰希望有些)規範化的結構。這將成爲一個生產數據庫,數據的完整性至關重要。

數據源位於此數據庫的上游,現在協議作爲單個行存儲在每個產品/協議組合[AgreementID] - [Product] - [Terms]中。但是,如果我能找到更好的方法,它可能會遷移到新的數據庫。

有沒有人遇到過這樣的問題,或者有什麼建議?

任何幫助非常感謝!

回答

1

你可以設計自己的模式是這樣的:

客戶(客戶ID,名稱) Customer_Agreements(客戶ID,AGREEMENTID,DateSigned) 協議(AGREEMENTID,AgreementValidStart,AgreementValidEnd,身體)

使用點您的協議表的時間模式設計,以查看協議是最新的還是過去有效的:https://www.simple-talk.com/sql/database-administration/database-design-a-point-in-time-architecture/

+0

要支持產品,您可以將外鍵添加到與產品密鑰相關的Customer_Agreements表中。 – 2013-05-01 21:18:22

+0

感謝您的建議和豐富的資源。我絕對認爲這是解決這個問題的正確方向。我將不得不真正考慮如何實現它。但是,如果我理解正確,我可以爲給定的產品協議創建記錄,然後將其與其他字段「運營商」和另一個字段「JoinedProduct」綁定到其他記錄。我不知道我是否明確表達了這一點,但我試圖用協議來模仿協議,就像使用簡單的英語口語一樣。所以在我的數據庫中,我會知道產品何時捆綁在一起,例如Prod1的20和Prod2的10,或者100 Prod3' – wesmantooth 2013-05-02 14:58:30