管理员可以创建多个类别和子类别。
例如管理员可以做什么:
cat1 cat2
->sub1 ->sub1
->sub2 ->sub1_1
->sub3
->sub3_1
->sub3_2
->sub3_2_1
->sub3_2_2
->sub4
sub4_1
-sub5
我不知道什么是最好的选择?我应该一张 table 还是两张 table ?
这是我所知道的:
id title parent_cat_id
1 cat1 0
2 sub1 1
3 sub2 1
3 sub3 1
4 sub3_1 3
5 sub3_2 3
6 sub3_2_1 5
7 sub3_2_2 5
...
最佳答案
类别和子类别都只是逻辑“类别”,因此除非您的设计有特定要求,否则无需实现多个物理表(尽管我现在想不出一个... )。
此外,不需要为层次结构中的每个级别专门设置一个结构;您只需要一个在每个“类别”(或“子类别”)级别具有自引用连接到父级的单个表。
我假设在此示例中您的类别(或子类别)可能包含以下元素:
// categories table
category_id
category_name
element
parent_category_id
这个解决方案很优雅,可以在不更改表格的情况下扩展您的层次结构。
顶级类别的 DML 使用谓词“parent_category_id IS NULL”。
较低级别类别(或子类别)的 DML 使用谓词“parent_category_id = 'whatever the parent category ID is'”。
干杯 斯科特
附:我没有足够的代表来响应 Sherif 的答案,而且我可能(读起来可能是)遗漏了一些东西,但是修改后的预序横向(或嵌套集)也可以用一个表来实现; this document 中很好地描述了方法和与 Adjancey 列表的比较。
我同意 Sherif 所描述的每种方法的优缺点。
关于php - 类别和子类别表结构 - mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39313337/