我有以下有关我创建的消息传递应用程序的数据库架构: -
表名称:-conversation_threads
+-----------------+-------+---------+
| conversation_id | label | members |
+-----------------+-------+---------+
| 1 | TEST | 1,2 |
+-----------------+-------+---------+
| 2 | XYZ | 4,1 |
+-----------------+-------+---------+
表名称:-messages
+------------+----------------+-----------+-----------------+---------------------+
| message_id | message | sender_id | conversation_id | created_at |
+------------+----------------+-----------+-----------------+---------------------+
| 1 | Hello | 1 | 1 | 2017-09-12 09:00:00 |
+------------+----------------+-----------+-----------------+---------------------+
| 2 | Hi | 2 | 1 | 2017-09-12 09:02:00 |
+------------+----------------+-----------+-----------------+---------------------+
| 3 | Hey! | 4 | 2 | 2017-09-12 08:16:00 |
+------------+----------------+-----------+-----------------+---------------------+
表名称:-message_users
+----------+-------------+---------+--------+
| mu_id | message_id | user_id | status |
+----------+-------------+---------+--------+
| 1 | 1 | 1 | READ |
+----------+-------------+---------+--------+
| 2 | 1 | 2 | UNREAD |
+----------+-------------+---------+--------+
| 3 | 2 | 2 | READ |
+----------+-------------+---------+--------+
| 4 | 2 | 1 | UNREAD |
+----------+-------------+---------+--------+
| 5 | 3 | 4 | READ |
+----------+-------------+---------+--------+
| 6 | 3 | 1 | UNREAD |
+----------+-------------+---------+--------+
此模式与一对一的消息传递相当良好。
,但现在我想在一次对话中介绍2个以上的用户,以便所有3或4个或更多的人都可以协作和讨论事物。
我面临的问题是,如果我在对话线程中的members
字段中添加了另一个用户 - 他可以访问以自开始以来该特定对话线程中存在的所有消息 - 尽管他在对话中添加了较晚。
请为我提供有关如何解决此特定问题的解决方案。
希望我的问题不会太广泛。
如果我了解您的模式关系,那么您只能将成员像您一样
+-----------------+-------+---------+
| conversation_id | label | members |
+-----------------+-------+---------+
| 1 | TEST | 1,2,3,4 |
+-----------------+-------+---------+