如何在 MySQL 中表示树及其内容?
Posted
技术标签:
【中文标题】如何在 MySQL 中表示树及其内容?【英文标题】:how to represent trees and their content in MySQL? 【发布时间】:2011-03-30 04:49:58 【问题描述】:我需要能够存储这样的东西:
其中绿色是template
类型,灰色是field container
类型,白色是field
。 (也就是说,一个字段有一个标签和一些文本,为了简单起见,都是mediumtext;而一个字段容器可以存储其他字段容器或文本,而一个模板是一个***字段。)
现在,假设我希望允许用户创建任意数量的这些结构,但不可能超过 10 个。当然,我们需要能够将数据链接到它。
这一切都是为了能够在数据库中存储一个关联数组,该数组在伪代码中查找上述内容:
my_template =
page_info => description => 'hello!!!' ,
id => 0,
content => background_url => '12121.jpg', text => ...
当模板发生变化时(例如,我们将keywords
添加到 page_info),如果有一种简单的方法可以使用模板将字段添加到所有数据中,这将是一大优势。
我完全搞不懂,非常感谢!
【问题讨论】:
mysql table structure question.的可能重复 @OMG Ponies,不,因为这不包括如何存储有关它们的信息,只是结构。 @AaronYodaiken,你解决了这个问题吗?如何?构建表树结构对我来说总是很容易,但现在我遇到了一个特定且类似的问题。我想在 db 表中保存一些可以定义为 MVC 模式中的 View 对象的结构。例如:t_view('id', 'path_to_file'), t_vars('id', 'var', 'view_id'); - 这些表使用它的变量定义单个视图块。我需要生成多维模板,基于一些View,每个变量也可以View每个变量...等等。一个模板可以通过重新定义一些变量值来扩展另一个模板。 【参考方案1】:有几种不同的方法可以在 MySQL 中存储分层数据结构(树)。例如,您可以选择:
邻接列表 嵌套集 路径枚举 闭包表请参阅 Bill Karwin 的 presentation,了解有关每种方法优缺点的更多详细信息。
【讨论】:
感谢这些。我不认识比尔·卡尔文,他的演讲中有一些精彩之处。以上是关于如何在 MySQL 中表示树及其内容?的主要内容,如果未能解决你的问题,请参考以下文章