Я пишу веб-приложение для пользователей, которым необходимо иметь возможность получать уведомления от администраторов при входе в систему. Эти уведомления должны отображаться на панели управления.Схема для системы уведомлений для пользователей
Как только пользователь прочитал сообщение, они могут его отклонить. Очевидно, что новые пользователи не должны показывать сообщения до их создания.
У меня две проблемы с проектирования схемы:
- Как определить, что пользователь «уволен» сообщение?
- Как новые пользователи видят только сообщения после их создания?
Вот таблица для уведомлений:
CREATE TABLE [dbo].[Notification]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Message] [varchar](max) NOT NULL,
[DateCreated] [datetime] NOT NULL,
[CreatedById] [int] NOT NULL
)
Для # 1, я думал о создании таблицы (DismissedNotification_User
), что бы сопоставить между Notification.Id
и User.Id
. Если существует пара, пользователь отклоняет это уведомление. Однако я не уверен, что это лучший подход (not in
vs a left join
)?
Для # 2, самый простой подход, который я вижу, добавляет столбец DateCreated
пользователям и при добавлении условия на # 1 (where [DateCreated] >= [User].DateCreated
).
Я не хочу использовать куки, потому что это действительно добавляет лишнего веса в приложение.
Спасибо - я собираюсь придерживаться своего первоначального плана. – TheCloudlessSky
Я думаю, что это самый разумный вариант, в последнее время я сделал что-то подобное с системой оповещений. Я предполагал вставить строку для каждого пользователя и удалить их, но поскольку у нас есть пользователи 2-3k, и оповещения, вероятно, имеют отношение только к 10-20 пользователям за раз, казалось бы, неэффективно добавлять тысячи строк, которые никогда не будут затронуты. – dougajmcdonald