mysql 邻接表_关于mysql:邻接表模型或嵌套集模型,应该使用哪个数据模型存储层次结构数据?...

我必须将Web应用程序从Twitter获取的消息存储到本地数据库中。存储消息的目的是我需要按层次结构显示这些消息,即用户通过我的应用程序输入的某些消息(即状态更新)是其他消息的子节点(我必须将它们显示为父消息的子列表项) )。我应该使用哪个数据模型邻接表模型或嵌套集模型?我必须管理四种消息类型,每个类别中的消息可以有两个子节点。这里还有一个问题是,在两种情况下,我看到的(实现)都是手动控制输入的,即在嵌套列表中如何引用邻接模型中的父节点或右,左。我的应用程序从Twitter获取消息数据,例如:

foreach ($xml4->entry as $status4) {

echo'

'.$status4->content.'

';

}

因此,它没有手册,任何时候都可以提供任意数量的消息。我如何在来自其的消息之间建立父子关系。目前,用户在与四种消息类型相对应的不同窗口中输入消息,我的应用程序添加了关键字并将其取回以显示在差异窗口中。目前,所有这些消息都是父消息。现在,我如何让用户输入一条消息,该消息可以另存为数据库。

http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

如果要有更多或更少的数据树(从每个根节点开始),请考虑使用嵌套集,因为AL会很慢。

树的深度为2个节点。 即每个父味精可能有两个子节点。

因此,我认为您可以使用Ajacency List,但是正如@Unreason所说,我根本不理解为什么在这里使用树。 去关系。

@FractalizeR:链接已经消失了(幸运的是,新的MySQL所有者starte dto已经成为EVIL,因为隐藏了知识),幸运的是网络存档出现了:web.archive.org/web/20110606032941/http://dev.mysql.com/

当你说

depth of tree is 2 nodes. i.e. each

parent msg could have two child nodes.

我有点迷惑不解了。

如果两个子节点中的每个可以有更多的子节点,那么您所考虑的不是深度,而是节点分支的宽度。

1)深度真的= 2

如果最大深度确实为2(换句话说,所有节点分两步连接到根节点或零级节点;换句话说,对于每个节点,除了父级和祖父母级,就没有其他祖先),那么您甚至可以使用关系型直接进行模型化以存储分层数据(通过自我联接(在最大深度这么低的情况下还不错),或者将数据分为3个实体-祖父母,父母和子女)

2)深度>> 2

如果数字2是宽度并且深度是可变的并且可能很深,则查看嵌套集,并探索另外两种可能性

使用嵌套集的想法,您可以探索几何类型以存储层次结构数据(好处可能并不那么有趣-有用的运算符很少,单一字段,可能是更好的索引策略)

连续分数(基于嵌套集,tropashko提供了泛化,这似乎很有趣,因为他们承诺会改善嵌套集的某些问题;尽管没有实现,但是请自己做测试)。

实际上,现在我得到了主管的确认,树的深度可能是任意的。 用户可以在任何子级别添加任意数量的节点

只是提到我没有列出任意深度的自连接表选项,因为您使用的是mysql,它不支持递归查询。 如果您不习惯使用mysql,也可以探索该选项-例如在postgres上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值