Ah! Verstanden! Irgendwelche Ideen, wie das aussehen könnte? Wir suchen immer nach Möglichkeiten, es hier einfacher zu machen ![]()
Aber sicher! So etwas wie das Northwind-Datenmodell (bekannt aus MS Access!) wäre brillant. Es gibt vielleicht sogar ein Tool, das eines generieren kann, indem es das Postgres-Schema untersucht.
Kannst du das so teilen, als würdest du mit einem Anfänger sprechen? Zum Beispiel:
- Wobei würde das Hinzufügen helfen?
- Wie würdest du erwarten, das zu sehen, wenn es hinzugefügt wird? Wie würde es aussehen?
Ich nehme im Grunde deinen Vorschlag und bitte um weitere Details (so viele du geben kannst
), damit wir die Erfahrung für den nächsten Datenarchitekten, der vorbeikommt, verbessern können. Ich habe keinen Hintergrund in Daten, daher wird dein detaillierter Vorschlag hilfreich sein ![]()
Haha Osioke,
Ein sehr fairer Einwand! Berührt…
Die meisten Leute, die mit Datenbanken arbeiten (nicht nur Datenarchitekten! Auch Entwickler!), finden es sehr hilfreich, eine Art Datenmodell zu haben, das ihnen zeigt, wie die verschiedenen Tabellen miteinander verbunden sind.
Nehmen wir zum Beispiel meine Abfrage ;), ich benötigte mehrere Informationen über einen Benutzer – ich benötigte Informationen über einen Benutzer, der:
- in einer bestimmten Gruppe war (oder nicht war)
- ein Thema gelöst hatte
- innerhalb eines bestimmten Datumsbereichs
Um das oben Genannte zu beantworten, benötige ich die Benutzertabelle, die Tabelle für Benutzeraktionen und die Gruppentabelle. Ein Datenmodell hätte mir gezeigt, dass ich einen Benutzer über id/user_id mit einer Benutzeraktion und über deren primary_group_id/id visuell mit einer Gruppe verknüpfen kann.
Es hilft, nicht nur zu visualisieren, welche Daten verfügbar sind, sondern auch, wie man sie verknüpft, insbesondere wenn einige langwierige Abfragen im Spiel sind.
Ja, man könnte jede einzelne Tabelle im Daten-Explorer durchklicken, um herauszufinden, welche Felder verfügbar sind, und sie aufschreiben, damit man sie nicht vergisst, aber ein Datenmodell ist für einige von uns vielleicht etwas menschlicher ![]()
Ah! Jetzt habe ich es verstanden! ![]()
Ich bin nicht technisch versiert, daher war das für mich nicht klar. Aber ich sehe den Bedarf, also ja. Ein Datenmodell wäre hilfreich. Ich schaue mal, was ich tun kann. ![]()
In der Zwischenzeit habe ich diese Konversation in ein neues Thema in unserer Kategorie Contribute > Site feedback verschoben, damit die anderen Diskussionen übersichtlich bleiben.
Das wäre fantastisch, danke!
Ich habe also mit dem Team gesprochen, und aus vielen Gründen wäre das nicht einfach. Wir haben den Beitrag auch nach Contribute > Feature verschoben, da dort besser ersichtlich ist, worum es dabei geht.
Derzeit verwenden wir, die wir hauptsächlich mit internen Daten arbeiten, meist die Modelle, die im Quellcode verfügbar sind:
Ich habe mir auch das Northwind-Datenmodell angesehen:
Das ist definitiv leicht zu verstehen und auf ein Blatt Papier oder einen Bildschirm zu fassen. Insgesamt 13 Tabellen.
Im Vergleich dazu hat Discourse mit über 180 Tabellen eine ganze Menge mehr. Die Visualisierung wäre … eine Reise. Vor allem, weil es auch Tabellen von Plugins gibt (und diese von Installation zu Installation variieren) sowie Daten in *_custom_fields-Tabellen, die ebenfalls einbezogen werden sollten, wenn man wirklich ein vollständiges Bild erhalten möchte.
Außerdem können wir aufgrund der Art und Weise, wie unsere Datenbank konzipiert ist, die meisten Tools für Datenmodellierung nicht verwenden; wir müssten eines finden, das mit ActiveRecord-Modellen funktioniert. Und ich denke, das macht es auch schwierig. All diese Diskussionen über Daten liegen mir völlig fern. ![]()
Das heißt jedoch nicht, dass wir das nicht tun möchten; es ist nur eine Anmerkung. Ich würde gerne Vorschläge von Ihnen oder anderen hören, wie wir das verbessern könnten.
![]()
Es ist wirklich nicht sehr nützlich, da die schiere Größe, das Fehlen von Fremdschlüsseln und wir dem RDMS nur sehr wenig Logik überlassen, es schwierig macht, die Discourse-Datenbank ohne das Lesen des Discourse-Quellcodes zu verstehen.
Aber wenn Sie wirklich eine benötigen, kann RubyMine sie für Sie generieren.
Sie können eines mit Beziehungen mit rails-erd generieren: GitHub - voormedia/rails-erd: Generate Entity-Relationship Diagrams for Rails applications
Ich bin mir aber nicht sicher, wie nützlich das ist.
@lju Ich hoffe, all unsere Erklärungen helfen hier, besonders mit dem zusätzlichen Kontext. Ich werde dies in ein oder zwei Tagen schließen. Wenn Sie immer noch der Meinung sind, dass Sie zusätzliche Details benötigen, können Sie diese gerne erfragen.
Hallo @osioke,
Entschuldigen Sie die verspätete Antwort, ich hatte viel zu tun.
Ich habe einige Ideen, was hilfreich sein könnte – wenn Sie mir ein paar Tage Zeit geben, werde ich etwas ausarbeiten.
Viele Grüße,
Lju
Großartig! Ein paar Tage hast du jetzt
danke, dass du dem so viel Aufmerksamkeit schenkst.
Hallo zusammen,
Mein Argument wäre also, dass ein Datenmodell nützlich wäre, wir aber nicht unbedingt alle Tabellen aufnehmen müssen. Ich vermute, dass es wahrscheinlich die „wichtigen“ 15-25 Tabellen gibt, die 90 % aller Abfragen verwenden/nach denen die Leute suchen. Tatsächlich gibt es, wenn man sich die verschiedenen verfügbaren Tabellen ansieht, wahrscheinlich eine Reihe von Datenmodellen, die basierend auf den Arten von Abfragen/Daten, die Sie untersuchen möchten, erstellt werden könnten.
Ich kann in den nächsten Tagen einen Versuch unternehmen, die Tabellen zusammenzustellen, von denen ich glaube, dass sie am häufigsten abgefragt werden – dies wäre keine umfassende Recherche, nur ein Schuss ins Blaue. Ich bin sicher, dass die verschiedenen Fragen, die in der Kategorie „Data Explorer“ gestellt werden, auch ein Licht auf die beliebten Tabellen werfen werden.
Es könnte auch ein weiteres Diagramm geben, das „Zonen“ von Interesse darstellt, um die Navigation durch verschiedene Teile der verfügbaren Daten zu erleichtern.
Macht das Sinn?
Viele Grüße,
Lju
Der Daten-Explorer listet bereits die 9 wichtigsten Tabellen zuerst im UI-Panel für die Abfragebearbeitung auf, und Sie können die Spaltenstruktur und -typen aller Tabellen mit einem Klick sehen:
Könnten wir diese 9 Tabellen also in ein vereinfachtes Datenmodell umwandeln?
![]()
Sicher, teilen Sie die Ergebnisse mit!
verdammt, das ist riesig; eines der größten DB-Schemas, die ich online gesehen habe
wurde das mit https://dbdiagram.io erstellt? Können Sie die öffentliche URL des Diagramms teilen?
Ich bin mehr an den Beziehungen und Verbindungen zwischen diesen Tabellen interessiert
users,
user_options,
api_keys,
user_api_keys,
user_auth_tokens,
user_auth_token_logs,
notifications
danke
sehr hilfreich, aber es wäre großartig, eine teilbare URL zu haben, damit wir die Tabellenbeziehungen und auch die Primär-/Fremdschlüssel in den Tabellen sehen können
Gibt es 1:1-Beziehungen im Schema? Ich würde es gerne wissen, insbesondere zwischen den Tabellen users und user_options
Hat jemand Lust, bei den Beziehungen zwischen diesen Tabellen zu helfen? Aus dem Schemadiagramm
users,
user_options,
api_keys,
user_api_keys,
user_auth_tokens,
user_auth_token_logs,
notifications
Ich würde gerne wissen, ob es 1-zu-1-Beziehungen gibt.
Ich wäre dankbar.. danke
Es sind meistens 1-N, da Benutzer mehrere Benachrichtigungen, Authentifizierungstoken usw. haben.
user_options ist 1-1.

