0

我正在尝试创建一个群组通知系统。如果我在一个群组中,那么任何在群组墙上发表评论的人都会向每个群组成员发送通知。这是我的数据库设计:我有两个表: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的,4旁边的 A 清除,1旁边的 B 和 C 保持原样。现在如果我点击 B,我的lastReadnow 是 14,所以它不仅清除了1B 旁边的,而且还清除了1C 的下一个,因为14 > 12. 谁能帮我想办法解决这个问题。我愿意完全重新设计一切

4

2 回答 2

1

您不能只在 NotificationRead 表中添加一个 groupID 列,以便知道每个 User\Group 组合的 lastRead 值吗?

于 2010-09-30T20:22:22.373 回答
1

如果您想知道每组每个用户的最后通知时间,则必须存储该信息。因此,每个用户在 NotificationRead 中必须有多个记录,该记录必须与用户表成为单独的表。该表将包含三列,即 user_id、group_id 和该用户/组的 lastread 值。

于 2010-09-30T20:26:04.287 回答