2012-08-04 47 views
2

我正在建立一个网站,有一个父/子结构的各种主题。 (太多解释它,它实际上有4个级别,所以:parent < child < 2nd child < 3rd child)目前我有一个MySQL中每个级别的表。每个孩子都有一行引用父母的ID和主键。那我遇到的问题是,我看不出有任何的方式来创建,显示子之类的话题,一个列表如下图所示:与父母和孩子主题的网站的MySQL结构

Food 
    Fruit 
     Red 
      Cherry 
     Yellow 
      Banana 
    Meat 
     Beef 
     Pork 

我曾想过使用单一阶层表像上:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/,我知道可以输出这样的列表。

但是,这个问题是该表可以很容易地拥有数百万个帖子(假设这是个基础),并且每次请求页面时通过它进行排序的递归函数似乎需要很长时间加载。

虽然我认识到它不是一个很好的问题和答案网站,但我想知道是否有人知道雅虎解答如何存储他们的类别和子类别,因为它看起来与我需要做的类似。是否有任何网站具有任何人都可以提供有关信息的类别/子类别数据库?如果我想要一个像上面那样的列表,我需要单个分层表(无论是相邻列表模型还是修改的预订树结构),还是我可以使用php,sql和javascript来创建一个像这样的列表与我目前有什么;那是每个孩子级别的4张桌子?

+0

你为什么不使用像Drupal这样的CMS?似乎很奇怪从头开始构建。 – Sebi 2012-08-04 21:03:34

+0

我也对这个话题感兴趣。只是一个想法:存储“级别”放置主题的位置是什么?它可以帮助搜索“up”树 – 2012-08-04 21:04:40

+0

@塞比,我想这是一个可能的解决方案,但是我希望在不需要使用其他产品来交付我的产品的情况下在本地管理它。 – ryno 2012-08-04 21:09:13

回答

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的同时,农行还孩子家长。