商城產品屬性數據庫設計


最近看到一個題目,要求提出一套商品屬性相關的數據庫設計思路,要求是商品屬性的類別(例如品牌,尺寸,顏色...)不確定,各個屬性類別的屬性值(例如品牌可能是HP,IBM...)不確定,同時需要實現針對不同屬性類別的商品檢索,例如檢索出品牌為XX,尺寸為XX,顏色為XX的商品,各條件為AND操作,另外每個屬性類別的條件可能為品牌=XX or 品牌 = YY這樣的OR操作,最終實現出類似淘寶商品檢索頁面那樣的功能如下(品牌,褲長等條件為AND關系,品牌中的可以選擇多個品牌,為OR關系)

 

經過一番思考,數據庫設計如下:

  • 屬性類別表spec

spec_id —— 屬性類別id

spec_name —— 屬性類別名稱

  • 屬性值表spec_info

spec_info_id —— 屬性值id

spec_id —— 屬性類別

spec_info_name —— 屬性值名稱

  • 商品表goods

goods_id —— 商品id

goods_name —— 商品名稱

  • 商品屬性表goods_spec

goods_spec_id —— 商品屬性id

goods_id —— 商品id

spec_info_id —— 商品屬性值id

 

建立以上4個數據庫后,spec表存放的是品牌,顏色,尺碼等的屬性名,spec_info表存放的是紅色,藍色,HP,IBM等的實際的屬性值,再通過goods_spec表將一個商品跟它的屬性進行關聯,這樣要實現類似淘寶的檢索功能的SQL語句就可以編寫如下:

假設要檢索品牌為IBM或HP(在spec_info表中的spec_info_id 分別為1和2),顏色為紅色(在spec_info表中的spec_info_id 為6),尺碼為15寸(在spec_info表中的spec_info_id 為5)的商品

$sql = "select * from goods_spec where spec_info_id = 5 and goods_id in (select goods_id from goods_spec where spec_info_id = 6 and goods_id in (select goods_id from goods_spec where spec_info_id = 1 or spec_info_id = 2));


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM