Te recomendamos que revises esta solución en un entorno controlado antes de pasarlo a producción, saludos.
Solución:
Tenemos una aplicación en nuestro lugar de trabajo que hace algo similar. Funciona al tener una tabla que contiene una lista de todas las preguntas posibles como esta:
CREATE TABLE QUESTIONS
(
ID INT NOT NULL PRIMARY KEY,
SUMMARY NVARCHAR(64) NOT NULL UNIQUE,
DESCRIPTION NVARCHAR(255) NULL
);
Luego tiene una tabla de RESPUESTAS y CUESTIONARIOS definida usando la misma estructura anterior. Una vez que tenga estas dos tablas, defina una tabla para contener la lista de posibilidades de preguntas/respuestas como tal:
CREATE TABLE QUESTION_ANSWERS
(
ID INT NOT NULL PRIMARY KEY,
QUESTION INT NOT NULL REFERENCES QUESTIONS(ID),
ANSWER INT NOT NULL REFERENCES ANSWERS(ID)
);
Una vez que tenga estos, puede crear una tabla para contener las respuestas como tales:
CREATE TABLE RESPONSES
(
QUESTIONAIRE INT NOT NULL REFERENCES QUESTIONAIRES(ID),
RESPONSE INT NOT NULL REFERENCES QUESTION_ANSWERS(ID)
);
Esto le dará la máxima flexibilidad permitiéndole agregar nuevas preguntas y respuestas sin tener que cambiar el diseño de su base de datos con frecuencia. Puede ser un poco complicado si necesita versionar las preguntas/respuestas, pero esto debería darle un buen punto de apoyo para trabajar.
Espero que esto te ayude.
Puntuaciones y reseñas
Puedes añadir valor a nuestra información tributando tu experiencia en las reseñas.