Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Dynamischer Fragenkatalog: Wie das Datenmodell aufbauen?

Moderationshinweis von gfoidl (27.07.2011 - 12:34:23):

Abgeteilt von WPF - dynamische Formulare?

wackelkontakt
myCSharp.de - Member

Avatar #avatar-3290.jpg


Dabei seit:
Beiträge: 109
Herkunft: Dresden

Themenstarter:

beantworten | zitieren | melden

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, ....
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1900
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Alf Ator
myCSharp.de - Member



Dabei seit:
Beiträge: 637

beantworten | zitieren | melden

Mach ne Liste mit Referenzen, auf andere Fragen, an jede Frage.
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1900
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
el_panter
myCSharp.de - Member



Dabei seit:
Beiträge: 406
Herkunft: Sömmerda

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Ahrimaan
myCSharp.de - Member



Dabei seit:
Beiträge: 363
Herkunft: Thorn

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Ahrimaan am .
private Nachricht | Beiträge des Benutzers
Camouflagezebra
myCSharp.de - Member



Dabei seit:
Beiträge: 10
Herkunft: Österreich

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Camouflagezebra am .
private Nachricht | Beiträge des Benutzers