Sql-Server
為電子商務數據庫建模產品及其屬性和折扣
設想
我的應用程序將包含屬於 1 家公司的產品。這些產品中的每一個都將:
- 至少有 1 個數量
- 有 0 個或多個折扣
- 擁有 1 個或多個屬性
- 屬於 1 個類別,該類別可以有一個父類別
數量可以是 1 個單位、1 個盒子、1 個托盤……因此,每個數量都有自己的價格,而且價格會隨著時間而變化。所以我添加了一個 fromDate 屬性來了解哪個價格在哪個時間是有效的。購買產品時是必需的,因此我知道購買時數量的價格。
折扣可以是 50 歐元、5%、2 換 1… 還有一個 fromDate,所以我知道哪個折扣適用。
屬性將始終屬於 1 個產品。這些將包含屬性的名稱和屬性的值。他們的目標是讓公司能夠在現有所需資訊旁邊添加更詳細的資訊。
屬性範例:
- 關鍵特徵 1 => 關鍵值 1
- 名稱 => 某事
- 顏色 => 黑色
- 尺寸 => 10 厘米(高)x 5 厘米(寬)
- 重量 => 450 克
圖表
下圖代表了我現在擁有的完整數據庫架構(此處僅與產品相關的部分):
問題
- 如何創建我的架構以滿足我對折扣的要求?您如何處理擁有不同類型折扣的能力?當產品有有效折扣而沒有折扣時,您如何最好地跟踪?
- 將屬性簡單地儲存為名稱和值是否有意義?多個產品可能會使用相同的屬性名稱。我是否保留所有可能的屬性名稱的列表?解決這個問題最有活力的方法是什麼?
關於問題 1):包含以下欄位的表格 1) 日期,設置折扣生效的日期 2) 產品,定義我們正在談論的產品 3) discount_type,即 1=percentage, 2=how_many_product_for_this_price , 3=價格 4) 百分比,需要 discount_type=1 5) 數量,需要 discount_type=2 6) 價格,需要 discount_type=3
範例:如果您有這些數據(為簡單起見,我將省略日期):
product, discount_type, percentage, quantity, price 1, 1, 0.5, null, 42 2, 2, null, 2, 42 3, 3, null, null, 25
產品 1 的折扣為 0.5*100 = 50%,價格為 42 美元
產品 2 可以以 1 的價格出售 2,因此 2 以 42 美元的價格出售
產品 3 有 25 美元的折扣