Обработка прочитанных / непрочитанных сообщений для пользователей, таких как почта в mysql
Мне нужно обрабатывать статус прочитанного / непрочитанного сообщения для каждого пользователя. Напишите сейчас я использую денормализованный столбец для хранения разделенных запятыми user_ids. Так как это текстовый столбец, производительность запроса выбора снижается.
Теперь я хотел бы назначить константу для всех пользователей, скажем, Пользователь A - 1, Пользователь B-2, Пользователь C-4 и Пользователь D-8 (побитовый), и сохранить его комбинацию в целочисленном столбце. Так что, когда пользователь A,C прочитать значение для целочисленного столбца будет (1+4) 5. И использовать побитовый оператор в критериях для запроса прочитанного / непрочитанного сообщения. Проблема в том, нет. количество пользователей, которые я могу хранить как комбинацию, ограничено, например, 62 статусом пользователя в столбце. Если мне нужно расширить, я мог бы добавить еще один столбец BIGINT для хранения других пользователей.
Что может быть лучшим способом хранения этой информации. Ниже приведены действия, которые мне нужно сделать.
- когда публикуется новый ответ, мне нужно обновить значение как 0 (чтобы сделать непрочитанным для каждого).
- Обновите статус в столбце, когда пользователь читает сообщение.
- Выберите все непрочитанные сообщения для пользователя.
РЕДАКТИРОВАТЬ: Я пытался обратиться к 3-й акции косвенно я добавляю этот целочисленный столбец в список выбранных столбцов и нахожу статус чтения для пользователя в коде приложения вместо добавления в качестве критерия mysql. В любом случае это не решение проблемы. Мне все еще нужен хороший.
1 ответ
Я бы просто сделал это так, создав таблицу следующим образом:
CREATE TABLE views(
user_id bigint not null,
post_id bigint not null,
primary key(user_id,post_id
)
а затем просто проверьте, существует ли запись с идентификатором пользователя и идентификатором записи. Вы также можете использовать это для подсчета количества просмотров.