2016-07-24 16 views
0

Ich versuche, ein Gespräch mit Dialogfunktion als mein Lernprojekt zu machen. Jeder Benutzer sollte in der Lage sein, Nachrichten an einen anderen Benutzer zu schreiben und Antworten von diesem Benutzer zu erhalten, und niemand sonst sollte Zugang zu diesem Dialog haben. In MySQL habe ich Tabelle user mit ID, Login, Passwort und Privilegien, Tabelle message mit ID, Autor (FK zu Benutzer-ID), Nachrichtentext, Zeitpunkt der Post und Dialog-ID (FK), und auch Tabelle dialogue erstellt mit id, FK zu einem Benutzer, FK zu einem anderen Benutzer und zusätzliche Spalten mit einigen Parametern. Ich möchte meinen Chat so gestalten, dass ich alle Nachrichten von zwei bestimmten Benutzern mit nur einer Abfrage empfangen kann, aber in der obigen Realisierung muss ich zwei Spalten überprüfen, um zuerst einen Benutzer zu finden, und dann alle Einträge prüfen Benutzer seinen Gesprächspartner finden. Nur diese Abfrage gibt mir einen Dialog PK zurück, mit dem alle Nachrichten abgerufen werden können. Ich denke, diese Erkenntnis ist völlig falsch, aber ich kann den Weg nicht finden, um es zu beheben. Ich habe versucht, Dialog-ID an Tabelle user anzuhängen, aber das machte meine Basis noch komplizierter. Was soll ich tun?Zwei FK aus der gleichen Tabelle mit der gleichen Bedeutung

+1

zeigen Sie Ihr Schema, weil das obige wenig hilft – Drew

+0

Post es als Text mit einem [Bearbeiten] auf die Frage. Die meisten von uns wechseln nicht mit einem Klick zu einem zufälligen Server: p – Drew

+0

Aber push ist kein zufälliger Server. http://puush.me/ –

Antwort

0

Hier ist mein erstes Schema: http://puu.sh/qdLMw/f9acde605c.png Aber ich habe eine andere Tabelle, die sowohl Gesprächspartner und Dialog-ID enthält. Wenn ein Benutzer eine Nachricht an einen anderen Benutzer schreibt, wird in dieser Tabelle eine Abfrageanforderungszeile angezeigt, in der der aktuelle Benutzer als Absender und sein Gesprächspartner als Ziel festgelegt wurde, und eine Dialog-ID aus dieser Zeile abgerufen wird. Wenn es keine solche Linie gibt, führt das System eine andere Abfrage aus, die Sender und Ziel an ihren Plätzen wechselt. Und wenn das Ergebnis wieder leer ist, wird ein neuer Dialog mit zwei Zeilen in der Tabelle der Gesprächspartner erstellt, die zwei Benutzer miteinander verbinden. http://puu.sh/qdORJ/2122558f64.png Es sieht nur ein bisschen besser für mich aus, und wenn jemand eine noch bessere Antwort hat, bitte sagen Sie mir.

Verwandte Themen