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