Laden...

Dynamischer Fragenkatalog: Wie das Datenmodell aufbauen?

Erstellt von wackelkontakt vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.847 Views
Hinweis von gfoidl vor 12 Jahren

Abgeteilt von WPF - dynamische Formulare?

wackelkontakt Themenstarter:in
109 Beiträge seit 2011
vor 12 Jahren

Hallo, da ich jetzt vor dem selben (meiner Meinung nach hier noch ungelösten) Problem wie der TE stehe mache ich dieses alte Thema noch mal auf.

Folgende Aufgabenstellung:
Ich möchte ein Tool schreiben welches es einem internen Sachkundigen ermöglicht einen Fragenkatalog zu erstellen, sowie die Bedingungen und die jeweiligen Folgefragen anzugeben. Dazu benötige ich ja zuerst das Modell (Tabellen) für die Speicherung der Daten in der Datenbank.
Die erstellten Fragen werden dann zwar auf einer Webseite von Usern beantwortet aber das ist meiner Meinung nach erst mal egal, da die Erstellung des Kataloges völlig generisch erfolgen soll (also ohne zu wissen welche Anzahl/Art/Tiefe von Fragen). Wichtig wäre mir erst mal Ansätze für das Datenmodell zu bekommen.

Kann mir da da jemand ein paar Tips geben, evtl auch der TE?

Um Rekursion zu verstehen, muss man erst mal Rekursion verstehen, muss man erst mal Rekursion verstehen, ....

T
2.222 Beiträge seit 2008
vor 12 Jahren

Klingt nach folgendem Muster:

Frage, Antwort
Unterfrage, Antwort,
Unterunterfrage, Antwort

Dies lässt sich durch Rekursion lösen.
Dazu benötigt jede Frage eine Referenz auf die überliegende Frage.

Somit hat die Hauptfrage eine leere Guid als Referenz.
Die darunter liegende hat als Referenz eine Guid Referenz auf die Haupfrage.
Und so weiter.

Somit wäre der einfache Aufbau der Tabelle folgender.

Guid,
Frage,
Antwort,
RefGuid

Wenn es so stimmt, musst du natürlich auch rekursiv Programmieren.
Erst einmal alle Hauptfragen einladen.
Dann zu jeder Hauptfrage die Unterfragen suchen und dann das selbe für alle Unterabfragen bis es keine mehr gibt.

Stimmt auch der Gedanke dahinter oder sieht die Struktur anders aus?

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

A
764 Beiträge seit 2007
vor 12 Jahren

Mach ne Liste mit Referenzen, auf andere Fragen, an jede Frage.

T
2.222 Beiträge seit 2008
vor 12 Jahren

Das natürlich zusätzlich.
Somit hat jedes Fragenobjekt eine Liste von Fragen(Unterfragen).

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

E
395 Beiträge seit 2007
vor 12 Jahren

nur als Anmerkung. kann es nicht auch zu speziellen antworten unterschiedliche weiterführende fragen geben? sollte das nicht gleich mit bedacht werden oder fällt das von vornherein weg?

MfG Paul

5.742 Beiträge seit 2007
vor 12 Jahren

Hallo wackelkontakt,

du könntest auch zu jeder Frage eine Liste von Fragen speichern, die als Bedingung beantwortet bzw. speziell beantwortet sein müssen.

Somit hätte also z.B. jede Frage und jede Antwort eine ID und du könntest zu jeder Frage eine Liste von IDs (evtl. mit UND bzw. ODER verknüpft) speichern, die zutreffen müssen, damit die Frage angezeigt wird.

Vorteil ist, dass du die Bedingungen IMHO etwas natürlicher formulieren kannst.

A
350 Beiträge seit 2010
vor 12 Jahren

Was spricht zB gegen folgendes naives Datenmodell :

MainQues{
ID
Question}

SubQuest{
ID
Question
FK_MainQues
Order}

Answer{
ID
Answer
FK_MainQues}

SubAnswer{
ID
Answer
FK_SubQUest}

So : Eine MainQues hat x Subquest. Durch das Datenfeld Order erhälst du eine BEnatwortungsreihenfolge. DIe Beiden Tabellen für die Antworten verweisen auf die jeweiligen Fragen.

Is nur ne Fixe Idee aus dem Zug 😉

EDIT : Du könntest das Model dahingehen erweitern , dass die Answer eine nachfolgende Frage vorgibt, also ein weiteres Feld in den Answers

Grüße

C
10 Beiträge seit 2010
vor 12 Jahren

Hallo wackelkontakt

Ich habe etwas ähnliches vor ungefähr einem Jahr programmiert. (Hierachische Gliederung von Zugriffsberechtigungen)

Ich bin dabei genau so vorgegangen wie es T-Virus erklärt hat. Mithilfe von Rekursion hat sich das Problem wunderbar lösen lassen.