Frage

Ein Teil unserer Website fordert fragen die Benutzer 20 Multiple-Choice-Fragen über sich selbst (ein „Profil“). Dieser Teil der Website wird häufig gesehen, und gelegentlich aktualisiert. Die Website wird erwartet, dass eine große Menge an Verkehr zu entwickeln, so dass einige Beachtung geschenkt wird für Performance-Probleme zu versuchen und zu präparieren.

Die drei Möglichkeiten, wie ich das sehen kann, in der DB zu speichern sind:

  1. Erstellen 1 Tabelle für jede Frage, jede Tabelle hat QuestionID und Antwort, dann eine Tabelle Customer die Profildaten zu speichern, mit ausländischen zu den Fragen zugeordnet Tasten.

  2. Frage, Question_Type und Antworten Tabellen. Stuff alles in diese Konstrukte. Meine Sorge ist hier insbesondere die 20 oder so Einsätze, ein Profil zu aktualisieren, erforderlich. Ist das wird eine Performance-Einbußen bei hohem Verkehrsaufkommen sein?

  3. Denormalisierte einzelne Tabelle, ein Feld pro Frage, Hart Code der Antwort-Codes in der HTML-und / oder in einem C # Objekt.

Ich bin Neigung in Richtung # 2 oder # 3. Was denken Sie, wäre die beste Lösung sein?

War es hilfreich?

Lösung

Ich würde die folgenden Tabellen erstellen:

Survey (PK:SurveyID)
Question (PK:QuestionID, FK:SurveyID)
QuestionAnswer (PK:QuestionAnswerID, FK:QuestionID)
QuestionResponse (PK:QuestionResponseID, FK:QuestionAnswerID, FK:UserID)

Sie können die Belastung minimieren, indem die Einsätze in einer Aussage zu tun, z.

insert into QuestionResponse
(QuestionAnswerID, UserID)
select 23, 3
union all
select 72, 3
union all
select 488, 3
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top