Question

Une partie de nos appels de site web pour demander à l'utilisateur 20 questions à choix multiples sur eux-mêmes (un « profil »). Cette partie du site sera regardées, et parfois mis à jour. Le site Web devrait développer une grande quantité de trafic, donc certains que l'on envisage d'essayer de se préparer à des problèmes de performance.

Les 3 façons que je peux voir pour stocker ceci dans le DB sont:

  1. Créer une table pour chaque question, chaque table a QuestionID et réponse, puis une table CustomerInfo pour stocker les données de profil, avec des clés étrangères mis en correspondance aux questions.

  2. Question, Question_Type et tables de réponses. Stuff tout dans ces constructions. Ce qui me préoccupe ici est en particulier les quelque 20 inserts nécessaires pour mettre à jour un profil. Est-ce que ça va être un succès de performance à des volumes élevés de trafic?

  3. table unique dénormalisées, un champ par question, coder en dur les codes de réponse dans le code HTML et / ou dans un objet C #.

Je penche vers # 2 ou # 3. Que pensez-vous serait la meilleure solution?

Était-ce utile?

La solution

Je voudrais créer les tableaux suivants:

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

Vous pouvez réduire la charge en faisant les insertions dans une déclaration, par exemple:.

insert into QuestionResponse
(QuestionAnswerID, UserID)
select 23, 3
union all
select 72, 3
union all
select 488, 3
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top