这就是我所拥有的:
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. */
)
我需要能够同时向多个人发送消息,因此我的问题就在于此。请注意,这两个表之间目前没有任何关系,因为我不知道如何继续。
有关完成此简单架构的任何建议吗?
答案 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
中的人员以及消息。