背景:我一直在使用 Twitter API。设置它,以便当有人提及/向我发送消息时,它会被发送到聊天机器人。机器人做出回复,我使用 API 发布推文。
除了名为 rep_to_stat_id
的字段之外,每条推文都有一个唯一的 status_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
等等
当我第一次发送给机器人时,创建一个随机对话 ID (conv_id
),以便机器人可以跟踪对话。
问题在于跟踪它,它就像一个梯子,通向原始的 stat_id
,没有 rep_to_stat_id
,并且必须包含通用的 conv_id
>.
到目前为止,我一直拥有具有一对多类型设置的表,我无法理解这是什么类型的结构。
mysql 中是否有一个选项可以添加到查询中,以跟踪每个对话的阶梯到其第一个/最后一个点?
最佳答案
在关系数据库中存储分层数据的方法有很多种。
最常见的方法之一是简单地创建一个包含您提到的所有列的表(stat_id
、rep_to_stat_id
[nullable] 和 conv_id
)。问题是,要检索直到根节点的完整树,您需要一个递归函数(在 MySQL 或您选择的脚本语言中),进行多次查询。
This Stack Overflow question应该可以让您很好地了解用于建模树结构的所有可用选项。
关于php - 在 PHP MYSQL 中跟踪对话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10985579/