如何設計商城系統中商品類別?首先要確定層級類別,篩選類別和篩選條件的值,之後就要根據上述的類別和值進行設計,如何設計?請看下文
以XiZiShop爲例,如下效果圖:
上圖紅色方框所示爲一級類別。
上圖所示爲二級類別、三級類別和篩選條件類別,以及篩選條件的值。
數據庫設計步驟如下:
【步驟一】對於一級類別、二級類別,三級類別,我統一把它們放在一張表裏面,名曰:欄目表(T_Columns),各級的父子關係通過表中的FatherCol這一列去進行關聯。如下圖:
【步驟二】建立好存儲一級類別、二級類別和三級類別的表之後,再開始考慮“篩選條件表”(表名稱:T_FilterCategory)和“篩選條件值表”(表名稱:T_FilterAttributes) 的設計。
然後再分析“篩選條件表”和“篩選條件值表”之間的對應關係。
同一個篩選條件可以有多個篩選條件值。例如:對於手機“品牌”來說,它下面可以有多個篩選條件值:三星、摩托羅拉、蘋果.....
同一個篩選條件值又可以被多個篩選條件所擁有。
觀察上圖中的紅色方框內容,我發現手機“品牌”裏有“三星”,筆記本“品牌”裏也有“三星”,換句話說,“三星”既屬於手機“品牌”又屬於電腦“品牌”,這樣一來,“三星”就可以對應多個“品牌”了,因此得出結論同一個篩選條件值有可能被多個篩選條件所擁有。
綜合上述1和2,我得出“篩選條件表”和“篩選條件值表”之間是多對多的關係。於是,按照數據庫設計規範,需要爲這兩張表添加一箇中間表,名曰:(RF_FilterCategory_TFilterAttributes)
然後建立它們的外鍵關聯:
然後再分析“篩選條件表”和“欄目表”之間的對應關係:
“欄目表”屬於“篩選條件表”的父表,即只有“欄目表”中的三級類別才和“篩選條件表”直接關聯,如下圖:
分析它們的關係:
1:一個三級類別可以有多個篩選條件。
2:同一個篩選條件可以被多個三級類別擁有。如下圖:
如上圖:“品牌”和“價格”可以同時被三級類別中的“手機”和“對講機”擁有。所以,“欄目表”和“篩選條件表”之間也是多對多的關係。於是又需要建一個 中間表,名曰:(RF_Columns_FilterCategory),如下圖:
然後建立外鍵關係如下圖:
設計完這一步,整個關係圖如下:
UML圖:
到了這一步,似乎數據庫已經設計的很完美了,但是它有一處致命的硬傷!
這個硬傷在哪兒呢,答案見續篇。
點擊打開鏈接