我想向我的用户(超过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是否有更有效的方式?
感谢!!!
答案 0 :(得分:1)
我认为你的两个表解决方案(真的有3个用户信息表)是要走的路。实际上,您通过tb_read_messages创建了Users和Messages之间的多对多链接(虽然我将此命名为“user_message”或user_message_status,因为它是用户和记录当前状态的消息之间的链接)。
我唯一能做的就是考虑用户群,以便您可以轻松定位特定的用户群
用户} -User_Groups- {Group_message_status} -Messages
答案 1 :(得分:0)
你的解决方案似乎很好。你可以进一步考虑的是你的 tb_read_messages 表格可能会冒出很多。您可能会想到它的一些维护。也许您可以通过将已经读取的消息归档到单独的表中,或者只是在不需要保留此类历史记录时删除它们。此外,您可能希望删除排队等待非活动用户的邮件(您可以使用附加到邮件的时间戳来执行此操作)。
这只是一般性的想法,可以在实际产品的背景下进行改进。