Evi*_*kie 0 php mysql performance
我有一个表格来定义我网站中可能的类别 - 字段看起来像这样:
- id - name - parentID
信息存储如下:
+-----+------+----------+ | id | name | parentID | +-----+------+----------+ | 1 | pets | 0 | +-----+------+----------+ | 2 | cats | 1 | +-----+------+----------+ | 3 | dogs | 1 | +-----+------+----------+
A parentID为0表示类别/页面位于本地级别.我正在寻找一种快速轻松生成父类别的方法.
想到的第一个方法是一系列SQL查询,但我很快意识到,这将是潜在的资源密集,网站越复杂.
通过阅读mysql手册,我已经看到mysql可以使用循环和条件语句,但是我不确定我是如何在这里实践的.
理想情况下,我希望有一个查询来提取所有直接相关的父元素.
如果我正在看宠物类别,我只会看到home它,因为它在顶级.一旦我向下钻取(或者进入cats,dogs或者在页面下面pets),我应该pets在条形图上看到- 后续的子类别和页面也是如此.
使用以这种方式存储的信息生成类别列表的最有效方法是什么?如果这个问题需要更多说明,请询问,我会尽力提供更多信息.
澄清:这是CMS的一部分 - 因此,用户将需要能够动态更改类别.我已经研究了几种数据存储方案(例如嵌套集),它们似乎不适合用于更改导航的简单形式.
因此,任何方法都需要容易地a)用户理解,并且b)容易地实现给用户.
这些类别最好在PC上描述为文件夹,而不是标签.查看任何给定类别时,您可以看到该类别的直接子项以及直接子页面.
查看类别或页面时,父类别(但不是可见的).
例如:我有德国谢泼德,它存在于宠物下的狗身下
When viewing *pets*: Home When viewing *dogs*: Home -> Pets When viewing *German Shepard*: Home -> Pets -> Dogs
请考虑使用"嵌套集"模型:在MySQL中管理分层数据.
更新(基于对问题的澄清):嵌套集模型不必(实际上我很难想象它为什么会暴露给最终用户).在嵌套集模型中可以支持所有目录样式的操作(添加新文件夹/子文件夹;将文件夹移动到不同的路径等等),尽管有些操作比其他操作更难实现.我链接的文章提供了添加和删除(子)文件夹的示例.
| 归档时间: |
|
| 查看次数: |
3133 次 |
| 最近记录: |