如何在MySQL中表示树和它们的内容?

问题描述:

我需要能够存储这样的事情: Structure http://i33.tinypic.com/f4dwea.jpg如何在MySQL中表示树和它们的内容?

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

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

这是所有能在一个数据库中存储的关联数组,看起来对上述类似,在伪代码:

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

有一个简单的方法来使用该模板的字段添加到所有数据当模板发生变化时(比如说,我们在page_info中添加一个keywords)会是一大优势。

我无法弄清楚这一点,非常感谢!

+0

可能重复的[MySQL表结构问题。](http://*.com/questions/3486109/mysql-table-structure-question) – 2010-08-15 22:04:42

+0

@OMG小马,不,因为这不包括如何存储关于他们的信息,只是结构。 – 2010-08-15 22:06:26

+0

@AaronYodaiken,你解决了这个问题吗?怎么样?对于我来说,构建表树结构总是很容易,但是现在我有一个特定的和类似的问题。我想在数据库表中保存一些可以从MVC模式定义为View对象的结构。例如: t_view('id','path_to_file'),t_vars('id','var','view_id'); - 这些表格正在用变量定义单个视图块。我需要基于一些View生成多维模板,每个变量也可以查看每个变量...等等。一个模板可以通过重新定义一些变量值来扩展另一个模板。 – LINKeRxUA 2015-02-03 15:39:55

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

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

见比尔Karwin的presentation对每个利弊的更多细节。

+0

感谢您的这些。我不知道比尔卡尔文,他的演讲中有一些宝石。 – chryss 2010-08-16 13:29:13