Database design 删除对话并向同一对话发送消息

Database design 删除对话并向同一对话发送消息,database-design,Database Design,我正在创建一个包含对话和消息的消息传递应用程序。每个对话都有一系列消息 如果用户1删除了与用户2的对话,则我的对话表中有一个名为deleted_users的字段,其中包含已删除对话的用户数组。因此,用户2仍将看到对话,但用户1不会看到 问题是:如果用户2决定向用户1发送具有相同对话的消息(该用户1已删除,但用户2仍有此对话),该怎么办。在我看来,此消息应该为用户1创建一个全新的对话,但仍然属于用户2的原始对话。最好的处理方法是什么 我正在使用Parse.com保存数据。他们用Mongo我想 本着

我正在创建一个包含对话和消息的消息传递应用程序。每个对话都有一系列消息

如果用户1删除了与用户2的对话,则我的对话表中有一个名为deleted_users的字段,其中包含已删除对话的用户数组。因此,用户2仍将看到对话,但用户1不会看到

问题是:如果用户2决定向用户1发送具有相同对话的消息(该用户1已删除,但用户2仍有此对话),该怎么办。在我看来,此消息应该为用户1创建一个全新的对话,但仍然属于用户2的原始对话。最好的处理方法是什么


我正在使用Parse.com保存数据。他们用Mongo我想

本着接吻原则的精神,为什么不“重启”对话呢

用户很可能删除了对话,因为他们认为对话已经结束。现在有了答复,他们可能想再次看到对话。 为了避免混淆,您可能需要显示一些标记/通知(“已删除的对话,因回复而取消删除”)

然后,您可以尝试获取用户反馈。在此基础上,进一步优化(例如,有一个按钮来拒绝进一步的消息)

我知道的大多数消息传递应用程序都是这样工作的。如果他们有“对话”的概念(并非所有人都有),通常对话只是一个新窗口。您可以关闭该窗口,但如果有新消息传入,且所有旧消息都存在,该窗口将重新打开



您可能还想考虑“删除”一个对话意味着什么。用户为什么要这样做?“结束”或“隐藏”对话有什么区别?这将有助于您了解当消息进入“已删除”对话时,正确的行为是什么。

请不要将对象数组放入单个表字段中。这是使用SQL的地狱(并且违反了第一个标准形式)。使用@sleske我正在使用Parse.com,所以他们会为我处理这个功能。他们使用Mongo,我想…@A用户:谢谢,这是重要的信息。我把它编辑成了问题。谢谢你的建议,这很有帮助。然而,在一个用户“永久删除”对话(Facebook会这样做)的情况下,我如何创建一种只从某个点下载消息的有效方法?我会在我的对话表中创建另一个与用户删除日期相关联的字段吗?你看到上面的评论了吗?@Auser:是的,你的建议应该有效。要真正回答这个问题,我们需要更多关于您心目中桌子设计的细节。编辑您的答案并指出您不确定的确切位置。