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

Aar*_*ken 6 mysql sql database tree database-design

我需要能够存储这样的东西: 结构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 => ...
}
Run Code Online (Sandbox Code Playgroud)

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

我完全无法理解这一点,非常感谢!

Mar*_*ers 6

有几种不同的方法可以在MySQL中存储层次数据结构(树).你可以选择:

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

有关每种方法的优缺点的详细信息,请参阅Bill Karwin的演讲.