Ein Datenmodell, das das Durchsuchen der Datenbank erleichtert

Ah! Verstanden! Irgendwelche Ideen, wie das aussehen könnte? Wir suchen immer nach Möglichkeiten, es hier einfacher zu machen :slight_smile:

2 „Gefällt mir“

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.

2 „Gefällt mir“

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 :wink: ), 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 :slight_smile:

2 „Gefällt mir“

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 :slight_smile:

5 „Gefällt mir“

Ah! Wieder erwischt! :sweat_smile:

Ich bin nicht technisch, daher war das für mich nicht klar. Ich sehe aber den Bedarf, also ja. Ein Datenmodell wäre hilfreich. Mal sehen, was ich tun kann. :slight_smile:

In der Zwischenzeit habe ich dieses Gespräch in ein neues Thema in unserer Kategorie Site feedback verschoben, damit die andere Diskussion sauber bleibt.

2 „Gefällt mir“

Das wäre fantastisch, danke!

1 „Gefällt mir“

Ich spreche mit dem Team und das ist aus vielen Gründen nichts, was einfach wäre. Wir haben es auch zu Feature verschoben, da dies mehr zeigt, was dies sein würde.

Derzeit verwenden diejenigen von uns, die intern mit Daten arbeiten, hauptsächlich die Modelle, die im Quellcode verfügbar sind:

Ich habe mir auch das Northwind-Datenmodell angesehen:

Das ist definitiv leicht zu verstehen und passt auf Papier oder einen Bildschirm. Insgesamt 13 Tabellen.

Verglichen mit Discourse haben wir viel mehr Tabellen, über 180 oder mehr. Die Visualisierung davon wäre … eine Reise. Insbesondere da es auch Tabellen von Plugins gibt (und diese sich von Installation zu Installation ändern) und Daten in *_custom_fields-Tabellen, die ebenfalls einbezogen werden sollten, wenn Sie wirklich ein vollständiges Bild erhalten möchten.

Auch aufgrund der Art und Weise, wie unsere Datenbank konzipiert ist, können wir die meisten Werkzeuge für das Datenmodell nicht verwenden. Wir müssten eines finden, das mit ActiveRecord-Modellen funktioniert. Und ich denke, das macht es auch schwierig. All diese Datenkonversationen übersteigen mein Verständnis. :sweat_smile:

Aber das heißt nicht, dass wir das nicht tun wollen. Das ist nur ein Kommentar. Ich würde mich freuen, Vorschläge von Ihnen oder anderen zu hören, wie wir dies verbessern können. :wink: :slight_smile:

6 „Gefällt mir“

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.

14 „Gefällt mir“

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.

10 „Gefällt mir“

@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.

3 „Gefällt mir“

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

1 „Gefällt mir“

Großartig! Ein paar Tage hast du jetzt :slight_smile: 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

6 „Gefällt mir“

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:

3 „Gefällt mir“

Könnten wir diese 9 Tabellen also in ein vereinfachtes Datenmodell umwandeln? :thinking: :wink:

5 „Gefällt mir“

Sicher, teilen Sie die Ergebnisse mit!

4 „Gefällt mir“

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

cc @Falco @sam

Es sind meistens 1-N, da Benutzer mehrere Benachrichtigungen, Authentifizierungstoken usw. haben.

user_options ist 1-1.