【问题标题】:MySQL structure of website with parent and child topics具有父子主题的网站的MySQL结构
【发布时间】:2012-08-02 11:05:01
【问题描述】:

我正在构建一个具有各种主题的父/子结构的网站。 (再解释一下,它实际上有 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 张桌子?

【问题讨论】:

  • 你为什么不直接使用像 Drupal 这样的 CMS?从头开始构建它似乎很奇怪。
  • 我也对这个话题感兴趣。只是一个想法:如何存储放置主题的“级别”?它可以帮助搜索“向上”树
  • @Sebi,我认为这是一个可能的解决方案,但我希望在本地管理所有内容,而无需使用其他产品来交付我的产品。
  • @Fire-Dragon-DoL 这可行,但似乎仍需要很长时间才能对所有数据进行排序。
  • 我有一个类似的系统,从头开始构建(如果我理解你的问题)。我有“父”链接,“子”链接链接到父链接,“孙子”链接链接到子链接。所有链接都在同一个表中,但我添加了一个级别字段(父母:级别 = 0,孩子:级别 = 1 等),并添加了一个链接父字段。子链接的 link_parent 字段将设置为其相关的父唯一 ID。希望这是有道理的!

标签: php javascript mysql sql


【解决方案1】:

每个级别都不需要表格。您需要基于递归关系的表,它允许您创建“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 的子级。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多