Я пишу веб-приложение для пользователей, которым необходимо иметь возможность получать уведомления от администраторов при входе в систему. Эти уведомления должны отображаться на их приборной панели.
Как только пользователь прочитал сообщение, он может отклонить его. Очевидно, что новым пользователям не следует показывать сообщения до того, как они были созданы.
У меня две проблемы с проектированием схемы:
- Как мне определить, что пользователь "отклонил" сообщение?
- Как новые пользователи видят сообщения только после их создания?
Вот таблица для уведомлений:
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
против left join
)?
Для # 2 самый простой подход, который я вижу, это добавление столбца DateCreated
к пользователям и добавление условия к # 1 (where [DateCreated] >= [User].DateCreated
).
Я не хочу, чтобы файлы cookie использовались, потому что это действительно добавляет ненужный вес приложению.