Sql-Server

為電子商務數據庫建模產品及其屬性和折扣

  • June 27, 2019

設想

我的應用程序將包含屬於 1 家公司的產品。這些產品中的每一個都將:

  1. 至少有 1 個數量
  2. 有 0 個或多個折扣
  3. 擁有 1 個或多個屬性
  4. 屬於 1 個類別,該類別可以有一個父類別

數量可以是 1 個單位、1 個盒子、1 個托盤……因此,每個數量都有自己的價格,而且價格會隨著時間而變化。所以我添加了一個 fromDate 屬性來了解哪個價格在哪個時間是有效的。購買產品時是必需的,因此我知道購買時數量的價格。

折扣可以是 50 歐元、5%、2 換 1… 還有一個 fromDate,所以我知道哪個折扣適用。

屬性將始終屬於 1 個產品。這些將包含屬性的名稱和屬性的值。他們的目標是讓公司能夠在現有所需資訊旁邊添加更詳細的資訊。

屬性範例:

  • 關鍵特徵 1 => 關鍵值 1
  • 名稱 => 某事
  • 顏色 => 黑色
  • 尺寸 => 10 厘米(高)x 5 厘米(寬)
  • 重量 => 450 克

圖表

下圖代表了我現在擁有的完整數據庫架構(此處僅與產品相關的部分):

在此處輸入圖像描述

問題

  1. 如何創建我的架構以滿足我對折扣的要求?您如何處理擁有不同類型折扣的能力?當產品有有效折扣而沒有折扣時,您如何最好地跟踪?
  2. 將屬性簡單地儲存為名稱和值是否有意義?多個產品可能會使用相同的屬性名稱。我是否保留所有可能的屬性名稱的列表?解決這個問題最有活力的方法是什麼?

關於問題 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 美元的折扣

引用自:https://dba.stackexchange.com/questions/240190