2011-08-08 58 views
1

一個非常基本的通訊架構下面是我有:在創建SQL

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

您可以創建一個表來映射一個一對多的關係,看起來像這樣:

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 = ?),並且可以通過加入各自的表獲取所需的所有信息。

有了這個,您不再需要Recipiente表中的MensajeId了。

0

你需要結合表..從Recipiente表中刪除MensajeId,並添加一個新的表是這樣的:

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

這兩列是主鍵的一部分。這

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 ... 

然後,對於從發送者到接收者的每個消息從Peoples的條目添加到Messages引用者以及一條消息。