2013-06-13 46 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/