我正在建立一个网站,有一个家长/儿童结构的各种主题。(再解释一下,它实际上有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/上使用这样一个层次表,我知道它可以输出这样一个列表。
然而,问题在于,表很容易有数百万个post(假设这是最基本的),而且每次请求页面时都会有一个递归函数对其进行排序,这似乎需要很长时间才能加载。
虽然我承认这不是一个很好的问答网站,但我想知道是否有人知道雅虎问答如何存储他们的类别和子类别,因为它似乎与我需要做的相似。是否有任何网站具有任何人都可以提供有关信息的类别/子类别数据库?
如果我想要一个像上面那样的列表,我是否需要一个层次表(相邻的列表模型或修改过的预订单树结构)或者我是否可以使用php、sql和javascript来创建一个像这样的列表,即每个子级有4个表?

最佳答案

你不需要每层都有桌子。您需要基于递归关系的表,这些表将允许您创建“n”个级别。
下面是一个简单的概念,考虑一个包含以下字段的表:

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

哪里:
父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的子级。

关于php - 具有父子主题的网站的MySQL结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11811979/

10-16 15:46