網上商城不同類別產品數據庫的設計思路

問題的提出:網上商城對產品進行了很多分類,不同的分類產品又有不同的屬性,比如,電腦的屬性有:CUP,內存,
                  主板,硬盤等等,服裝的屬性有:布料,尺寸,顏色等等,那麼產品表以及產品分類表應該如何設計才能滿足

                  不同類型產品的區別呢?

解決方案:
     產品分類表的設計
     第一種設計思路:使用樹形結構,遞歸的形式,可以對產品進行N種     分類,只要你喜歡,樹形結構在數據庫的設計中
                             經常用到,比如功能菜單表等以下是一個簡單的產品分類表。


            

 

                          說明:上級類別ID爲該表的外鍵,並關聯到本級類別ID,這樣就可以對產進行N中分類了,這種設計
                                   思想十分靈活,是無限分類中最常用到的。

第二種設計思路:定義N個類別表,並對他們進行關聯,如圖:

 

          
 

 

                       說明:這種設計在項目中沒有人會使用它,因爲產品的分類是不固定的,很難在數據庫設計的時候確定
                                類別 表的個數,很不靈活。

2、產品表的設計
      第一種設計思路:直接在產品表預留N個字段,用到的時候直接插入數據,如圖

                  

                  可行性:會產生很多字段的冗餘,並且不知道到底需要多少個字段,數據類型也不能確定,可行性比較低,但
                              是這種設計也有它的優點,就是表的數量少,其他的優點我實在找不出來了,所以,在項目中這種設
                              計思想也不會用到。

第二種設計思路: 在提及這種設計思路前,首先得了解數據表可以分爲兩種結構,一種是橫表,也就是我們經常用到
                               的表結構,另外一種是縱表,這種結構平時我們用到的表少,所以我也是今天通過請教別人才知
                               有這種表結構的。
     什麼是縱表,它有哪些優點和缺點呢?通過兩張圖片對比來了解或許會更清楚

橫表的結構:

     
     
     縱表的結構:

     
     

 

                可以看出橫表的優點是很直觀,它是根據現行業務邏輯定製,設計簡單,易操作,缺點是當業務邏輯發生拓展
          時,大多情況下要更改表的結構。縱表的數據讓人看着感覺很亂,而且字段的數據出現很大的冗餘,但是縱表的還
         是有很多好處的,它比較靈活,當業務系統發生拓展時可以很好的適應, 知道了這些,那麼我們可以進行產品表的
         設計了,在這種設計思想中,需要三個表,一個爲產品表,用來存產品的公共屬性,另外一個是產品分類表,最後一
         個表很關鍵,用來存不同類別產品的不同屬性,採用的是縱表的結構,如圖:   


        

 
                 說明:通過產品拓展屬性表,用戶在頁面就可以動態的某一類產品添加屬性,添加好以後,就採用動態SQL提
           取該類商品的屬性生成相應的產品類別屬性橫表,用來保存產品的屬性值
,比如:用戶在界面爲電腦類ID爲
           COMP這一類產品中添加了CUP、內存EMS這兩個屬性,那麼將會動態的提取這兩個屬性,生成橫表T_COMP,
           如圖:
 

<!--EndFragment-->

         

 
        具體怎麼實現,有了設計思路,剩下的就是很死的東西了,或許這種設計不是最好的,但是也是我找了好久資料,也
 向別人請教以後才弄明白這個流程的…… 

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