category subcategory subcategory
jewelry body nose ring,arm ring,ear ring
men ring,ear ring
我有多个category->subcategory->subcategory
,那么 MySQL 中的表将如何?
category subcategory subcategory
jewelry body nose ring,arm ring,ear ring
men ring,ear ring
我有多个category->subcategory->subcategory
,那么 MySQL 中的表将如何?
像这样构造你的表:
Id Category ParentId
1 Jewelry NULL
2 Body 1
3 nose ring 2
4 arm ring 2
5 ear ring 2
-
-
这称为自引用表,即ParentId
列包含来自同一表NULL
的列中的一个或值。Id
因此,每当您必须知道subcategories
给定的所有直接信息时category
,您只需创建如下查询:
Select * from CategoryMaster where ParentId = 2;
这样做您将获得子类别的所有子类别Body
。
现在,关于这种数据结构的最好的部分是,您可以为任何给定的子类别拥有 n 级子类别,并且具有 3 列(至少)的同一个表就可以了。
在为分层数据设计架构时,您应该考虑需求。如果您将只有一个级别的类别意味着一个父类别,然后是它的子类别,那么您存储数据的方式是最好的。但是,如果您有未知级别的子类别或多个子类别,请考虑嵌套集模型。请参阅此链接 http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/