首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >面向用户的通知系统架构

面向用户的通知系统架构
EN

Stack Overflow用户
提问于 2012-03-05 14:09:46
回答 3查看 743关注 0票数 1

我正在为需要能够在管理员登录时接收通知的用户编写一个web应用程序。这些告示应显示在仪表盘上。

一旦用户阅读了一条消息,他们就可以拒绝它。显然,在创建新用户之前,不应该显示消息。

在设计模式时,我遇到了两个问题:

  1. 如何识别用户“拒绝”消息?
  2. 如何只在消息创建后才看到消息?

以下是用于通知的表:

代码语言:javascript
复制
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.IdUser.Id之间。如果存在一对,则用户拒绝该通知。但是,我不确定这是否是最好的方法(not inleft join)?

对于#2,我看到的最简单的方法是向用户添加一个DateCreated列,并在#1 (where [DateCreated] >= [User].DateCreated)中添加一个条件。

我不想涉及到cookie,因为这确实给应用程序增加了不必要的重量。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-05 14:26:55

我想说的是,您自己在这里为#1和#2提供的解决方案似乎还不错。

表示“拒绝”通知的链接表是有意义的,否则您最终必须先为每个用户创建一行,以表示通知,而不是一个通知记录。

我认为对于#2来说,为通知和用户创建一个创建日期也是一个明智的选择。如果您依赖于链接表的选项,则使用“dismissed”列的其他建议将不能使您只在创建用户之后显示通知,因为您将得到所有通知,而不仅仅是那些自用户存在以来的通知。

票数 1
EN

Stack Overflow用户

发布于 2012-03-05 14:18:55

  • For #1:Notification表中添加一个新列,类似于数据类型bit i.booleandismissedreaded,默认值为0或false,然后在您的应用程序中,一旦用户打开消息,将dismissed的值更新为1,我看到其他系统添加了一个名为Mark的按钮,以确保用户读取it.
  • For #2:,您可以使用这个字段dismissed只向用户显示那些尚未被用户拒绝的消息,因为这些消息尚未被用户打开和读取。

因此,通知表看起来类似于:

代码语言:javascript
复制
[Notification] 
(
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Message] [varchar](max) NOT NULL,
    [DateCreated] [datetime] NOT NULL,
    [CreatedById] [int] NOT NULL,
    [Readed] bit Default(0)
)

您将需要一个额外的表来存储每个用户的通知,

代码语言:javascript
复制
dbo.UserNotifications
(
    UserId, NotificationId
)

在您的应用程序中,当用户登录到系统时,使用readed = 0检查通知。

票数 0
EN

Stack Overflow用户

发布于 2012-03-05 14:19:39

您可以通过创建包含用户和消息的表来连接这两个任务。当管理员发送消息时,您会为每个现有的(活动?)创建条目。用户。如果您不需要历史记录,您可以在用户拒绝通知后删除消息;否则,您应该添加“拒绝”一栏。通过这种方式,您不需要复杂的查询就可以获得需要呈现给用户的通知。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9568026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档