產品表是每個電子商務網站都有的數據表,不同類型的網站有不同類型的產品表,這里要講的是類似於京東的一套B2C產品結構表,中間的具體事例也會以京東的數據為例。
閱讀目錄
- 前言
- 數據庫模型圖
- 表說明
- 相關功能-展示分類
- 相關功能-點擊某個分類,加載該分類的所有屬性和產品
- 相關功能-點擊某個屬性,加載出相應產品
- 相關功能-關鍵字查詢
- 結尾
前言
做電子商務網站開發也一年多了,最近一直在整理這一年多積累的相關知識,整理之后發現還是有很多值得思考的地方,不如拿出來和大家分享討論,若能碰到高手指點一二豈不更妙。
數據庫模型圖
模型圖中涉及的字段都是本文中講到的基本字段

表說明
先貼出一張京東首頁的分類截圖以供說明:

在模型圖的左上角找到MainCategory(主分類表),此表用來存儲圖中的最大分類,現在往表里插入兩條數據,服裝鞋包和個護化妝如圖:
MainCategory表:
說明:存儲主要分類

找到次分類表SubCategory 表,根據主分類表中的MainCategoryID字段為每個主分類添加兩個次分類,如圖:
SubCategory 表:
說明:存儲次分類

處理完基本分類,現在開始處理相關屬性表,貼出一張京東的男裝中的襯衫的屬性篩選截圖:

圖中的品牌、風格、價格等被稱為主屬性,具體到某個品牌某個款式稱之為屬性,在數據庫模型圖的左下角找到主屬性表Attributes,插入幾條常用的主屬性,如圖:
Attributes表:
說明:存儲主屬性

然后找到屬性表SubAttributes表,根據主屬性表的數據插入幾條數據,如圖:
SubAttributes表:
說明:存儲屬性

現在開始添加真正意義上的分類,因為分類是和屬性關聯起來的,所以只有准備好以上相關數據才能添加分類,在插入分類數據之前要做一個操作,就是選擇該分類所擁有的主屬性,根據主屬性再選擇該分類擁有的次屬性,這里做了個小工具,用來實現,如圖:

添加后的數據如圖:
Category表
說明:存儲產品的分類

Attribute_SubAttributes_Category_Mapping表
說明:關聯分類及對應的主屬性和屬性

然后通過關聯語句查詢出一個關聯表,如圖:

現在哪個分類對應哪些屬性都出來了,開始准備添加產品了,其中與產品相關的有兩個表,一個是屬性產品關聯表,此表是為了搜索及加載等功能,就像圖中的點擊某個屬性加載了相應的產品。至於產品表中的AttributesStrings是存放該產品的屬性集合,是為了方便搜索,在后面也會講到,為了方便展示,產品表里還可以添加一個品牌列,因為每個產品都有品牌這個屬性,這里就不多做闡述了。
添加產品也是用程序實現的,如圖:

添加數據后的表如圖:
Product表:
表說明:存儲產品的基本數據及該產品的分類ID,次分類ID,屬性ID集合字符串(以分號相隔)

Attributes_SubAttributes_Product_Mapping表:
表說明:存儲產品及主屬性次屬性的關聯

這里還要提一下,為了以后方面整體以后,每個產品不同顏色不同尺碼在數據庫里都是作為一個單獨產品存在的,大家可以在京東上看到,不同尺碼,產品編碼也不同,如圖:


相關功能
現在介紹相關功能,在相關功能里每個表的每個字段都會用到。
第一個功能:展示分類
這里主要用到就是分類的3個表,只要根據上級ID不停的遍歷加載就行了,這里借用京東的分類來展示,如圖:

第二個功能:點擊某個分類,加載該分類的所有屬性和產品
在京東上點擊男裝-襯衫這個分類加載的效果如圖:

這里用到的第一個表是Attribute_SubAttributes_Category_Mapping,首先得到男裝-襯衫的ID,這個ID就是一個CategoryID,在表Attribute_SubAttributes_Category_Mapping中先篩選出主屬性ID(AttributeID),在根據主屬性得到該主屬性的所有次屬性(SubAttributesID),如圖在剛才加入的數據中我們可以加載出襯衫的品牌、價格、尺碼等主屬性以及相對應的屬性。
至於加載該分類的所有產品就比較簡單了,產品表(Product)中本身就存在CategoryID,就可以根據CategoryID得到該分類所有的產品了。
第三個功能:點擊某個屬性,加載出相應產品。
京東上的效果如圖:

這里就要用到Attributes_SubAttributes_Product_Mapping表了,首先得到該屬性的主屬性的ID,圖中點擊七匹狼就需要獲取品牌這個主屬性的ID了,比如品牌這個主屬性的ID是A-B,七匹狼這個屬性ID是C-D,那么查詢Attributes_SubAttributes_Product_Mapping表,查詢條件是(AttributesID<>’ A-B’) or (AttributesID=’A-B’ and SubAttributesID=’C-D’)。抱歉,只會用SQL SERVER的查詢語句o(︶︿︶)o。解釋一下這個條件,這是一個OR的邏輯關系,所以在只要在表Attributes_SubAttributes_Product_Mapping中符合主屬性ID(AttributesID)不等於A-B或者是主屬性=A-B且屬性ID(SubAttributesID)=C-D的產品都符合,若多個條件,則需要多個OR邏輯。
第四個功能關鍵字查詢
關鍵字查詢基本上是每個B2C網站都有的功能,但是想要做的既要邏輯簡單又要功能強大確實不容易,這里就先介紹最簡單的單關鍵字查詢,至於多關鍵字查詢相信大家如果理解了這個邏輯,應該會不難想出來的。
關鍵字查詢用到兩個表Product表和Attributes_SubAttributes_Product_Mapping表,所以這里就可以把這兩個表關聯一下,組成一個視圖VProduct,如圖:

這樣就可以用關鍵字模糊匹配視圖的各個字段最后加載出相關的產品。當然為了完善搜索功能,可以給產品表增加一些描述性的字段,搜索時也可以有更多匹配,在這里就不一一列舉了。
結尾
整個表結構到這里差不多就講完了,這是本人第一篇博客,文筆不好,敬請諒解,如果有疑問可以在評論里提出來,本人盡可能的回復。一直都在博客園潛水,終於有想法把自己思考的東西表達出來了,以后還會繼續討論一些電子商務開發中常用的一些技術,希望大家多多關注。
