在SQL中创建非常基本的消息传递模式

时间:2011-08-08 15:05:31

标签: sql message

这就是我所拥有的:

create table Recipiente
(
RecipienteId int primary key identity(1,1),
MensajeId int foreign key references Mensaje(MensajeId)
)

create table Mensaje
(
MensajeId int primary key identity(1,1),
EnviadorId int foreign key references taJugador(jugCodigo), /* Sender */
Detalle nvarchar(1024) not null /* The actual message. */
)

我需要能够同时向多个人发送消息,因此我的问题就在于此。请注意,这两个表之间目前没有任何关系,因为我不知道如何继续。

有关完成此简单架构的任何建议吗?

3 个答案:

答案 0 :(得分:0)

您可以创建一个表来映射如下所示的一对多关系:

Table: Mensaje_Recipiente
Column 1: MensajeId
Column 2: RecipienteId

主键位于两个ID上。假设消息5发送给用户4,5和8,然后您将(5, 4)(5, 5)(5, 8)添加到Mensaje_Recipiente表。

它允许您轻松找到用户收到的邮件(SELECT MensajeId FROM mensaje_recipiente WHERE RecipienteId = ?)或查找邮件的收件人(SELECT RecipienteId FROM mensaje_recipiente WHERE MensajeId = ?),您可以通过加入来获取所需的所有信息他们各自的表格。

有了这个,您不再需要MensajeId表格中的Recipiente

答案 1 :(得分:0)

你需要一个联结表..从Recipiente表中删除MensajeId,并添加一个像这样的新表:

Recipiente_Mensaje
RecipienteId int foreign key references Recipiente(RecipienteId)
MensajeId int foreign key references Mensaje(MensajeId)

两列都是主键的一部分..

答案 2 :(得分:0)

创建表格,如:

Messages
----------------------
Id (primary key)
SenderId
RecipientId
Message (you could replace this by an id and read it from an external table)

Peoples
----------------------
Id (primary key)
... some other data ...

然后,对于从发件人到收件人的每封邮件,添加Messages的条目,引用Peoples中的人员以及消息。