2

我正在建立一个具有各种主题的父/子结构的网站。(再解释一下,它实际上有 4 个级别,所以parent < child < 2nd child < 3rd child:)目前我在 MySQL 中为每个级别都有一个表。每个孩子都有一行引用父母的 id 和主键。我遇到的问题是,我看不到创建一个显示子主题的列表,如下所示:

Food 
    Fruit  
        Red  
           Cherry  
        Yellow  
           Banana  
    Meat  
        Beef  
        Pork 

我考虑过使用像这样的单个分层表:http: //mikehillyer.com/articles/managing-hierarchical-data-in-mysql/我知道可以输出这样的列表。

但是,问题在于该表可能很容易有数百万个帖子(假设这是基础),并且每次请求页面时都会对其进行排序的递归函数似乎需要很长时间才能加载。

虽然我承认这不是一个很好的问答网站,但我想知道是否有人知道 Yahoo Answers 如何存储他们的类别和子类别,因为它似乎与我需要做的类似。是否有任何网站拥有任何人都可以提供信息的类别/子类别数据库?

如果我想要一个像上面那样的列表,我是否必须使用单个分层表(相邻列表模型或修改的预排序树结构)或者我可以只使用 php、sql 和 javascript 来创建一个像我目前这样的列表有; 每个级别的孩子有4张桌子?

4

1 回答 1

0

您不需要每个级别的表格。您需要基于递归关系的表,这些表将允许您创建“n”个级别。

这是一个简单的概念,考虑一个包含以下字段的表:

id(primary key) - item_name - parent_id(foreign key {default=0})

其中: parent_id 指回相同的表 id 列。

例子:

id - name - parent_id
1 - ABC - 0
2 - XYZ - 0
3 - ABX - 1
4 - JKK - 1
5 - KHM - 3
6 - KHJ - 5

在这里,ABC 处于 0 级(即他们没有父级),但 ABX 是 KHM 的父级,同时也是 ABC 的子级。

于 2012-10-19T13:04:16.183 回答