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! Jetzt habe ich es verstanden! :sweat_smile:

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

In der Zwischenzeit habe ich diese Konversation in ein neues Thema in unserer Kategorie Contribute > Site feedback verschoben, damit die anderen Diskussionen übersichtlich bleiben.

2 „Gefällt mir“

Das wäre fantastisch, danke!

1 „Gefällt mir“

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. :sweat_smile:

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