1对多通知系统

1 to many notification system

我正在寻找正确方向的推动,主要是在数据库方面,但接受任何类型的推动(代码明智!),关于一对多通知系统。

一群用户收到由用户兴趣触发的通知(例如另一个用户)。

例子

魔法: 一千个用户可以并将继续收到相同的通知,但如果个人用户查看或与更新互动,他们将停止收到通知。

我的实现

我在我的数据库中构建了一个通知table,例如

id | sender | context | action | receiver | unread 
1  | Nobel  | Prize   | Won    | Moi      | true   #default

当主题 A 触发通知时,我让所有用户都对主题 A 感兴趣,然后将相同的通知添加到 table 但接收者不同。

当用户与更新交互时,"unread column" 更新为 false。 然后当一个特定的用户走进来时(不现实)我 select 来自通知 table 的通知上面有用户名,未读的计数为假,然后以红色显示数字通知气泡。

我的意见

这看起来真的很冗长,而且 table 可以很快增长到一个甚至没有名字的数字,比如 megaZillion。就像如果一个主题有 10,000 个兴趣,10,000 个新记录将被添加到 table 只是因为主题没有在冰箱里找到任何汽水(真实推文)。

问题: 有没有更好的方法。

明显的替代方案是只存储通知一次,并将 read/unread 标志单独存储为 notificationID, userID 对。 "Read" 似乎是一个更安全的选择,因为它可以更好地应对不活跃的用户。

然后您将查询用户感兴趣但没有已读标志的所有通知。

如果您需要为每个用户跟踪所有这些,无论如何都会有很多数据 - 这总是意味着您需要存储用户与每个通知的关系。您最多可以做的就是规范化表格。