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
Antwort
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.
- 1. Subtrahieren zwei SUMME aus der gleichen Tabelle
- 2. Hibernate mit zwei Fremdschlüsseln aus der gleichen Tabelle-Annotation
- 3. SQL - Wie zwei Zeilen aus der gleichen Tabelle Stich
- 4. Wie zwei Abfragen aus der gleichen Tabelle zu kombinieren
- 5. dplyr lookup aus der gleichen Tabelle
- 6. Mocking zwei Methoden aus der gleichen Klasse
- 7. Join Tabelle zweimal - auf zwei verschiedenen Spalten der gleichen Tabelle
- 8. Zwei schließt sich auf der gleichen Tabellen
- 9. Ersetzen Null Werte mit Daten aus der gleichen Tabelle
- 10. Inner join mit der gleichen Tabelle
- 11. Django - zwei Projekte mit der gleichen Datenbank?
- 12. Angular2 - zwei Komponenten mit der gleichen Route
- 13. aktualisieren Spalten mit Datum aus der gleichen Tabelle SQL
- 14. MySQL Update-Wert aus der gleichen Tabelle mit count
- 15. legen Sie zwei Arten von Array in der gleichen Tabelle
- 16. mehrere verwaltete Eigenschaften der gleichen Bean, in der gleichen Klasse
- 17. Zeitdifferenz zwischen zwei mal in der gleichen Tabelle
- 18. MySQL: Wie auf zwei Spalten in der gleichen Tabelle verweisen?
- 19. Vergleichen Sie verschiedene Aufträge der gleichen Tabelle
- 20. Querydsl beitreten auf der gleichen Tabelle mehrmals
- 21. Update-Tabelle mit einer anderen Spalte in der gleichen Tabelle
- 22. Arbeiten mit der gleichen ReactJS Formularkomponente auf der gleichen Seite
- 23. MySql Join auf der gleichen Tabelle
- 24. zwei Datenrahmen von der gleichen Quelle Joining
- 25. Zwei Angular2 Komponenten auf der gleichen Seite
- 26. SQL DELETE aus zwei Tabellen in der gleichen Anweisung
- 27. Oracle Sql füllen Nullwerte aus der gleichen Tabelle
- 28. Teilen Sie aus Tabelle jede Zeile mit der Summe der gleichen Tabelle
- 29. Teilen Sie in der gleichen Tabelle
- 30. Wie ohne sich zwei Indizes aus der gleichen Reihe
zeigen Sie Ihr Schema, weil das obige wenig hilft – Drew
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
Aber push ist kein zufälliger Server. http://puush.me/ –