Speichern von chat-Nachrichten in einer MySql-Tabelle
Den letzten paar Wochen habe ich gearbeitet, auf eine web-basierte chat-client-Anwendung, und ich habe eine Frage bezüglich speichern von chat-Nachrichten in einer MySql-Tabelle. Ich erstellte eine Tabelle namens Gespräche und für jetzt es besteht aus 5 Feldern;
user1ID, user2ID ,Nachrichten(mediumtext), status, timestamp.
Wenn ich testen Sie das chat-Programm funktioniert alles einwandfrei, aber das problem ist, jedes mal, wenn ein Benutzer etwas schickt, bin ich anfügen, dass der Wert in meine 'Nachrichten' - Feld als eine neue Zeile. Und wenn es um das abrufen der Nachricht, mein sql-code liest die ganze Sache und zeigen Sie es an den entsprechenden Benutzer. Daher ist die Menge der Daten Linear zu erhöhen, indem die Menge von hinzugefügtem text in das Nachrichten-Feld.
Meine Frage ist, gibt es eine Möglichkeit, WÄHLEN Sie nur die letzten Zeilen aus einem text-Feld oder vielleicht eine andere Lösung, die reduziert die Menge der übertragenen Daten.
- Sie hängen Sie Ihre Botschaft auf ein vorhandenes Feld in dem nur eine Zeile in einer Tabelle??? O_O
- Ja leider ich 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benötigen Sie eine bessere db-schema - mehr relational. Dadurch erhalten Sie einige andere Verbesserungen (Passwort-geschützte chats und multi-user-chat zu ein paar Namen)
Hier ist man auf eine NOTFALLDISKETTE für die db.
5/6/2016 Bearbeiten
Hinzufügen von DDL mit (hoffentlich) verbesserter Feld-Typen und Namen
Warum nicht eine Tabelle, Struktur wie dieser:
chats
chatContent
Diese Weise Ihre Daten ist viel einfacher zu suchen und zu organisieren. Was zum Beispiel, wenn Sie wollten eine bestimmte Nachricht gesprochen, die auf X-Zeit? oder Sie wollen sich alle chat-Nachrichten mit X-status?
Trennen die Daten in 2 Tabellen sollten sehr viel schöner und ordentlicher.
Betrachten Sie die Speicherung eine Nachricht pro Zeile in der Tabelle:
id, user1id, user2id, Nachricht, status, timestamp
wobei id ein autoincrement-Spalte.
So, hier ist ein anderes schema.Ich würde beschreiben, eine Funktion wie die folgende:
user_group_chat
ich die Spalteuser_id
,group_id
undcreated_at
als Primärschlüssel. Die Spalteuser_id
ist auch ein Fremdschlüssel der Tabelleusers
aber auf LÖSCHEN, werden die KASKADEN-undgroup_id
ist auch ein Fremdschlüssel der Tabellegroups
und auf die Schaltfläche LÖSCHEN KASKADE zu. Und der Grund für die Herstellung dieser als Fremdschlüssel sind einfach. Wenn ein Benutzer oder eine Gruppe nicht vorhanden ist, sollten Sie auch Weg.user_user_chat
ich die Spaltefrom_user_id
,to_user_id
undcreated_at
als Primärschlüssel zu. Kurz gesagt, es ist das Verhalten das gleiche wie Tabelleuser_group_chat
zu. Es ist gerade diese Tabelle ist zuständig für das speichern eines Chats zwischen einem Benutzer und einem Benutzer.