我在社交媒体应用程序上工作,我希望用户可以选择在页面创建新帖子时收到通知(如在facebook中)。首先,我创建一个Notification
表,其中包含:
Id(PK)
UserId
PageId
PostId
ReadBit
Date
但这没有意义。如果页面有1000个甚至500个感兴趣的粉丝,那么从逻辑上讲,每个感兴趣的粉丝都不会创建1000或500个记录。还有另一种方法吗?
答案 0 :(得分:0)
您正在谈论的信息有两种类型:页面和帖子。
当用户选择页面时,这应该是持久的,因此您需要一个表示此内容的数据库条目。标准的方法是每个用户和她订阅的每页有一条记录:
Subscription(id, user_id, page_id)
根据具体要求,可能存在更简单的解决方案。例如,如果页面是关于主题的,并且用户没有订阅页面而是订阅主题(诸如关于汽车的50页和关于计算机的70页),则存储每个用户和主题的订阅就足够了。但是你的文字并没有表明这一点。
第二个问题是如何在对页面发布帖子时跟踪通知过程。严格来说,每个此类通知都不需要数据库记录。当页面发生变化时,使用Subscription表查找所有订阅者,并在循环中生成通知。
只有在您需要有关每个此类通知的其他持久性信息时,您才需要按通知记录,即
Notification(id, subscription_id, ...)
如果您需要在发送通知时存储时间戳,或者您有通知流程的某些状态信息,例如,可能会出现这种情况。用户是否对通知做出了反应。