2013-06-13 99 views
-3
category subcategory subcategory 
jewelry body  nose ring,arm ring,ear ring 
      men  ring,ear ring 

我有多個category->subcategory->subcategory所以這將如何在MySQL中的表?我的sql多個類別 - 子類別 - 子類別

+0

請記住,這不是一個論壇,所以「幫助我儘快」和「感謝」行只會污染問題內容。正如你所看到的,[值得一個答案](http://stackoverflow.com/questions/how-to-ask)通常回答非常快。 –

+0

你可能會有超過三個級別的類別,或只有三個問題中包含? –

回答

1

結構化你的表是這樣的:

Id Category ParentId 
1  Jewelry  NULL 
2  Body   1 
3  nose ring  2 
4  arm ring  2 
5  ear ring  2 
- 
- 

這就是所謂的自引用表即ParentId列包含來自同一個表的Id列要麼NULL或價值。

所以每當你要知道所有給定category直接subcategories,你只需創建這樣一個查詢:

Select * from CategoryMaster where ParentId = 2; 

這樣做,你會得到所有的子類別Body子類別。

現在,關於這個數據結構的最好的部分是,對於任何給定的子類別和具有3列的同一單表(至少)都可以有n級子類別。

+0

我在想這個表,但看看sanjay提供的例子,耳環有2個父母,我認爲它只能是一個分類行 – jbrtrnd

+0

那麼,你可以有兩個耳環的入口,兩個母親的身份不一樣 –

+0

imho第二子類別(戒指)與第一子類別(男士,身體)有1,n關係。 –

0

在設計分層數據的模式時,您應該考慮需求。如果你將只有一個類別的類別意味着一個父母,然後是它的子類別,那麼你存儲數據的方式是最好的。但是,如果你有未知級別的子類別或多個子類別,請考慮嵌套集模型。 請參閱此鏈接http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/