DB-Schema zu einem Umfrage-Tool

apolyton

Lt. Junior Grade
Registriert
Nov. 2007
Beiträge
390
Hallo,

ich habe damit begonnen, mir ein kleines Umfrage-Tool unter ASP.NET (mit C#) zu schreiben. Die Umfragen sollen dabei datenbankgestützt erfolgen. Als DB-Server verwende ich den MS SQL-Server.

Bevor ich drauflos programmiere, hab ich mir erstmal überlegt, welche Tabellen und Felder ich dazu benötige. Als Ergebnis ist das untenstehende vereinfachte DB-Schema herausgekommen.
dbschema.png

Allerdings hat dieses Schema noch 2 Nachteile, denn:

1. jede Frage ist nur für eine Umfrage verwendbar. Wünschenswert ist jedoch, dass eine Frage auch für mehrere Umfragen genutzt werden kann.

2. ähnlich siehts auch bei den Antworten aus. Jede Antwort kann nur für eine Frage verwendet werden. Idealerweise sollte aber jede Antwort auch für jede andere Frage verwendet werden können.

Bisher hab ich noch keine Lösung dafür gefunden.

Für jede Hilfe bin ich dankbar.
 

Anhänge

  • db-schema.png
    db-schema.png
    16,9 KB · Aufrufe: 170
Zuletzt bearbeitet:
Das Schema kann ich nicht sehen, weder Link noch Bild angezeigt. Also zu deinen 2 Problemen: Beides klingt mir nach einer n:m Beziehung ohne das genaue Schema zu kennen. Wäre gut wenn du das Schema mal irgendwie zeigen könntest, dann könnte man dir gezielter helfen...
 
Statt Question und Answers direkt miteinander zu verknüpfen, würde ich zwischen Questions und Answers eine weitere Tabelle dazwischen schalten, z.B. QARelations, mit folgenden Spalten:
questionID (ForeignKey Questions.questionID),
answerID (ForeignKey Answers.answerID)
Beide Spalten zusammen bilden den PrimaryKey

Auf die Art hast du folgendes abgebildet: 1 Frage hat mehrere Antworten, 1 Antwort kann bei mehreren Fragen auftreten. Sollte relativ nah an dem sein was du machen willst. Das andere Problem würde ich dann entsprechend genauso lösen nur andere Tabelle andere ForeignKeys und PrimaryKey...

Viel Erfolg...
 
Das wars, was ich gesucht habe. Danke :)

Eine Frage hab ich noch. Wenn ich die 2 Tabelle verknüpfen will, dann muss ich immer über die Zwischentabelle gehen (als 2 Joins ausführen), oder?

Bei 3 Tabelle wären dass dann schon 4 Joins.
 
Das stimmt, bei Abfragen geht man dann über die Zwischentabelle (Join). Jedoch dürfte es nicht allzu sehr ins Gewicht fallen, da die Zwischentabelle über entsprechende Indizes verfügt (dank Primary Key) und somit relativ schnell sein sollte.
 
Zurück
Oben