0

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

foreach ($xml4->entry as $status4) {
       echo'<li>'.$status4->content.'</li>';
       } 

所以它没有手册,任何数量的消息都可以随时可用。我如何在来自它的消息之间建立父子关系。目前,用户在对应于四种类型消息的不同窗口中输入消息,我的应用程序添加关键字并获取这些关键字以显示在差异窗口中。所有这些消息目前都是父消息。现在我如何让用户输入可以作为另一个子节点保存到数据库中的消息。

4

2 回答 2

2

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

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

于 2010-11-19T09:02:39.763 回答
1

当你说

树的深度是2个节点。即每个父消息可以有两个子节点。

我有点迷惑不解了。

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

1) 深度真的 = 2

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

2) 深度 >> 2

如果数字 2 是宽度并且深度是可变的并且可能非常深,那么请查看嵌套集,还有两种探索的可能性

  • 使用嵌套集的想法,您可以探索 geom 类型来存储分层数据,(好处可能不是那么有趣 - 很少有用的运算符,单个字段,可能更好的索引策略)
  • 连分数(基于嵌套集,tropashko 提供了泛化,这似乎很有趣,因为他们承诺改进嵌套集的一些问题;尽管如此并没有实现它......做你自己的测试)。
于 2010-11-19T09:28:58.970 回答