我正在开发一个消息收件箱系统,它使用基于线程的消息布局。我目前正在努力的是更新消息的读取状态。也许我的结构错了所以我可以做一些指导。
这就是我所拥有的:
Table messages ============== id thread_id from_user_id subject body sent_date Table message_threads ===================== id message_id owner_id member_id owner_read member_read
在message_threads表中,“owner”指的是启动线程的用户,“member”指的是另一个参与者。用户的收件箱将包含他们自己创建的线程(所有者),以及由他们回复的其他用户创建的线程(成员)。
设置读取状态的逻辑如下:
如果所有者发送回复:'member_read'字段设置为0(未读),'owner_read'字段设置为1(读取)
如果会员发送回复:'owner_read'字段设置为0(未读),'member_read'字段设置为1(读取)
现在我认为这不是完全正确的方法,因为假设成员想要通过读取状态对收件箱中的邮件进行排序 - 但是用户既可以是所有者又可以是成员,并且有两个读取字段桌子。所以这种方式不正确。
关于我应该怎么做的任何建议?
编辑:这是一个例子:
答案 0 :(得分:0)
唯一的“读取”状态适用于不是来自您的邮件。打开时,对收件人的回复标记为已读。除非您想要“收据确认”
,否则发件人不在乎是否已阅读所以 - 考虑到这一点,我想它应该是这样的(我没有在消息中包含所有字段):
表“用户”
id
name
表“消息”
id (int)
parent_id (int)
from_user_id (id)
to_user_id
read (bit/bool)
message (text)
如果我没理解你,请告诉我。