用于存储层次结构列表的RDBMS策略?查询/输出它们?

时间:2010-08-09 11:13:06

标签: php mysql list hierarchy

我想存储一些具有以下结构的文本数据:

1. Overall Text A
  1.1 Subsection Text
       1.1.1 Clarification A
       1.1.2 Clarification B
  1.2 Another Subsection
       1.2.1 Don't forget A
       1.2.2 Don't forget B
       1.2.3 or C!
2. Overall Text B
  2.1 getting the idea yet?

部分级别的范围从1(平坦)到4,但没有绝对最大值。每个项目至少有一个段落的文本。保留编号方案很重要。

我正在为网站使用MySQL和PHP,这涉及到我想添加的部分。如何最好地将这些数据和关系存储在RDBMS中,然后如何再次将它们取出并用PHP逻辑显示它们?

2 个答案:

答案 0 :(得分:1)

创建表示层次结构的数据库结构很简单:

 CREATE TABLE nodes (
    node_id int NOT NULL,
    parent_node_id int,
    node_data varchar(100),
    PRIMARY KEY node_id);

但是保持编号系统有点复杂 - 不过CSS can do this for you.

管理层次数据的另一种方法是here

您可能还会发现phplm有用。

答案 1 :(得分:1)

嵌套集将为您提供以有效方式存储分层数据的好处。但是,使用它可能会有些麻烦。大多数时候,虽然结构简单,但它的表现却很好而且效率很高!

MySQL示例:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

我自己在几个项目中使用过这种方法,除了一些关于路径查找的麻烦之外,我没有抱怨。 :)