gpt4 book ai didi

具有多个收件人表结构的 PHP/MySQL PM 系统?

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:50 25 4
gpt4 key购买 nike

我目前正在为一个网站开发一个 PM 系统,其中用户必须能够将 PM 发送给多个收件人。当然,这意味着如果消息已发送给用户 A、B 和 C,用户 C 可以删除该消息,而用户 A 和 B 则不会。问题是对于这样一个系统最好的数据库表结构是什么,当然要避免一条消息的多个副本。目前我想到了这个表结构:

msgid (int),
parentid (int),
timestamp (timestamp),
senderid (int),
recipients (varchar),
subject (varchar)
text (text),
deletedby (varchar),
readby (varchar)

这将是唯一的表格。线程是根据 parentid 创建的(如果没有 parentid,则消息是线程中的第一个),并按时间戳排序。收件人以逗号分隔存储在一列中,并使用 WHERE userid IN (msg.recipients) 检查。 deletedby 列包含已删除邮件的所有用户 ID(以逗号分隔),就像 readby 列一样。

但是我不确定这是否是一个理想的表结构。在我开始编码之前,我想听听您对改进的想法。

最佳答案

在单个字段中存储 CSV 值总是一个糟糕的设计,只会给您带来极大的痛苦。在将系统推出生产之前,现在规范化设计:将收件人列表放入子表中,并在子记录上放置一个“已删除”平面以指示该特定收件人是否删除了消息:

recipientsTable

messageID int -> foreign key to messages table
recipientID int -> foreign key to users table
read bit - t = read, f = unread
deleted bit - t = deleted, f = still there.
readON date - timestamp of when recipient read message

...或类似的东西。

关于具有多个收件人表结构的 PHP/MySQL PM 系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8039758/

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