我已经剖析了Skype数据库main.db了几天,但这还没有弄清楚。自然,这个问题将非常针对Skype main.db结构。(免责声明)

似乎我需要的所有必要信息都在表ConversationsMessagesParticipants中。
Message表包含已说过的实际日志,收件人,时间戳和convo_id外键(尽管未强制执行)以连接到消息所属的Conversation

存在Conversation来保存Message和参与的联系人的集合。
Participants表适用于Conversations表和Contacts表之间的多对多连接器表。

给我的是ChatsChatmembers表。 Chatmembers可用于Chats,而Participants表可用于Conversations表;连接联系人和对话-或“聊天”。
Chats中的内容与Conversations类似,除了Message表中没有任何聚合。从Messages表映射到消息日志(Chats表的行)所属的Messages表是不可能的。
ChatsConversations共享一个外键,Conversations表具有名为chat_dbid的列,该列连接到Chats表。但是Conversations表中有些行的chat_dbid字段为空,并且Chats中并非所有行的id字段都与chat_dbid表中的Chats字段相对应。
Chats表仍在更新中,我可以根据时间戳及其中的成员来识别最近进行的一些聊天或对话。

有谁确切知道Chats表的作用?或者说,Chats表和Conversations表的区别和理由是什么?

当我疯狂地寻找这一点时,我只能找到one like that talked about main.db structure,它并不是很有帮助。

根据链接Chats


Conversations


他们关于聊天和对话的术语是什么?它们有何不同?

这一直让我发疯。

最佳答案

昨天我也在Skype中浏览main.db表。以下是我的发现。

对话表唯一标识与特定联系人(或您创建的群组联系人)的对话。对话需要进行所有通信:聊天消息,语音消息,文件传输,您与特定联系人进行的通话。大多数表都引用了该表中的条目。
邮件表具有convo__id,
聊天表包含conv_dbid,
传输具有convo_id,并且同样。

消息表:消息输入并不总是聊天。如果条目是聊天,则将填充其聊天名称字段。
聊天和消息似乎具有一对多的关系。聊天是按某些标识符维护的消息的集合(最有可能是不确定的一天)。 “type = 61”似乎是正常消息:用户键入的消息。其他类型似乎是自动生成的消息,例如。如果通话中断,您会收到消息。

希望这可以帮助。

10-08 06:10