删除一个用户的消息,但不删除另一个用户的消息

时间:2013-06-13 10:44:54

标签: mysql

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

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

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

4 个答案:

答案 0 :(得分:0)

您需要:

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

答案 1 :(得分:0)

向MESSAGE_GROUP添加值为的状态字段:

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

我认为你应该遵循这个。 :)

  1. 您可以在message_group表格中添加一个类似'deleted_from'的字段,该字段最初为0
  2. 如果用户1删除它,请使用'deleted_from'=1的值,如果用户2删除它,则设为值'deleted_from' = 2.
  3. 当您为用户删除邮件时,如果您发现值'deleted_from'不是0,请完全删除邮件,否则将'deleted_from'的值标记为'1''2'