代码之家  ›  专栏  ›  技术社区  ›  Buhake Sindi Tesnep

在数据库中创建消息传递“system”(尤其是mysql)

  •  1
  • Buhake Sindi Tesnep  · 技术社区  · 15 年前

    对不起,我担心:

    我在MySQL中成功创建了一个表:

    CREATE TABLE IF NOT EXISTS MESSAGE
    (
        MESSAGE_ID          BIGINT NOT NULL AUTO_INCREMENT      
        ,AUTHOR_ID          VARCHAR(30) NOT NULL
        ,TITLE              VARCHAR(100) NOT NULL
        ,MESSAGE            VARCHAR(4095) NOT NULL
        ,UNREAD_FLAG            BOOLEAN NOT NULL DEFAULT TRUE                   
        ,CREATION_DATE          TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        ,DATE_LAST_MODIFIED     TIMESTAMP NULL
    
        ,PRIMARY KEY (MESSAGE_ID)
        ,FOREIGN KEY (AUTHOR_ID) REFERENCES USER (USR_ID)
    );
    

    如您所见,由于1个或多个收件人可以接收同一封邮件,因此没有对谁接收邮件的引用。

    1)我如何实现消息线程“模型”,以便如果有一条消息发送给多个用户,那么收件人可以回复该消息并跟踪收件人回复的消息?例如,我已经给5个朋友发了一条关于一个聚会的信息,他们都回复了,我如何在回复信息链接上保留原始信息的记录?此外,收件人还可以响应响应的消息,创建对响应消息的响应,因此最终,它将是响应消息的树型结构。

    2)如何创建一个表,让多个收件人接收同一封邮件?我有一个想法,用recipient_id(引用用户表)和message_id(message id)对创建一个表。那有效率吗?我问的原因是,如果200个人收到相同的消息,那么将有200个用户ID表,消息ID对…

    再次感谢,和平!

    另外,我已经实现了数字2),所以我想这不会是个问题。

    1 回复  |  直到 15 年前
        1
  •  0
  •   eliah    15 年前
    1. 我不明白你的问题。

    2. 你的想法是做这件事的正常方式。您将使用recipient_id和message_id设置一个表,并对其运行查询,以确定(例如)特定用户拥有什么消息。根据应用程序的需要,您可能还需要在此表中存储其他数据,如用户是否已阅读消息等。