it-swarm.com.de

Intuitives Entwurfsmuster zum Auswählen indizierter Tabellenkombinationen in einer relationalen Datenbank

Hintergrund

Ich versuche, eine Schnittstelle zu entwerfen, über die Benutzer Daten in einer relationalen Datenbank durchsuchen können. Die Funktionen ähneln PhpMyAdmin , sollen jedoch für DB-Noobs einfacher und benutzerfreundlicher sein.

Tabellen werden automatisch verknüpft, wenn die Spaltennamen übereinstimmen. Wenn also zwei Tabellen eine Spalte "Mitarbeiter" haben, verbindet die Suchfunktion die beiden Tabellen automatisch, bevor sie angezeigt werden. Dies vereinfacht die Benutzererfahrung.

Problem

Stellen Sie sich ein häufiges Szenario vor. Eine Datenbank mit 10 Tabellen mit insgesamt 120 Spalten verfügt über 15 Indexfelder, die die Datenbank miteinander verbinden. Durch das automatische Verknüpfen des gesamten Datensatzes werden Ergebnisse mit 120 Spalten angezeigt, was zu breit ist. Ich möchte eine Methode zum Auswählen der Tabellen bereitstellen, die in die Ergebnisse aufgenommen werden sollen, indem ein einfaches Steuerelement (z. B. eine Liste) verwendet wird, das den Benutzern anzeigt, welche (vorverknüpften) Tabellen sie enthalten und wie viele Spalten sie erhalten. Wenn das Steuerelement sehr effektiv war, kann es Spaltennamen und grundlegende Informationen zu jeder Spalte enthalten (z. B.% null, Durchschnittswert in einem Tooltip).

Frage

Welches Entwurfsmuster bietet die beste UX für die Auswahl aus einer Liste verbindbarer Datenbanktabellen?

1
ted.strauss

Sie scheinen ein Datenvisualisierungstool zu erstellen. Sie müssen lediglich eine weitere Logik für die automatische Zusammenfassung hinzufügen (Kreisdiagramm basierend auf Zeilentyp, Balkendiagrammen usw.). Wenn Sie nicht daran gedacht haben, diesen Weg zu gehen, denken Sie darüber nach ... es wird viel Wert für eine sehr moderate Menge an Arbeit hinzufügen.

Aber zurück zur Aufgabe. Wenn Sie den Luxus einer grafischen Oberfläche haben, würde ich eine gerichtete Grafik empfehlen. Wenn Sie einen Knoten (eine Tabelle) auswählen, zeigt das Diagramm alle Tabellen, die mit dieser Tabelle verknüpft sind oder aus dieser herausgehen. Wenn Sie einen zweiten Knoten auswählen, fügt das System alle Tabellen hinzu, die ebenfalls mit diesem zweiten Knoten verknüpft sind. Das gerichtete Diagramm sollte Richtungspfeile anzeigen, und Sie können viele-zu-viele-Tabellen so optimieren, dass nur eine <-> Verknüpfung angezeigt wird (und die Verknüpfungstabelle unsichtbar ist).

Die Komplexität wird verwaltet, indem nur Tabellen angezeigt werden, die für bereits ausgewählte Tabellen relevant (verknüpft) sind. Die Starttabellen können auch beschnitten werden ... Sie werden niemals Leute haben, die als Starter aus der Statustabelle auswählen, da sie nur zum Auffüllen der Adresstabelle verwendet werden ... was Sie wahrscheinlich auch zugunsten des Kunden oder Benutzers überspringen würden Tabelle. So kann die anfängliche Liste der Tabellen, von denen aus begonnen werden soll, beschnitten werden. Sobald sie eine Startertabelle haben, können Sie natürlich die Auswahl der zugrunde liegenden Tabellen zulassen (Benutzer -> Adresse -> Status).

Jeder Knoten dieser grafischen Oberfläche könnte die Spaltenanzahl anzeigen. Sie können auch drei Optionen auswählen: "Einfach", "Allgemein" und "Voll". Grundlegende Spalten würden nur Bezeichner und möglicherweise das wichtigste Element (ID, Benutzername) enthalten. Common enthält möglicherweise eine begrenzte Anzahl der am häufigsten verwendeten Spalten (ID, Benutzername, First, Last), und Full enthält alle Spalten in dieser Tabelle, die nicht verboten sind (z. B. möglicherweise kein Kennwort). Diese Auswahl kann mit einem Rechtsklick getroffen werden.

Eine kreisförmige Referenzkette kann die Glieder hervorheben, die den Kreis bilden, und der Benutzer kann das Glied auswählen, das unterbrochen werden soll, damit die Abfrage nicht kreisförmig ist (Hervorheben von Gliedern, die an der kreisförmigen Referenz teilnehmen, Scherencursor, Link in eine gepunktete Linie ändern schweben, bei Auswahl ausblenden)

Der Nachteil dieser Methode ist, dass es nicht einfach ist, mit derselben Tabelle umzugehen, die in zwei verschiedenen Kontexten verwendet wird. Ein häufiges Beispiel sind Benutzer -> Benutzerbeziehungen (dh Manager vs. direkter Bericht). Es gibt jedoch auch Möglichkeiten, mit diesem Problem umzugehen. Wenn Sie beispielsweise mit Mitarbeiter beginnen, können Sie die Links folgendermaßen anzeigen:

Direkter Bericht -> Mitarbeiter -> Manager

Beginnend mit dem ausgewählten mittleren Element haben Sie Personen, die dieser Person Bericht erstatten, und Sie haben die Person, der sie Bericht erstatten. Diese Art von Referenz kann aus grundlegenden Spalteninformationen (fk_manager) extrahiert werden. Die eingehende Referenz würde zusätzliche Metadaten benötigen (z. B. eine umgekehrte Übersetzungstabelle mit einer Zeile manager:direct report). Alle drei angezeigten Tabellen sind dieselbe Mitarbeitertabelle, jedoch in einem anderen Kontext. Auf diese Weise können Sie auch in jedem Kontext dieselben verknüpften Tabellen anzeigen. Das obige Knotendiagramm enthält beispielsweise drei Adresstabellen, von denen eine mit jedem der drei Mitarbeiterkontexte verknüpft ist.

Sofern Ihr Schema nicht ganz einfach ist, möchten Sie möglicherweise auch nur verknüpfte Tabellen beim Hover dynamisch anzeigen. Daher werden die verknüpften Knoten nur auf dem zuletzt ausgewählten Knoten angezeigt, auf dem Sie den Hover ausführen. Stellen Sie sicher, dass Sie das Element beim Animieren der Änderung nicht unter den Cursor bewegen, um Animationsjitter zu vermeiden.

1
Myrddin Emrys