1到多个通知系统

时间:2016-12-21 09:12:56

标签: php mysql sql database social-networking

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

其中一群用户收到由用户感兴趣的通知(例如另一个用户)。

示例

  • user1,user2和user3对Subject A。
  • 感兴趣
  • 主题A,发布了一项活动。
  • user1,user2和user3收到来自主题A的通知。
  • user2和user3查看了更新,因此将不再收到有关该更新的通知。
  • user1仍然会收到通知,因为她尚未查看更新。

魔术: 一千个用户可以并将继续收到相同的通知,但如果用户查看或与更新交互,个别用户将停止接收通知。

我的实施

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

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

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

当用户与更新交互时,"未读列"用false更新。 然后当特定用户走进(不现实)时,我从通知表中选择具有用户名称的通知,计算未读的假,然后在红色通知气泡中显示该数字。

我的意见

这看起来真的很冗长,而且这个表格可以发展到一个甚至没有名字的数字,但很快就会像万亿。就像一个主题有10,000个兴趣一样,只有因为主题没有在冰箱里找到任何苏打水(真正的推文),就会有10,000个新记录被添加到表中。

问题: 是否有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:2)

明显的替代方法是仅存储一次通知,并将读/未读标志分别存储为notificationID, userID对。 “阅读”看起来更安全,因为它可以更好地应对非活动用户。

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

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