帮助MySQL数据库结构 - 用户通知系统

时间:2011-01-09 16:35:34

标签: mysql database-design

我想向我的用户(超过1000个用户)发送全局通知,并允许他们在阅读完消息后关闭通知框。

基本上我可以在全球范围内每周发送一个通知,即/每个用户都收到相同的消息,而且它们本质上不属于个人。

实现这一目标的最佳方法是什么?

创建2个表:

**tb_messages**
message_id
massage_title
message_content

**tb_read_messages**
user_id
message_id
is-read

这样我可以向每个用户显示未读取的当前通知吗?

从tb_read_messages中选择* WHERE user_id = $ user_id AND is-read = no

OR是否有更有效的方式?

感谢!!!

2 个答案:

答案 0 :(得分:1)

我认为你的两个表解决方案(真的有3个用户信息表)是要走的路。实际上,您通过tb_read_messages创建了Users和Messages之间的多对多链接(虽然我将此命名为“user_message”或user_message_status,因为它是用户和记录当前状态的消息之间的链接)。

我唯一能做的就是考虑用户群,以便您可以轻松定位特定的用户群

用户} -User_Groups- {Group_message_status} -Messages

答案 1 :(得分:0)

你的解决方案似乎很好。你可以进一步考虑的是你的 tb_read_messages 表格可能会冒出很多。您可能会想到它的一些维护。也许您可以通过将已经读取的消息归档到单独的表中,或者只是在不需要保留此类历史记录时删除它们。此外,您可能希望删除排队等待非活动用户的邮件(您可以使用附加到邮件的时间戳来执行此操作)。

这只是一般性的想法,可以在实际产品的背景下进行改进。