2010-04-18 122 views
3

我想爲具有類別/子類別管理的電子商務應用程序設計數據庫。請建議一個數據庫模式我們可以在其中創建類別和子類別並將產品添加到這些類別。 每個產品可以有多個類別,我們可以使用一個布爾數據庫查詢多種類別/產品關係的數據庫模式

感謝

+0

你有什麼想出這麼遠? – Oded 2010-04-18 15:36:09

回答

14

對於類別和子類別,任何級別的產品屬於多個類別一起,我會先從:

Categories: 
    category_id 
    parent_category_id foreign key (Categories.category_id) 
    ... other category information ... 
    primary key (category_id) 
Products: 
    product_id 
    ... other product information ... 
    primary key (product_id_id) 
ProductCategories: 
    product_id foreign key (Products.product_id) 
    category_id foreign key (Categories.category_id) 
    primary key (category_id,product_id) 
    index (product_id) 

這樣你就可以達到你的類層次結構的目標,以及實現產品和類別之間的多對多關係。


您可以選擇屬於多個類別(例如,3和4)如查詢產品ID:

select a.product_id 
from Products a, Products b 
where a.product_id = b.product_id 
    and a.category_id = 3 
    and b.category_id = 4 
+0

如何獲得帶有兩個category_id的產品,例如3和4? – 2010-04-18 15:46:16

+1

查看更新:舊派方式:從產品a,產品b中選擇a.product_id,其中a.product_id = b.product_id和a.category_id = 3和b.category_id = 4。毫無疑問,更現代的方式以及一個體面的DBMS應該平等地優化它們。 – paxdiablo 2010-04-18 15:51:10

+0

我不明白你製作分類表的方式。你能解釋一下嗎?或者你可以給我一個簡單的SQL例子來創​​建表,所以我可以研究它的每個元素。 – Qsiris 2012-08-09 21:22:14

0

這將與連接表來最好的解決選擇產品屬於多個類別。也就是說,你有一個products表和一個categories表,每個表都有一個主鍵。然後,創建第三個表,即連接表。它有3列:它的主鍵,category_idproduct_id。然後,當您想要添加產品和類別之間的關係時,請將相關的category_idproduct_id行插入到連接表中。然後,您可以使用這3個表格和連接來顯示關係。