我正在为需要在管理员登录时能够接收通知的用户编写Web应用程序。这些通知应显示在其仪表板上。用户通知系统的架构
一旦用户阅读了消息,他们可以解雇它。显然,新用户在创建之前不应显示消息。
我有两个问题,设计模式:
- 如何识别用户已“开除”的消息?
- 新用户在创建后只能看到消息吗?
这里的表通知:
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 left join
)?
对于#2,我看到的最简单方法是向用户添加DateCreated
列,并在#1(where [DateCreated] >= [User].DateCreated
)上添加条件。
我不想要cookies,因为这确实会给应用程序增加不必要的重量。
谢谢 - 我将坚持我原来的计划。 – TheCloudlessSky 2012-03-06 13:17:12
我认为这是最明智的选择,我最近做了类似警报系统的工作。我打算为每个用户插入一行并删除它们,但由于我们有2-3,000个用户,并且警报一次只能与10-20个用户相关,因此添加数千行永远不会触及的行似乎效率低下。 – dougajmcdonald 2012-03-06 14:47:43