Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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
Php 组消息传递的数据库设计_Php_Mysql_Database Design - Fatal编程技术网

Php 组消息传递的数据库设计

Php 组消息传递的数据库设计,php,mysql,database-design,Php,Mysql,Database Design,只是一个关于向群组发送消息(如whatsapp群组消息)的最佳方式的问题 我将每个组的成员保存到一个单独的数据库表中,一旦用户向组发送消息,它就会从此表中检索用户。我有点被第二部分卡住了: 在我看来,有三种方法 将邮件插入整个组的数据库中。根据用户所属的组将消息发送回不同的用户 在数据库中按组的每个用户插入消息。因此,循环成员并为每个成员插入。与第一种可以跟踪下载、读取和删除状态的方法相比,这种方法具有优势 为邮件创建一个表,为邮件收件人链接创建一个表。但我不确定查询如何以最佳方式为一组用户检索

只是一个关于向群组发送消息(如whatsapp群组消息)的最佳方式的问题

我将每个组的成员保存到一个单独的数据库表中,一旦用户向组发送消息,它就会从此表中检索用户。我有点被第二部分卡住了:

在我看来,有三种方法

  • 将邮件插入整个组的数据库中。根据用户所属的组将消息发送回不同的用户
  • 在数据库中按组的每个用户插入消息。因此,循环成员并为每个成员插入。与第一种可以跟踪下载、读取和删除状态的方法相比,这种方法具有优势
  • 为邮件创建一个表,为邮件收件人链接创建一个表。但我不确定查询如何以最佳方式为一组用户检索所有数据(下载、读取等)。在单个查询中是否可以实现这一点
  • 有人知道最好的方法是什么吗?我可以想象方法2会很快填满数据库,但是方法1没有跟踪消息状态的能力

    目前我使用的是方法1,但我遇到了一个问题,即当用户删除一条消息时。它仍然会在其他设备上返回,因为无法为组消息设置特定的已删除标志

    有人知道像telegram、whatsapp等应用程序是如何做到这一点的吗?方法2会在以后发送数百万条消息时出现问题吗

    问候,


    罗恩

    我会像这样把它分开

    消息

    id,消息,所有者id,已删除

    身份证,姓名

    消息组

    消息id、组id

    用户组

    用户id、组id

    这样,您就不需要向该组中的所有用户添加消息。插入新邮件时,首先将其插入
    邮件
    ,捕获id并将其插入带有邮件id和组id的
    邮件组
    。要获取组的邮件,只需加入邮件组和邮件,就可以了。当然,您还需要加入用户表以捕获谁编写了这些消息