设计通知数据库表

时间:2016-09-01 13:11:20

标签: mysql database-design notifications

我在MySQL中开发了一个属性为

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

现在我的问题是,这些属性是否足够?或者我应该添加更多???通知表中应该包含哪些属性?

被修改
现在我的通知表属性看起来像

1.Created_At DateTime使用当前时间戳


2.notification_type varchar(100)

3.Status int(2)在这个I&#l; ll存储通知状态,它显示并以二进制格式读取或不读取[00,01,10,11] =二进制重复表示的左侧表示通知是否已经阅读,右侧是否隐藏。

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

5.Notification_ID auto_Increment作为主键

6.User_ID作为表用户的外键。无论何时应用某些删除插入或更新,通知都会生成并通过此User_ID将其发送给相关用户 现在我的问题再次相同 这些属性是否足够?或者我应该添加更多???通知表中应该包含哪些属性?

1 个答案:

答案 0 :(得分:2)

你的问题过于笼统,很难回答。 但我仍会尝试以更概念化的方式回答这些问题:

  1. 为了设置is_read字段,您应该始终向表中添加主键,特别是对于此表,因为您要更新行。在这种情况下,您需要某种ID,您可以将其称为id,此ID将代表通知ID,并且应该是自动增量。
    另外,我会改为status字段而不是is_read来表示单个通知的几种状态。
    此外,我认为您的表缺少目标对象,例如与此通知相关的用户。如果是一般通知(对所有用户),则不要这样做。
  2. 基本上,如果您想在网站中显示它,您应该创建一个脚本(在您的情况下为PHP脚本),从DB接收所有未读通知(或所有特定用户)并返回通知消息列表,长期带有ID,JSON或您喜欢的任何其他格式。然后客户端(例如,在您的网站中的JavaScript)应该调用此脚本以获取要显示的通知列表。您可以设置一个脚本来检查每隔几分钟来搜索任何新的通知(或使用套接字连接,但它作为POC更复杂,特别是对于那些刚接触过它的人。)
  3. 我希望这能解释它应该如何运作的基本概念,以及你应该从哪里开始 如果您有更具体或技术性的问题,我很乐意提供帮助。

    祝你好运!

      

    现在可以解释一下状态变量

    的更多信息

    状态表示为INT,由您决定。例如,如果要隐藏通知面板中的通知,则应通过状态指示。让我们假设您有两种不同的状态类型,隐藏与否,以及是否读取。在这种情况下,以下面的二进制表示形式创建状态是如此经典:11,10,11,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 ,这取决于你是如何设计用户表的。