【问题标题】:Designing Notification database table [closed]设计通知数据库表[关闭]
【发布时间】:2016-09-01 13:11:19
【问题描述】:

我在 MySQL 中开发了一个通知表,其中的属性是

1.Created_At DateTime 使用当前时间戳
2.notification_type varchar(100)
3.IS_Read 布尔值
4.我要根据通知类型显示的消息
5.Notification_ID auto_Increment 作为主键
这些是我在通知表中输入的属性

现在我的问题是这些属性是否足够?还是我应该添加更多???通知表中应该有哪些属性?

已编辑
好的,现在我的通知表属性看起来像

1.Created_At DateTime 使用当前时间戳

2.notification_type varchar(100)

3.Status int(2) 在此我将以二进制格式存储通知状态是否显示和读取右边是是否隐藏。

4.我要根据通知类型显示的消息

5.Notification_ID auto_Increment 作为主键

6.User_ID 作为表用户的外键。每当应用某些删除插入或更新时,都会生成通知并将其从该 User_ID 发送给相关用户。

现在我的问题又是一样的
这些属性够了吗??还是我应该添加更多???通知表中应该有哪些属性?

【问题讨论】:

  • 您打算在哪里显示这些通知?在网站上?在移动应用程序中?作为浏览器应用?
  • 第二个问题非常广泛,因为它是一个设计问题。
  • 我正在为一个网站制作这个,并希望显示像 facebook 或 stakeoverflow 这样的通知。
  • @Shadow 是的,第二个问题是关于设计,即当有新通知出现时,如何在某些插入或删除操作时向用户显示通知,例如在 stakeExchange 中显示您有 1 个通知

标签: mysql database-design notifications


【解决方案1】:

你的问题太笼统了,很难回答。 但我仍会尝试以更概念化的方式回答它们:

  1. 您应该始终为您的表添加一个主键,尤其是这个表,因为您要更新行,以便设置is_read 字段。在这种情况下你需要某种ID,你可以叫它id,这个ID代表一个通知ID,它应该是一个自增的。
    另外,我会使用status 字段而不是is_read 来指示单个通知的多个状态可能性。
    另外,我认为您的表缺少目标对象,例如与此通知相关的用户。如果是一般通知(对所有用户),您不需要这样做。
  2. 基本上,如果你想在你的网站中显示它,你应该创建一个脚本(在你的例子中是 PHP 脚本)从数据库接收所有未读通知(或所有特定用户)并返回通知消息列表, 长与他们的 ID,JSON 或你喜欢的任何其他格式。然后客户端(例如您网站中的 JavaScript)应调用此脚本以获取要显示的通知列表。您可以设置一个脚本每隔几分钟检查一次以搜索任何新通知(或使用套接字连接,但它作为 POC 更复杂,尤其是对于不熟悉此功能的人)。

我希望这能解释它应该如何工作以及应该从哪里开始的基本概念。
如果您有更具体或技术性的问题,我很乐意为您提供帮助。

祝你好运!


现在你能解释一下关于状态变量的更多信息

状态表示为INT,由您决定。例如,如果您想从通知面板中隐藏您的通知,那么它应该由状态指示。假设您有两种不同的状态类型,隐藏与否,读取与否。在这种情况下,以以下二进制表示创建状态非常经典:11、10、01、00。当二进制表示的左侧表示通知是否已被读取,而右侧表示通知是否已隐藏时。 例如:

  • 状态0,二进制表示00,表示通知已显示,未读取。
  • 状态1,二进制表示01,表示通知被隐藏,不被读取。
  • 状态2,二进制表示10,表示通知已显示,且已被读取。
  • 状态3,二进制表示11,表示通知已隐藏,已被读取。

稍后您可以轻松地使用二元运算符检查每种情况,例如在 JavaScript 中:

var STATUS_READ = 2;
var STATUS_SHOW = 1;

function isRead(status)
{
    return !!(status & STATUS_READ);
}

function isVisible(status)
{
    return !!(status & STATUS_SHOW);
}

还请详细说明您正在谈论的目标对象,它是如何工作的,何时使用以及为什么。还告诉我目标对象数据类型

假设您的系统中有用户。每个用户都有自己的user_id
假设您要为每个用户显示一个通知,因此,您还应该在通知表中附加通知目标用户。
在这种情况下,您应该添加包含用户 ID 的列 user_id,通常表示为 INT,但也可以是 username,即 VARCHAR,这取决于您是如何设计您的用户表。

【讨论】:

  • 我添加了一个名为 notification_ID 的主键,具有自动递增功能。现在你能解释更多关于状态变量及其数据类型的信息吗?还请详细说明您正在谈论的目标对象,它是如何工作的,何时使用以及为什么。还告诉我有关目标对象数据类型的信息。首先,我将制作它的表格,然后开始处理通知面板,如 facebook 或 stackexchange。
  • 说真的?!否决票?
  • 对不起,我的系统出错了,所以你能详细说明我的问题
  • 我会更新我的评论
  • 我们可以通过布尔值 0 或 1 来做到这一点吗? 1 表示已读或 0 表示未读 ok 请详细说明
猜你喜欢
  • 2012-02-04
  • 2014-02-24
  • 2018-05-02
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
相关资源
最近更新 更多