具有3个不同用户表的私人消息传递系统


Private Messaging System with 3 different users tables

我有三个不同的用户表,我想知道为他们创建一个私人消息传递系统的最佳方法是什么

我尝试用一个简单的db方案创建它:

id (int)
from (int)
to (int)
subject (varchar)
message (text)
timestamp (timestamp)
read (bool)
deleted_to (bool)
deleted_from (bool)

但是由于三个用户表,其中表A中的用户ID可以是ID = 1,表B中的另一个用户可以是ID = 2,因此立即出现了复杂性

关于如何创建一个更好的DB方案有什么想法吗?由于

使用varchar类型的"model"列来保存用户来自哪个用户模型。这样你就可以有几个带有"2"的条目。Model + user_id必须是唯一的。

例如:

User1 3
User1 5
User2 3
...

一个简单的解决方案是为每个用户创建一个散列,并将其存储在一个表中,以唯一地标识任何用户。然后,使用哈希值,找出哪条消息被发送给了哪个用户。

这当然不是一个好主意,因为它会产生不必要的开销,向数据库发送多个查询。如果可能的话,创建一个表来保存所有用户,并使用一对一关系为实体特定的字段创建表。您的身份验证方法将存储在用户表中。在进行身份验证后,您的系统将知道要将哪些表连接在一起以获得所需的数据,如该单用户表中所述。

您可以在表中添加两个字段来存储与fromto相关的"表"

不知道您使用的是哪种类型的数据库,但是这个问题可以通过表继承轻松解决。