2011-08-08 2 views
1

Voici ce que j'ai:Création d'un schéma de messagerie très basique dans 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. */ 
) 

Je dois être en mesure de messages à plusieurs personnes en même temps, donc est là mon problème. Notez qu'il n'y a actuellement aucune relation entre les deux tables, parce que je ne sais pas comment procéder.

Des suggestions pour compléter ce schéma simple?

Répondre

0

Vous pouvez créer une table pour mapper l'un à-plusieurs qui ressemble à ceci:

Table: Mensaje_Recipiente 
Column 1: MensajeId 
Column 2: RecipienteId 

La clé primaire serait à la fois Ids. Disons que le message 5 est envoyé aux utilisateurs 4, 5 et 8, alors vous ajouteriez (5, 4), (5, 5) et (5, 8) à votre table Mensaje_Recipiente.

Il vous permet de trouver les messages qu'un utilisateur a reçu (SELECT MensajeId FROM mensaje_recipiente WHERE RecipienteId = ?) ou de trouver les destinataires d'un message (SELECT RecipienteId FROM mensaje_recipiente WHERE MensajeId = ?) assez facilement et vous pouvez obtenir toutes les informations dont vous avez besoin en vous joignant à leurs tables respectives.

Avec cela, vous n'aurez plus besoin de MensajeId dans la table Recipiente.

0

Vous avez besoin d'une table de jonction .. Retirez le MensajeId de la table Recipiente, et ajouter une nouvelle table comme ceci:

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

Les deux colonnes feraient partie de la clé primaire ..

0

Créer tables comme:

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

Ensuite, pour chaque message d'un expéditeur à un destinataire ajouter une entrée à Messages faisant référence aux personnes de Peoples avec un message.