gpt4 book ai didi

database-design - 制作简单的电子邮件/消息数据库架构

转载 作者:行者123 更新时间:2023-12-04 18:46:39 25 4
gpt4 key购买 nike

我正在创建一个小的邮件/消息发送数据库架构。它不是实际的邮件系统,而是带有组织的消息传递门户,具有以下用例:

  • 员工可以将消息广播给所有员工
  • 员工可以向彼此发送消息
  • 员工可以回复收到的消息
  • 员工可以通过在收件箱中的“时间戳”列中看到已回复来查看他/她已回复的邮件(即,收件箱中必须有一个“repliedat”列,该列应显示该邮件被回复时的时间戳,如果没有则应该为空)
  • 当他打开一条特定的消息时,他看到了该消息的一个线程 View ,最近一次显示在顶部。

  • 我的问题
    我如何跟踪特定邮件是否是对任何邮件的回复,在电子邮件中,我相信它已嵌入标题中。我是否保留一个“repliedto” id字段,该字段指向另一条消息,即答复?

    如何创建线程或链条?

    最佳答案

    在数据库表中保留一个指向原始电子邮件的字段。每封电子邮件只能有一个前任(或“父亲”),而任何电子邮件都不能有一个或多个后继(或“儿子”)。因此,最好保留前身是什么的记录。

    这也是创建线程或链的方式:线程中的第一条消息的“父亲”字段将等于0,但随后的消息将在此字段中包含其他值。如果您维护一个称为“线程”或“对话”的字段,这也将有所帮助,从而使您轻松知道哪些消息连接到哪些线程。

    有趣的部分不一定是如何在链中存储链接,而是如何遍历链。

    以下是一个简单的数据模式

    USERS
    id - autoinc
    name - varchar

    THREADS
    id - autoinc
    name - varchar

    STATUSES
    id - autoinc
    name - varchar

    MESSAGES
    msg_id - autoinc
    from_id (fk to users table) - int
    datesent - date
    thread (fk to threads table) - int
    father (pointer to previous message in this thread) - int
    text - varchar

    RECIPIENTS
    id - autoinc
    msg_id (fk to messages table) - int
    to_id (fk to users table) - int
    status (fk to statuses table) - int
    dateread - date

    由于一条消息可以发送给许多人,因此消息和收件人之间存在一对多的关系。每个收件人将在不同的时间阅读邮件,并具有不同的状态(未读,已读,已删除,已删除未读等)。

    关于database-design - 制作简单的电子邮件/消息数据库架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13157049/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com