Pregunta

Una sección de nuestras llamadas sitio web para preguntar al usuario 20 preguntas de opción múltiple sobre sí mismos (un "perfil"). Esta parte del sitio web se ve con frecuencia, y en ocasiones actualiza. Se espera que el sitio web para desarrollar una gran cantidad de tráfico, por lo que se le está dando una cierta consideración para tratar de prepararse para los problemas de rendimiento.

Las 3 maneras en que puedo ver a almacenar esto en la base de datos son:

  1. Crea la tabla 1 para cada pregunta, cada mesa tiene IdPregunta y respuesta, a continuación, una tabla CustomerInfo para almacenar los datos del perfil, con las claves externas asignadas a las preguntas.

  2. Pregunta, Question_Type y mesas respuestas. Cosas de todo en estas construcciones. Mi preocupación aquí es, en particular, los 20 o más insertos necesarios para actualizar un perfil. ¿Esto va a ser un impacto en el rendimiento en altos volúmenes de tráfico?

  3. desnormalizado sola tabla, un campo por pregunta, difícil que el código de los códigos de respuesta en el HTML y / o en un objeto de C #.

Me estoy inclinando hacia # 2 y # 3. ¿Qué opinas sería la mejor solución?

¿Fue útil?

Solución

Yo crearía las siguientes tablas:

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

Se puede minimizar la carga al hacer las inserciones en una declaración, por ejemplo:.

insert into QuestionResponse
(QuestionAnswerID, UserID)
select 23, 3
union all
select 72, 3
union all
select 488, 3
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top