我正在尝试创建一个群组通知系统。如果我在一个小组中,那么任何在小组墙上发表评论的人都会向每个小组成员发送通知。这是我的数据库设计:我有两个表:Notification
和NotificationRead
。NotificationRead
+userId (String)
+lastRead (int) - default is 0Notification
...
+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
,而且还清除了自1
以来C旁边的14 > 12
。谁能帮我想办法解决这个问题。我愿意完全重新设计一切
最佳答案
不能只将groupID列添加到NotificationRead表中,以便知道每个User \ Group组合的lastRead值>?