Estoy tratando de implementar una prueba de opción múltiple y quiero almacenar todas mis preguntas y respuestas en una base de datos SQLite. Tendré muchas preguntas, y para cada pregunta habrá 2 o más respuestas posibles para mostrar.Cómo guardar una prueba de opción múltiple en una base de datos: decidir el esquema
Mi pregunta es, ¿cómo debo almacenar las preguntas y respuestas en una base de datos? Tengo dos ideas para un esquema (clave principal en negrita)
- como (muchos a muchos)
preguntas (IdPregunta: int, questionString: Cadena, correctAnswerID: int)
respuestas (answerID: int, answerString: String)
questions_and_answers (IdPregunta, AnswerID)
2.
preguntas (IdPregunta: int, questionString: Cadena, correctAnswerID: int)
respuestas (AnswerID: int, answerString: Cadena, IdPregunta: int clave externa)
No estoy seguro de cuál es mejor, o si hay otra forma?
¿Tal vez questions_and_answers
sería muy grande y causaría largos tiempos de recuperación y problemas de memoria? Por otra parte, supongo que question_and_answers
se indexaría en las teclas principales. En el segundo esquema, answers
estaría indexado en answerID
y no en questionID
? lo que significa que los tiempos de búsqueda subirían ya que habría que buscar toda la tabla?
Puede haber ~ 10,000 - 20,000 respuestas. (el cuestionario se puede ejecutar en un dispositivo móvil y las preguntas deberán mostrarse "al instante")
Nota: No espero que haya demasiada superposición de respuestas entre las preguntas. No creo que la cantidad de solapamiento implique menos datos almacenados, teniendo en cuenta el espacio adicional requerido por la tabla questions_and_answers
¿Es muy probable que sus respuestas se dupliquen en múltiples preguntas? – Tenner
Supongo que tal vez el 30% de las respuestas aparecerán en más de una pregunta –