1

您好,我有一个包含 3 个表的数据库。

USERS('user_id','name','surname') 
MESSAGE_GROUP('user_one','user_two', 'hash')
MESSAGES('from_id','group_hash', 'messages')

我的 php 代码使我能够在用户之间发送消息。我的问题是如何使用户能够从其邮箱中删除消息,但其他用户仍在观看该消息。仅当两个用户都删除消息时,才必须完全删除消息。我对代码不感兴趣,我感兴趣的只是找到这背后的逻辑。欢迎任何包含 mysql 代码的提案。谢谢

4

4 回答 4

1

I think you should follow this. :)

  1. You can keep an extra field in message_group table something like 'deleted_from' which will be initially 0
  2. If user one deletes it make the value of 'deleted_from'=1, if user two deletes it, make the value of 'deleted_from' = 2.
  3. When you go to delete the message for a user, and you find the value 'deleted_from' other than 0, delete the message completely, else mark the value of 'deleted_from' as '1' or '2'.
于 2013-06-13T10:53:16.687 回答
0

您将需要:

  1. 创建一个新表,指定邮件所在的邮箱,以便您可以将其连接到两个用户邮箱
  2. 或者复制消息,以便每个用户都有自己可以删除的副本
  3. 向消息表添加标志(不推荐),指示发件人或收件人是否已将其删除。我会避免这种情况,因为如果您有(或打算添加)群组消息传递,它将无法很好地扩展。
于 2013-06-13T10:49:58.213 回答
0

向 MESSAGE_GROUP 添加一个带有值的状态字段:

0 没有所有者,应该删除 1 只有发送者拥有消息 2 只有接收者拥有消息 3 发送者和接收者都拥有它

于 2013-06-13T10:50:30.950 回答
0

我会像这样更改表中的字段(例如每个用户一次只能向一个人发送消息):

    USERS('user_id','name','surname') 
    MESSAGE_GROUP('user_id','message_id')
    MESSAGES('from_id', 'to_id', 'messages')

因此,每个有消息的用户都会在 MESSAGE_GROUP 中有一行。当一个用户删除帖子时,删除 MESSAGE_GROUP 中的该行

于 2013-06-13T10:51:06.153 回答