Domanda

Una sezione di chiamate nostro sito web per chiedere all'utente 20 domande a scelta multipla su se stessi (un "profilo"). Questa parte del sito sarà visto di frequente, e di tanto in tanto aggiornato. Il sito web si prevede di sviluppare una elevata quantità di traffico, quindi qualche considerazione viene data per cercare di prepararsi per problemi di prestazioni.

I 3 modi che posso vedere per memorizzare questo nel DB sono:

  1. Crea 1 tabella per ogni domanda, ogni tavolo ha QuestionID e risposta, quindi una tabella CustomerInfo per memorizzare i dati del profilo, con chiavi esterne mappati alle domande.

  2. Domanda, Question_Type e tavoli risposte. Roba tutto in questi costrutti. La mia preoccupazione qui è, in particolare, le 20 o giù di lì inserti necessari per aggiornare un profilo. E 'questo sarà un calo di prestazioni ad elevati volumi di traffico?

  3. Denormalizzato tavolo singolo, un campo per ogni domanda, hard-code dei codici di risposta in HTML e / o in un oggetto C #.

sto appoggiato verso 2 # o # 3. Cosa pensi sarebbe la soluzione migliore?

È stato utile?

Soluzione

I creerebbe le seguenti tabelle:

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

È possibile ridurre al minimo il carico facendo gli inserti in un'istruzione, per esempio:.

insert into QuestionResponse
(QuestionAnswerID, UserID)
select 23, 3
union all
select 72, 3
union all
select 488, 3
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top