【发布时间】:2011-04-19 13:34:48
【问题描述】:
我正在尝试创建一个群组通知系统。如果我在一个群组中,那么任何在群组墙上发表评论的人都会向每个群组成员发送通知。这是我的数据库设计:我有两个表: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,而且还清除了 C 旁边的 1,因为 14 > 12。谁能帮我想办法解决这个问题。我愿意完全重新设计一切
【问题讨论】:
标签: mysql database database-design notifications jpql