如何在MySQL中表示树木及其内容?

时间:2010-08-15 21:58:57

标签: sql mysql database database-design tree

我需要能够存储这样的东西: Structure http://i33.tinypic.com/f4dwea.jpg

绿色为template类型,灰色为field container类型,白色为field。 (也就是说,一个字段有一个标签和一些文本,为简单起见都是中间文本;一个字段容器可以存储其他字段容器或文本,而模板是一个顶级字段。)

现在,假设我想允许用户创建任意数量的这些结构,但它不可能超过10个。当然,我们需要能够将数据链接到它。

这就是能够在数据库中存储一个关联数组,它在伪代码中查找上面的内容:

my_template = {
  page_info => { description => 'hello!!!' },
  id => 0,
  content => { background_url => '12121.jpg', text => ...
}

在模板更改时(例如,我们向page_info添加keywords),使用模板轻松地向所有数据添加字段将是一个很大的优势。

我完全不知道这一点,非常感谢!

1 个答案:

答案 0 :(得分:6)

在MySQL中存储几种不同的方法来存储层次数据结构(树)。例如,您可以选择:

  • 邻接列表
  • 嵌套集
  • 路径枚举
  • 关闭表

见Bill Karwin的presentation,了解每个人的利弊的详细信息。