我正在寻找正确的方向,主要是在数据库方面,但是对于1对多的通知系统,接受任何类型的推送(代码明智!)。
其中一群用户收到由用户感兴趣的通知(例如另一个用户)。
示例
魔术: 一千个用户可以并将继续收到相同的通知,但如果用户查看或与更新交互,个别用户将停止接收通知。
我的实施
我在我的数据库中构建了一个通知表,如
id | sender | context | action | receiver | unread
1 | Nobel | Prize | Won | Moi | true #default
当主题A触发通知时,我获得对主题A感兴趣的所有用户,然后将相同的通知添加到表中但使用不同的接收者。
当用户与更新交互时,"未读列"用false更新。 然后当特定用户走进(不现实)时,我从通知表中选择具有用户名称的通知,计算未读的假,然后在红色通知气泡中显示该数字。
我的意见
这看起来真的很冗长,而且这个表格可以发展到一个甚至没有名字的数字,但很快就会像万亿。就像一个主题有10,000个兴趣一样,只有因为主题没有在冰箱里找到任何苏打水(真正的推文),就会有10,000个新记录被添加到表中。
问题: 是否有更好的方法来做到这一点。
答案 0 :(得分:2)
明显的替代方法是仅存储一次通知,并将读/未读标志分别存储为notificationID, userID
对。 “阅读”看起来更安全,因为它可以更好地应对非活动用户。
然后,您将查询用户感兴趣但没有读取标志的所有通知。
如果您需要为每个用户跟踪所有这些数据,那么无论如何都会有很多数据 - 这总是意味着您需要存储用户与每个通知的关系。你能做的最多就是规范化表格。