背景:我一直在使用twitter API。安装它,以便当有人提及/给我发消息时,它会被发送到聊天机器人。 Bot做出回复,我用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
等
当我第一次发送到bot时,请创建一个随机对话ID(conv_id
),以便机器人可以跟踪对话。
问题是跟踪此问题,它就像一个梯子,导致原始stat_id
没有rep_to_stat_id
,并且必须包含公共conv_id
。
到目前为止,我总是拥有一对多类型设置的表格,我无法理解这是什么类型的结构。
mysql中是否有一个选项可以添加到查询中,以跟踪每个对话的阶梯到其第一个/最后一个点?
答案 0 :(得分:2)
有很多方法可以在关系数据库中存储分层数据。
最常见的方法之一就是只提供一个包含您提到的所有列的表格(stat_id
,rep_to_stat_id
[可为空]和conv_id
)。问题是,要将完整的树检索到根节点,您需要一个递归函数(在MySQL或您选择的脚本语言中),进行多次查询。
This Stack Overflow question应该为您提供有关树结构建模的所有可用选项的概述。
答案 1 :(得分:1)
一个列标记conversation_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