[英]Database design for Group Notification System
我正在尝试创建一个群组通知系统。 如果我在一个小组中,那么任何在小组墙上发表评论的人都会向每个小组成员发送通知。 这是我的数据库设计:我有两个表: Notification
和NotificationRead
。
NotificationRead
+userId (String)
+lastRead (int) - default is 0
Notification
...
+time(int)
...
每个用户在NotificationRead
都有一个条目,它会跟踪我上次阅读通知的时间。 逻辑是:对于特定用户,如果Notification.time > NotificationRead.lastRead
,则将该通知视为未读。 假设在group A
,有4条我没有阅读的通知,它们的time
是7, 8, 9, 10
,然后当我单击group A
,我将NotificationRead.lastRead = 10
(最大时间 )设置为所以我不会再读它们。 新通知的时间将从11开始。现在,这是我的问题。 假设我有3个群组,A,B和C
A(4):最大时间为10
B(1):最大时间为14
C(1):最大时间为12
如果单击A,我的NotificationRead.lastRead = 10
,则A旁边的4
清除,B和C旁边的1
保持不变。 现在,如果我单击B,则我的lastRead
现在是14,因此不仅清除了B旁边的1
而且清除了14 > 12
以来C旁边的1
。 谁能帮我想办法解决这个问题。 我愿意完全重新设计一切
不能只将groupID列添加到NotificationRead表中,以便知道每个User \\ Group组合的lastRead值>?
如果您想知道每个用户每组的最后通知时间,则必须存储该信息。 因此,每个用户在NotificationRead中必须有多个记录,该记录必须与用户表成为单独的表。 该表将具有三列,即user_id,group_id和该用户/组的lastread值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.