Structure de base de données pour le Web Système de Messagerie
Je veux faire un système de messagerie web comme facebook ont. Je pense déjà de nombreuses solutions pour la structure de base de données, mais ne savez pas quelle est la meilleure pratique pour elle. J'ai deux solutions, la première est l'utilisation de deux table de, le deuxième est à l'aide de trois de la table, mais faire un cycle dans le DÉPARTEMENT.
Première: Deux Table, où le message de la table se référer à lui-même
user
----------
id
name
message
--------------
id
from_id
to_id
message_id --> refer to this table itself, to make me know which message is the topic
subject
content
time
status --> inbox, outbox, archive
read --> read, unread
Deuxième: Trois de la Table, mais faire un cycle de erd
user
----------
id
name
message_header
--------------
id
from_id
to_id
subject
status --> inbox, outbox, archive
time
message
--------
id
message_header_id
content
time
read --> read, unread
author_id
Personnellement, j'aime cette structure, parce que c'est seulement en utiliser un en-tête de message et de nombreux message (le contenu). Le author_id lui-même ne peut pas être supprimé car j'en ai besoin pour savoir si le message est sur le côté gauche (en tant qu'expéditeur) ou à droite (en tant que récepteur). Ce système est juste pour deux personne système de messagerie.
En gros, cela de deux table est la même, mais quelle est la meilleure pratique à mettre en œuvre ce système de messagerie? Je vous remercie avant.
OriginalL'auteur deka | 2013-06-27
Vous devez vous connecter pour publier un commentaire.
Après l'apprentissage de la manière difficile (temps auparavant, lors de mon dernier projet...), je peux vous conseiller pour séparer et organiser les choses autant que possible. Auto-relation est une bonne chose de ne pas être à proximité, lorsque c'est possible (il y en a de rares exceptions près). La conception de vos classes de première instance; de construire ensuite une base de données dans laquelle les choses s'ajustent bien, mais garder les choses simples comme ils devraient l'être. Ma préférence est... mieux dessiné que dit,
Vous préférez peut-être voir le code. C'est ici.
Une requête possible à la liste des messages à partir d'un certain en-tête serait
Ce qui concerne,
Leonardo
L'utilisation de réponse de l'ordre (supérieur id premier) peut-être un peu moins cher, mais vous pouvez envisager d'horodatage de la commande (bien sûr, avec un indice approprié) pour en savoir plus sympathique au cas où, disons, quelqu'un répond, sans internet et il faut un certain temps pour envoyer efficacement le message de la base de données. Cela dit, à vous de décider :>
Qu'est-ce que l'utilisation de "is_from_sender" attribut?
Il vous indique si le message de l'auteur est celle spécifiée dans le tableau
header
avecid=from_id
ouid=to_id
.C'est une bonne sql pratique parce que quand vous avez un autre en-tête, vous n'avez pas de double magasin de de et pour les id, ce n'est pas seulement bon pour l'amour séparant de lui-même.
OriginalL'auteur leonardo_assumpcao