關於商商城商品表設計(一)

如何設計商城系統中商品類別?首先要確定層級類別,篩選類別和篩選條件的值,之後就要根據上述的類別和值進行設計,如何設計?請看下文

以XiZiShop爲例,如下效果圖:

 

上圖紅色方框所示爲一級類別。

 

上圖所示爲二級類別、三級類別和篩選條件類別,以及篩選條件的值。

數據庫設計步驟如下:

【步驟一】對於一級類別、二級類別,三級類別,我統一把它們放在一張表裏面,名曰:欄目表(T_Columns),各級的父子關係通過表中的FatherCol這一列去進行關聯。如下圖:

 

【步驟二】建立好存儲一級類別、二級類別和三級類別的表之後,再開始考慮“篩選條件表”(表名稱:T_FilterCategory)和“篩選條件值表”(表名稱:T_FilterAttributes) 的設計。

 

然後再分析“篩選條件表”和“篩選條件值表”之間的對應關係。

同一個篩選條件可以有多個篩選條件值。例如:對於手機“品牌”來說,它下面可以有多個篩選條件值:三星、摩托羅拉、蘋果.....

同一個篩選條件值又可以被多個篩選條件所擁有。

 

 

觀察上圖中的紅色方框內容,我發現手機“品牌”裏有“三星”,筆記本“品牌”裏也有“三星”,換句話說,“三星”既屬於手機“品牌”又屬於電腦“品牌”,這樣一來,“三星”就可以對應多個“品牌”了,因此得出結論同一個篩選條件值有可能被多個篩選條件所擁有。

綜合上述1和2,我得出“篩選條件表”和“篩選條件值表”之間是多對多的關係。於是,按照數據庫設計規範,需要爲這兩張表添加一箇中間表,名曰:(RF_FilterCategory_TFilterAttributes)

 

然後建立它們的外鍵關聯:

 

然後再分析“篩選條件表”和“欄目表”之間的對應關係:

“欄目表”屬於“篩選條件表”的父表,即只有“欄目表”中的三級類別才和“篩選條件表”直接關聯,如下圖:

 

分析它們的關係:

1:一個三級類別可以有多個篩選條件。

2:同一個篩選條件可以被多個三級類別擁有。如下圖:

 

如上圖:“品牌”和“價格”可以同時被三級類別中的“手機”和“對講機”擁有。所以,“欄目表”和“篩選條件表”之間也是多對多的關係。於是又需要建一個 中間表,名曰:(RF_Columns_FilterCategory),如下圖:

 

然後建立外鍵關係如下圖:

 

設計完這一步,整個關係圖如下:

 

UML圖:

 

到了這一步,似乎數據庫已經設計的很完美了,但是它有一處致命的硬傷!

這個硬傷在哪兒呢,答案見續篇。

         點擊打開鏈接
發佈了42 篇原創文章 · 獲贊 31 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章