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

时间:2011-08-04 21:37:23

标签: php mysql cakephp

我有三个不同的用户表,我想知道为他们建立私人消息系统的最佳方式是什么。

我尝试使用简单的数据库方案创建它:

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

,因此立即出现并发症。

有关如何创建更好的数据库方案的任何想法?感谢

4 个答案:

答案 0 :(得分:1)

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

e.g:

User1 3
User1 5
User2 3
...

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您可以在表格中添加两个字段,以存储与fromto相关的“表格”。

答案 3 :(得分:0)

Dunno你正在使用什么类型的数据库,但这个问题可以通过table inheritance轻松解决。