我正在为需要能够在管理员登录时接收通知的用户编写一个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对left join)?
对于#2,我看到的最简单的方法是向用户添加一个DateCreated列,并在#1 (where [DateCreated] >= [User].DateCreated)中添加一个条件。
我不想涉及到cookie,因为这确实给应用程序增加了不必要的重量。
发布于 2012-03-05 14:26:55
我想说的是,您自己在这里为#1和#2提供的解决方案似乎还不错。
表示“拒绝”通知的链接表是有意义的,否则您最终必须先为每个用户创建一行,以表示通知,而不是一个通知记录。
我认为对于#2来说,为通知和用户创建一个创建日期也是一个明智的选择。如果您依赖于链接表的选项,则使用“dismissed”列的其他建议将不能使您只在创建用户之后显示通知,因为您将得到所有通知,而不仅仅是那些自用户存在以来的通知。
https://stackoverflow.com/questions/9568026
复制相似问题