如何在 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 中表示树及其内容?的主要内容,如果未能解决你的问题,请参考以下文章

请教朋友们django如何将mysql中表的内容通过models.py在网页端显示

如何在 PHP 中以字符串的形式显示数据库中表的内容?

如何设置MySQL中表的大小写区分

如何把oracle中表的数据导入mysql

如何查看mysql中表的锁定情况

如何从 MySQL 中表的每一列的名称中删除前缀?