我是MYSQL的新手,我正在处理消息模块。我的桌子结构就是这样。
消息=> id,消息,创建
MessageUser => id,message_id,receiver_id,sender_id,is_read
用户=> id,用户名,电子邮件
sender_id和receiver_id联系User.id,message_id联系Message.id
当我对收件箱执行查询时,我放置了一个条件(其中receiver_id = $param);与发送的项条件相同( sender_id = $param);
当我从收件箱中删除邮件fine.but 或发送消息时,问题就出现了。
因为我在UserMessage表上执行删除查询。
当此邮件从“我的发送”框中删除时,它也将从其他用户的收件箱中删除。
我有两个独白
1。添加另一列is_delete,并根据从接收方或发送方删除的方式设置其值。
2。将MessageUser表分为两个表:发件人=> id、message_id、sender_id;接收者=> id、message_id、receiver_id、is_read;
告诉我什么是更好的解决办法。同时也告诉我另一个解药
谢谢,请尽快回复
发布于 2011-12-26 15:07:41
备选案文3)考虑以下内容:
用户表(可以是发送方或接收方) UserID PK
消息表(消息或响应) MessageID (PK) ParentMessageID (FK到self)
UserMessage表<--您对此表上的删除进行操作。邮件将保持不变,直到所有父消息和子消息的所有userMesages标记为已删除为止。SenderID ReceiverID MessageID状态(已删除、isRead等)
发布于 2011-12-26 15:23:05
我认为更好的方法是在
枚举(发送者,接收者,两者)类型。
如果它正在存储sender,那么它就会从发送方中删除,如果它的值是receiver,那么它就会被接收方删除等等。
https://stackoverflow.com/questions/8636382
复制相似问题