表结构

时间:2011-12-26 13:54:25

标签: mysql

我是MYSQL的新手,我正在研究消息模块。我的表结构就是那样。

消息=> id,message,created

MessageUser => id,message_id,receiver_id,sender_id,is_read

用户=> id,用户名,电子邮件

sender_id和receiver_id与User.id关联,message_id关联到Message.id

当我为我的收件箱执行查询时,我提出了一个条件(WHERE receiver_id = $ param); 与我发送的项目条件相同(WHERE sender_id = $ param);

工作正常。但当我从收件箱中删除邮件或发送邮件时,问题就出现了

bcoz我在UserMessage表上执行删除查询。

当从我发送的邮箱中删除此邮件时,它也会从其他用户的收件箱中删除。

我有2个解决方案

1 即可。添加另一列is_delete并根据从接收方或发送方的删除设置其值。

2 即可。将MessageUser表分成两个表    发件人=> id,message_id,sender_id;    接收器=> id,message_id,receiver_id,is_read;

告诉我什么是更好的解决方案。并告诉我另一个解决方案

提前致谢 请快速回复

2 个答案:

答案 0 :(得分:0)

选项3)考虑以下内容:

用户表(可以是发件人或收件人) UserID PK

消息表(消息或响应) MessageID(PK) ParentMessageID(FK to self)

UserMessage表< - 您对此表执行删除操作。消息保持不变,直到所有用户消息被标记为已删除所有父级&儿童消息。 发件人ID ReceiverID 邮件ID 状态(已删除,isRead等)

答案 1 :(得分:0)

恕我直言,我认为更好的方法是添加

  

枚举(发件人,收件人,两者)类型。

如果它正在存储sender,那么它将从发件人中删除,如果它的值为receiver,则它已被接收者删除,等等。