0

背景:我一直在使用 twitter API。进行设置,以便当有人提到/给我发消息时,它会被发送到聊天机器人。机器人做出回复,我使用 API 将其发送出去。status_id除了一个名为的字段外,每条推文都有一个独特的字段rep_to_stat_id,因此对话如下所示:

person 'hi how are you?'          stat_id = 1 rep_to_stat_id = blank
    me 'ok, and you?'             stat_id = 2 rep_to_stat_id = 1
person 'are you stalking me'      stat_id = 3 rep_to_stat_id = 2
    me 'no you are stalking me'   stat_id = 4 rep_to_stat_id = 3

等等

当我第一次发送给机器人时,请创建一个随机conv_id的对话 ID ( ),以便机器人可以跟踪对话。

问题是跟踪这个,它就像一个梯子,通向原始stat_id的 no rep_to_stat_id,并且必须包含 common conv_id

到目前为止,我一直都有一对多类型设置的表格,我无法理解这是什么类型的结构。

mysql中是否有一个选项可以添加到查询中,以按照每个对话的阶梯到达其第一个/最后一个点?

4

2 回答 2

2

有许多方法可以在关系数据库中存储分层数据。

最常见的方法之一是简单地创建一个包含您提到的所有列的表(stat_idrep_to_stat_id[nullable] 和conv_id)。问题是,要检索到根节点的完整树,您需要一个递归函数(在 MySQL 或您选择的脚本语言中),进行多个查询。

这个 Stack Overflow 问题应该为您提供对树结构建模的所有可用选项的一个很好的概述。

于 2012-06-11T18:44:01.997 回答
1

有一列标记对话 ID,另一列标记该对话中的迭代。

person    text                       conversation_id    reply_num
------------------------------------------------------------------
0         "Hi"                       0                  0
1         "Hello, who are you"       0                  1
0         "I am a bot"               0                  2
1         "Goodbye"                  0                  3
0         "Hi"                       1                  0           //new conversation thread
1         "who is this?"             1                  1
0         "This is a bot"            1                  2
1         "leave me alone"           1                  3
于 2012-06-11T18:41:59.237 回答