2011-08-04 57 views
1

我有三个不同的用户表,我想知道什么是最好的方式来创建一个私人消息传递系统,他们沟通。私人消息系统与3个不同的用户表

我试图用简单的分贝方案创建:

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

但由于三个用户表,其中表中的用户ID可以具有ID = 1个另一个用户在表B的并发症即刻arised可以有ID = 2

有关如何创建更好的DB方案的任何想法?谢谢

+0

你能提供有关的3个用户表的信息吗? –

+0

另外,为什么你有三个不同的用户表? – ashurexm

+0

一个是针对学生,另一个是教师,另一个是管理员......因为不同的认证方式,不同的关联模型等而设计的这种方式... – AlexBrand

回答

1

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

例如为:

User1 3 
User1 5 
User2 3 
... 
+0

我会试试这个。 – AlexBrand

0

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

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

0

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