問題的提出: 網上商城對產品進行了很多分類,不同的分類產品又有不同的屬性,比如,電腦的屬性有:CUP,內存, 主板,硬盤等等,服裝的屬性有:布料,尺寸,顏色等等,那么產品表以及產品分類表應該如何設計才能滿足 不同類型產品的區別呢? 解決方案: 產
問題的提出:網上商城對產品進行了很多分類,不同的分類產品又有不同的屬性,比如,電腦的屬性有:CUP,內存,不同類型產品的區別呢?
解決方案:
產品分類表的設計
第一種設計思路:使用樹形結構,遞歸的形式,可以對產品進行N種 分類,只要你喜歡,樹形結構在數據庫的設計中
經常用到,比如功能菜單表等以下是一個簡單的產品分類表。
說明:上級類別ID為該表的外鍵,并關聯到本級類別ID,這樣就可以對產進行N中分類了,這種設計
思想十分靈活,是無限分類中最常用到的。
第二種設計思路:定義N個類別表,并對他們進行關聯,如圖:
說明:這種設計在項目中沒有人會使用它,因為產品的分類是不固定的,很難在數據庫設計的時候確定
類別 表的個數,很不靈活。
2、產品表的設計
第一種設計思路:直接在產品表預留N個字段,用到的時候直接插入數據,如圖
可行性:會產生很多字段的冗余,并且不知道到底需要多少個字段,數據類型也不能確定,可行性比較低,但
是這種設計也有它的優點,就是表的數量少,其他的優點我實在找不出來了,所以,在項目中這種設
計思想也不會用到。
第二種設計思路: 在提及這種設計思路前,首先得了解數據表可以分為兩種結構,一種是橫表,也就是我們經常用到
的表結構,另外一種是縱表,這種結構平時我們用到的表少,所以我也是今天通過請教別人才知
有這種表結構的。
什么是縱表,它有哪些優點和缺點呢?通過兩張圖片對比來了解或許會更清楚
橫表的結構:
縱表的結構:
可以看出橫表的優點是很直觀,它是根據現行業務邏輯定制,設計簡單,易操作,缺點是當業務邏輯發生拓展
時,大多情況下要更改表的結構??v表的數據讓人看著感覺很亂,而且字段的數據出現很大的冗余,但是縱表的還
是有很多好處的,它比較靈活,當業務系統發生拓展時可以很好的適應, 知道了這些,那么我們可以進行產品表的
設計了,在這種設計思想中,需要三個表,一個為產品表,用來存產品的公共屬性,另外一個是產品分類表,最后一
個表很關鍵,用來存不同類別產品的不同屬性,采用的是縱表的結構,如圖:
說明:通過產品拓展屬性表,用戶在頁面就可以動態的某一類產品添加屬性,添加好以后,就采用動態SQL提
取該類商品的屬性生成相應的產品類別屬性橫表,用來保存產品的屬性值,比如:用戶在界面為電腦類ID為
COMP這一類產品中添加了CUP、內存EMS這兩個屬性,那么將會動態的提取這兩個屬性,生成橫表T_COMP,
如圖:
具體怎么實現,有了設計思路,剩下的就是很死的東西了,或許這種設計不是最好的,但是也是我找了好久資料,也
向別人請教以后才弄明白這個流程的……
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com