我正在尝试创建群组通知系统。如果我在一个小组中,那么任何评论该组织墙的人都会向每个小组成员发送通知。这是我的数据库设计:我有两个表: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
时,我会设置{{1} (最大的时间),所以我不会再读它们了。新通知的时间将从11开始。现在,这是我的问题。假设我有3组,A,B和C
A(4):最大时间为10
B(1):最大时间是14
C(1):最大时间为12
如果我点击A,我的NotificationRead.lastRead = 10
,A旁边的NotificationRead.lastRead = 10
清除,B和C旁边的4
保持不变。现在,如果我点击B,我的1
现在就是14,所以不仅要清除B旁边的lastRead
,还要清除自1
以来C旁边的1
。任何人都可以帮我想办法解决这个问题。我愿意完全重新设计一切
答案 0 :(得分:1)
你不能只将一个groupID列添加到NotificationRead表中,这样你就知道每个User \ Group组合的lastRead值>?
答案 1 :(得分:1)
如果您想知道每个用户每组的上次通知时间,您必须存储该信息。因此,每个用户必须在NotificationRead中有多个记录,该记录必须与用户表成为一个单独的表。该表将包含三列,即该用户/组的user_id,group_id和lastread值。