Frage zu Datenbankdesign



  • Hallo Forum,

    zunächst ein Beispiel:

    Ich schreibe ein Quiz über Fahrzeuge (alle Fahrzeuge, z.B. Auto, Motorrad, Tram...)!
    Die Fragen speichere ich natürlich in einer Datenbank. Die Fragetypen, also dass z.B Motorrad-Fragen stets MulipleOption-Fragen sind, unterscheiden sich erheblich.

    Nun zu meiner Frage:
    Ist es besser, wenn ich für jeden Fragetyp eine eigene Tabelle anlege, da sich die Spalten von Fragetyp zu Fragetyp unterscheiden?

    oder

    Alle Fragen in eine Tabelle, wobei dann je nach Fragetyp mehr oder weniger viele Spalten frei bleiben ("NULL")!?

    Danke schonmal für die Antworten!

    Grüße



  • Welche "Fragetypen" gibt es denn?



  • Es gibt z.B. offene Fragen (User muss Text eingeben), Bilderfragen, Zuteilungsfragen...

    Eine Bilderfrage z.B braucht in der Datenbank ja noch zusätzlich eine Spalte "Image" oder ähnliches, die jedoch die offenen Fragen nicht brauchen!

    Darauf bezieht sich meine Frage, ob ich eben eine Tabelle für alle Fragen erstellen soll oder eben spezifische Tabellen?!



  • hallo!

    Du hast also je nach fragetyp unterschiedlich viel Fragen?

    dann solltst du das in die 2te Normalform bringen:
    http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)

    Du könntest z.B.
    []Eine tabelle für kategorien
    [
    ]Eine tabelle für die fragen
    [*]Und eine tabelle mit den antworten erstellen.

    Die Tabellen sehen dann so aus:

    Kategorie
    ID, Bezeichnung
    1 Auto
    2 Bus

    Fragen
    ID, Kategorie_ID, Text
    1 1 Wann wurde das erste Auto erfunden

    Antworten
    ID, Fragen_ID, Richtig, Text
    1 1 false 2008
    2 1 true 1874 (angenommen 1874 wäre die richtige antwort...)



  • @c.wesseling@gmail.com:

    Ja, dein Vorschlag habe ich bereits verwirklicht...bloß besteht das alte Problem immernoch.
    Du hast geschrieben:

    c.wesseling@gmail.com schrieb:

    Fragen
    ID, Kategorie_ID, Text
    1 1 Wann wurde das erste Auto erfunden

    Das Problem ist ja, dass für eine Bilderfrage die Spalte "Image" noch rein müsste.
    Wenn ich das so machen würde, wäre die Spalte "Image" ja für alle anderen Fragen, auch für die, die gar kein Bild anzeigen sollen, vorhanden und somit hätte ich dann NULL in diesen Zellen stehen, was meiner Meinung nach nicht sehr schön ist...



  • ok, da hilft wohl nur noch 2 weitere tabellen

    Fragen_text

    Fragen_bild

    und dann in der fragen tabelle statt ein feld "type" das dann entweder 1 ( text) oder 2(image) enthält...

    und dann ein lookup in der jeweiligen tabelle...
    naja ob sich aber das lohnt dafür extra 2 tabellen anzulegen,

    eine andere alternative wäre in dem text feld "use_image" einzutragen, und wenn der text dort drin steht dann das bild aus der tabelle "fragen_bild" zu nehmen...


Anmelden zum Antworten