Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 消息传递系统数据库模式_Mysql_Database_Schema_Messaging_Message - Fatal编程技术网

Mysql 消息传递系统数据库模式

Mysql 消息传递系统数据库模式,mysql,database,schema,messaging,message,Mysql,Database,Schema,Messaging,Message,我试图用PHP和MySQL实现一个消息传递系统,但在决定如何处理表和查询时遇到了一些问题 对于一个允许多个参与者参与的系统,什么是最好的方法?我想我可能需要3个表(除了一个users表) 差不多 Conversation ------------ id Messages -------- id conversation_id from_id subject message from_timestamp Participants ------------ conversation_id use

我试图用PHP和MySQL实现一个消息传递系统,但在决定如何处理表和查询时遇到了一些问题

对于一个允许多个参与者参与的系统,什么是最好的方法?我想我可能需要3个表(除了一个users表)

差不多

Conversation
------------
id

Messages
--------
id
conversation_id
from_id
subject
message
from_timestamp

Participants
------------
conversation_id
user_id
last_read_timestamp
按照设置的方式,我必须按时间戳检查读取的消息,而不是勾选每条消息。我还可以随时添加参与者

你们觉得怎么样


提前谢谢。

我没看到什么好抱怨的:)我可能会将上次修改日期缓存在对话表中,以便快速显示“未读”对话列表。每次在对话中发布消息时,此日期都会更新。

我会将主题字段放在对话表上。把它放在每一条信息上看起来是多余的。
此外,我还将会话的创建时间和作者用户id保存在其表中

@ChrisWalton-“发件人id”将是消息发件人的用户id。许多参与者可能属于一个对话,但一条消息可能只属于一个参与者(或前参与者-仍在思考如何做到这一点)。对话的所有参与者都可能看到与其相关的消息。Cheers我认为from_id是作者的用户id。如果我理解正确,“参与者”表将对话链接到用户表(此处未显示),并存储用户上次阅读此对话的时间。希望了解您如何处理一个参与者的问题!这是我见过的更好的表模式之一。