我想設計一個由幾家公司,他們的配件和產品和配件與客戶的帳戶的協會製造的產品的數據庫。公司,產品,配件和協會的數據庫設計
你將如何設計這樣的數據庫來實現這個功能?
業務規則
- 的產品總是與一個公司,一個公司可以有多種產品。
- 除了產品,公司也可能有配件,並在某些情況下,這些配件(捆綁)的組合。
- 公司產品可以與同一家公司的一個或多個配件或與這些配件(捆綁)的組合相關聯。
- 客戶可以將一件產品與其賬戶相關聯,而無需配件或將產品與一件或多件配件或捆綁件(配件的組合)相關聯。
我的做法
訪問https://www.dropbox.com/s/mmxqzgagbw1sek1/Ejemplo.png?dl=0
爲了實現這一目標只是現有產品的配件/包可以關聯到用戶限制的組合,我添加的代碼以下業務規則: 如果組合存在於products_accessories中,則該組合因此符合條件;否則代碼將觸發錯誤。
最後,爲了使所有可能的產品和配件/包的組合符合條件,由產品和附件(products_accessories)組成的表具有以下複合主鍵:(id,product_id和accessory_id)。
例如:
我有P1產品和下面的加載項:A1,A2和A3。 a1和a3可以合併。在這個例子中,products_accessories表看起來像這樣:
| id | product_id | accessory_id |
|----|------------|--------------|
| 1 | p1_id | a1_id |
| 2 | p1_id | a2_id |
| 3 | p1_id | a3_id |
| 4 | p1_id | a1_id |
| 4 | p1_id | a3_id |
產品可能不屬於公司? – Leo 2014-08-28 11:37:53
Nop,產品總是屬於一家公司。 – mcanaves 2014-08-28 11:47:02
在這種情況下,我會刪除關係產品附件 – Leo 2014-08-28 11:49:20