DB Design: Fragebögen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • DB Design: Fragebögen

    Hallo allerseits,

    ich will eine "Software" schreiben, mit der man Fragebögen zusammenstellen kann.
    Problem dabei ist, dass die Fragen immer variieren, (bzw. es Fragesegmente (-blöcke) gibt, die gleich bleiben) UND die Antworten versch. eingetragen werden (Textfeld, Radiobutton etc..)

    Ich stelle mir das so vor (fiktive Fragen;)):

    Fragebogen1, Thema Onlineverhalten

    a) wie viele h sitzt du am Tag vorm PC? [Textfeld]
    b)bei welchem Provider bist du? (o) T-com, (o) alice, (o) andere [Radiobutton]
    c)flatrate? [checkbox]

    dazu kommen noch 4 Fragen, die immer gleich bleiben, zB:
    d) wie alt bist du ? 1) zwischen 12-16, 2) zwischen 17-21, 3) zwischen 22-30 [Dropdown]
    e)wie hoch ist dein Einkommen [Textfeld]


    ein 2. Fragebogen könnte aber ganz andere Fragen/Antworten haben, bzw. muss nicht durch die Fragen d)+e) erweitert werden.


    Wie könnte man sowas am besten realisieren?
    Da ich noch nicht weiß, wie die Daten am Ende weiter verarbeitet werden (entweder per phpmailer verschickt oder in DB gespeichert), soll es natürlich erstmal flexible sein.
    Ich schätze, dass die Datenmenge eher gering bleibt (falls ich die "Eintragen"-Variante nehme), also könnte ich theoretisch für jeden Bogen eine eigene Tabelle anlegen. Aber wie könnte ich es realisieren, dass der Autor des Fragebogens selbst einstellt, welche Antwortmöglichkeit gewählt wird?

    Wie gesagt, bis dato bin ich noch nicht sehr weit (hab atm eine Tabelle, die den Bogen beschreibt):
    -fragebogen(id,name,beschreibung,fälligkeit)
    dazu kommt dann eine Tabelle kommen, die die Fragen speichert und evtl noch eine 2. die dann die Antworten übernimmt.

    Was meint ihr dazu? Wie sollte ich das Ganze am besten aufbauen?


    Danke
  • Hi,

    ich habe nicht lange über dein Beispiel nachgedacht, aber ich denke das folgende Modell sollte alles abdecken:

    Quellcode

    1. frage
    2. [frageid(int)] frage (varhar)
    3. option
    4. optionid [frageid(int) option(varchar)] optionstypid(int) reihenfolge(int) default(varchar)
    5. optionstyp
    6. [optionstypid(int)] optionstyp
    7. antworten
    8. userid frageid optionid
    Alles anzeigen
  • Okay, wenn mans überträgt, sollte das dann so aussehen:.

    frage
    [1, ie viele h sitzt du am Tag vorm PC]
    [2, bei welchem Provider bist du? (o) T-com, (o) alice, (o) andere [Radiobutton] ]
    [3, flatrate?] [checkbox]
    [4, wie alt bist du ?] 1) zwischen 12-16, 2) zwischen 17-21, 3) zwischen 22-30 [Dropdown]
    [5, wie hoch ist dein Einkommen ] [Textfeld]

    optionstyp
    [1, checkbox]
    [2, radiobutton]
    [3, dropdown]
    [4, textfeld]

    option
    [1,1,4]
    [2,2, t-com,2,1,1]
    [3,2, alice,2,2,1]
    [4,2, andere,2,3,1]
    [5,3,ja,1]
    [6,4, zwischen 12-16,2,1,1]
    [7,4, zwischen 17-21,2,2,1]
    [8,4, zwischen 22-30,2,3,1]
    [8,5,4]

    antworten
    [1, 1, 1]
    ... wie auch immer



    meinscht so, gell?
    sieht ja eigentlich ganz gut aus

    jetzt muss ich nurnoch gucken, wie ich das mit php umgesetzt bekomme :D

    Ciao
  • naja,

    wenn man bedenkt das ich versucht habe Donuts Vorschlag "umzusetzen" und ich nochmal zum Absegnen gefragt habe, könnte es klar sein ;)
    aber du hast schon Recht.

    Angefangen habe ich noch nicht, das Layout umzusetzen sollte nicht das Problem sein, muss wie gesagt wie ich es dann technisch umsetze, wenn es darum geht versch. viele Fragen einzustellen.


    Ciao
  • Hi,

    kingele schrieb:


    wenn man bedenkt das ich versucht habe Donuts Vorschlag "umzusetzen"
    [...]
    Angefangen habe ich noch nicht


    Hm?! ;)



    Du hast das alles ein bischen vermischt.

    Die Tabelle sieht gut aus.
    optionstyp
    [1, checkbox]
    [2, radiobutton]
    [3, dropdown]
    [4, textfeld]


    Bei der Fragentabelle würd ich es so machen:
    frage_id,frage,optionstyp_id


    Und die Antworttabelle:
    antwort_id,antwort,frage_id


    Wobei du dann bei der Antworttabelle für jede Antwort ein zeile einfügst.
  • okay, danke!
    ich werd mich dann mal ransetzen und mich bei Problemen wieder melden!

    Eine Frage noch zur Theorie:
    ich speicher' dann da wirklich das Wort "checkbox" rein und rufe dann später so auf:

    Quellcode

    1. blaa db-Anbindung
    2. schleife um Inhalt auszulesen
    3. <input type="$option" name="frage" value="anwort"> Salami<br>


    ?

    Vielen Dank!