Разработка базы данных для системы групповых уведомлений - PullRequest
0 голосов
/ 01 октября 2010

Я пытаюсь создать систему групповых уведомлений.Если я в группе, то любой, кто прокомментирует стену группы, отправит уведомление каждому участнику группы.Вот мой дизайн базы данных: у меня есть две таблицы: Notification и NotificationRead.

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

Notification<br> ...<br> +time(int)<br> ...
Каждый пользователь имеет одну запись в NotificationRead,он отслеживает, когда я в последний раз читаю уведомление.Логика такова: для конкретного пользователя, если Notification.time > NotificationRead.lastRead, то это уведомление считается непрочитанным.Допустим, в group A есть 4 уведомления, которые я не прочитал, и их time равно 7, 8, 9, 10, затем, когда я нажимаю на group A, я устанавливаю NotificationRead.lastRead = 10 (самое большое время *)1018 *), поэтому я не буду читать их снова.У новых уведомлений их время начинается с 11. Теперь вот моя проблема.Допустим, у меня есть 3 группы: A, B и C

A (4): наибольшее время равно 10
B (1): наибольшее время равно14
C (1): наибольшее время равно 12

, если я нажимаю на A, мой NotificationRead.lastRead = 10, 4 рядом с A выключается, 1 следующийк B и C оставаться на месте.Теперь, если я нажму на B, мой lastRead сейчас равен 14, так что он не только убирает 1 рядом с B, но и 1 рядом с C, начиная с 14 > 12.Может ли кто-нибудь помочь мне придумать способ решить эту проблему.Я готов полностью переделать все

Ответы [ 2 ]

1 голос
/ 01 октября 2010

Если вы хотите узнать время последнего уведомления пользователя на группу, вы должны сохранить эту информацию. Поэтому каждый пользователь должен иметь более одной записи в NotificationRead, которая должна стать отдельной таблицей от пользовательской таблицы. В этой таблице будет три столбца: user_id, group_id и значение lastread для этого пользователя / группы.

1 голос
/ 01 октября 2010

Не можете просто добавить столбец groupID в таблицу NotificationRead, чтобы знать значение lastRead для каждой комбинации пользователь / группа>?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...