Tischgestaltung für Fragebogen

Wir arbeiten an einer Anwendung, die Benutzer verschiedene Fragen stellen wird, diese Fragen können Zweige haben, so dass sie nicht in einer geraden Reihenfolge laufen. zum Beispiel, wenn die unten ist eine Struktur von Fragen und wo sie fließen können:

Bildbeschreibung hier eingeben

Frage 2 hat eine Zweigniederlassung, wenn der Benutzer antwortet Ja, wir gehen auf 3 und enden bei 7, sonst arbeiten wir unseren path nach unten 4,5,6,7. Ich habe mit einem Tisch-Design kommen, wollte aber Feedback bekommen, wenn das Design funktioniert oder wenn es einen besseren path, um dies zu strukturieren.

Es wird eine Frage-Tabelle geben, die Id (Key) und Text Spalten haben wird. Der tree selbst wird dargestellt als:

QuestionId | PreviousId | NextId | Branch Condition 1 0 2 NULL 2 1 3 Yes 2 1 4 No 3 2 7 NULL 4 2 5 NULL 5 4 6 NULL 7 3 0 NULL 7 6 0 NULL 

die Art und Weise würde es funktionieren, sobald eine Frage beantwortet wird, würde das System überprüfen, was die aktuelle Frage ist Zweig Zustand ist, wenn null nur auf die nextId bewegen. Andernfalls findet man die Antwort, die der Benutzer ausgewählt hat und gehe zum zugehörigen nextId. Wir erwarten nur Y / N Fragen zu verzweigen.

die vorherige Ich habe für jetzt gehalten, falls die Benutzer die Möglichkeit haben, zurückzukehren und eine Frage zu wiederholen, derzeit wollen sie nur vorwärts gehen.

Wenn es nur Ja / Nein Fragen, die möglicherweise andere nächste Frage haben, würde ich vorschlagen, Hinzufügen von 2 Spalten auf die Fragen-Tabelle, die nächste Frage-ID angeben, wenn die Antwort Ja ist (oder Standard, wenn es nicht eine Ja / Nein-Frage) und nächste Frage id, wenn die Antwort nein ist . Halten Sie die vorherige Antwort-ID scheint mir, um überflüssig zu sein, da Sie ganz einfach in Erinnerung bleiben können die gesamte Fragen Pfad in der Anwendung selbst.

Allerdings , wenn irgendwann in der Zukunft werden Sie auch Multiple-Choice-Fragen haben, und die nächste Frage hängt von der Antwort (dh Kategorie und Unterkategorien), dann schlage ich vor, Sie fügen auch eine Antwort-Tabelle hinzu und halten eine Spalte für nächste Frage id sowohl in der Frage Tabelle und in der Antworten Tabelle.
Wenn die nächste Frage-ID nicht von der Antwort abhängig ist, dann behalte es in der Frage-Tabelle. Wenn es von der Antwort abhängig ist, dann null in die nächste Frage-ID Spalte der Frage-Tabelle, und halten Sie die nächste Frage-ID in der Antwort-Tabelle. Dadurch get maximale Flexibilität und eine einfache datastruktur.