我正在尝试创建一个群组通知系统。如果我在一个小组中,那么任何在小组墙上发表评论的人都会向每个小组成员发送通知。这是我的数据库设计:我有两个表:NotificationNotificationRead

NotificationRead
+userId (String)
+lastRead (int) - default is 0


Notification
...
+time(int)
...

每个用户在NotificationRead中都有一个条目,它会跟踪我上次阅读通知的时间。
逻辑是:对于特定用户,如果Notification.time > NotificationRead.lastRead,则该通知被视为未读。假设在group A中有4条我还没有阅读的通知,而它们的time7, 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值>?

08-24 19:38