Le stockage des messages de discussion à l'intérieur d'une table MySql
Pour les deux dernières semaines, j'ai travaillé sur un basé sur le web de chat application cliente et j'ai une question concernant le stockage de messages de discussion à l'intérieur d'une table MySql. J'ai créé une table appelée conversations et pour l'instant, il se compose de 5 champs;
user1ID, user2ID ,les messages(mediumtext), de l'état, l'horodatage.
Quand je test l'application de chat tout fonctionne parfaitement bien, mais le problème est qu'à chaque fois qu'un utilisateur envoie quelque chose, je suis en ajoutant cette valeur dans mon "messages" champ comme une nouvelle ligne. Et quand il s'agit de récupérer le message, mon code sql lit toute chose et de montrer à l'utilisateur correspondant. Donc, la quantité de données linéairement augmentation de la quantité de texte ajouté dans le champ messages.
Ma question est, est-il possible de SÉLECTIONNER uniquement la dernière ligne d'un champ de texte ou peut-être une autre solution qui permettra de réduire la quantité de données transférées.
Oui je n'ai malheureusement 🙂
OriginalL'auteur akk kur | 2011-12-02
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'une meilleure db schéma plus relationnelle. Cela permettra de vous donner quelques autres améliorations (protégé par mot de passe des chats et des multi-user chat pour n'en nommer que deux)
Ici est une prise sur une disquette de réparation d'urgence pour votre db.
5/6/2016 modifier
L'ajout de DDL avec (je l'espère) l'amélioration de types de champ et les noms de
Wow c'est super vraiment regarder dans celui-ci merci beaucoup
merci de bien vouloir accepter ma réponse. poser plus de questions ici si vous avez besoin. 🙂
Peut-être vous avez déjà un ensemble de requêtes pour ce chat schéma? Il sera très utile.
fait. J'ai mis à jour le schéma légèrement avec ce que j'ai de l'espoir sont des améliorations. Le DDL devrait fonctionner correctement dans mySQL
OriginalL'auteur Tim G
Pourquoi ne pas avoir la structure d'une table comme ceci:
chats
chatContent
De cette façon, vos données est beaucoup plus facile de rechercher et organiser. Par exemple, que faire si vous voulez obtenir un certain message parlé à X temps? ou vous voulez obtenir tous les messages de discussion avec X?
Séparant les données dans 2 tables devrait être beaucoup plus agréable et plus propre.
Il pourrait être intéressant de mettre à jour votre schéma pour vous épargner les maux de tête en bas de la piste.
En fait, vous pouvez obtenir les mêmes résultats si vous combinez les tables dans une. Le combiné table à un Message_id qui est PK et de l'IA et aussi contient un champ de Message_Sent_Timestamp et puisque vous avez un AI vous serez en mesure de savoir à quand remonte le premier message a été envoyé et c'est bien sûr le "startedDateTime". C'est la même chose pour "EndedDateTime" - la dernière ligne de Message_id contiennent cette date. La question que vous devez demander à votre auto est "Est-il important pour un chat de la table ? si oui, quel est donc important dans un chat que j'ai besoin d'elle pour être une table ?"
OriginalL'auteur F21
Pensez à stocker un message pour chaque ligne de la table:
id, user1id, user2id, le message, le statut, l'horodatage
où id est une colonne d'auto-incrémentation.
OriginalL'auteur Joshua Martell
Voici donc un autre schéma.Je dirais que l'une des fins suivantes:
user_group_chat
, je fais de la colonneuser_id
,group_id
etcreated_at
comme CLÉ PRIMAIRE. La colonneuser_id
est aussi une CLÉ ÉTRANGÈRE de la tableusers
mais sur SUPPRIMER sera CASCADE, etgroup_id
est aussi une CLÉ ÉTRANGÈRE de la tablegroups
et sur SUPPRIMER sera CASCADE de trop. Et la raison pour la fabrication de ces comme CLÉ ÉTRANGÈRE sont simples. Si un utilisateur ou un groupe n'existe pas, ils devraient être allé trop.user_user_chat
, je fais de la colonnefrom_user_id
,to_user_id
etcreated_at
comme CLÉ PRIMAIRE. En un mot, c'est le comportement est le même que le tableauuser_group_chat
trop. C'est juste ce tableau est responsable de la conservation d'une conversation entre un utilisateur et un utilisateur.OriginalL'auteur Him Hah