Pregunta

Tengo el siguiente esquema: mi sitio es un juego de trivia, por lo que cada pregunta " haMany " Respuestas, pero también una pregunta " hasOne " Respuesta correcta que también está representada por el modelo Respuesta. Todavía tengo que probar esto, pero el instinto de mi programador me dice que la matriz recuperada será un poco redundante y no separará la Respuesta correcta del resto de ellos.

Mi pregunta es, ¿cómo represento esto en los modelos y en la base de datos, hay una mejor manera de representar esta relación?

¿Fue útil?

Solución

O simplemente vea esta página, muy útil;) http: //www.charlesgarwood .com / blog /? p = 23

Otros consejos

Bueno, puedo encontrar dos formas de hacerlo.

  1. Una pregunta tiene muchas respuestas, mientras que una pregunta pertenece a una respuesta correcta (tenga el answer_id para la respuesta correcta en la pregunta, por lo que se vería como la pregunta (id, answer_id) y < código> Respuesta (id, question_id) )

  2. Tenga una marca en la respuesta que refleje si es la correcta o no.

Creo que elegir cuál es más una opinión personal, pero probablemente buscaría el número 2, incluso si 1 es más correcto fuera del pensamiento relacional, pero reduce la redundancia y aún puede buscarlo dentro del respuestas.

Por supuesto, si una pregunta puede tener más de una respuesta correcta, entonces la opción número 1 está fuera de la pregunta.

Otra ruta sería crear 2 modelos asignados a la misma tabla. Tenga una marca en la respuesta que indique que es la respuesta correcta o no.

Ya que no cambiará la respuesta correcta, mapear la corrección en un indicador en el momento de la creación está bien, y le permitirá tener varias respuestas correctas. Con un sistema de ponderación, incluso puede valorar la corrección de la respuesta.

Con dos modelos separados, asegúrese de establecer las condiciones en las relaciones o en el propio modelo para que el modelo CorrectAnswer solo encuentre respuestas con el conjunto de campos Answer.correct = true. Entonces puede tener un modelo de respuesta genérico que no tenga tal condición. Hecho en el modelo de Pregunta, incluso podría usar puramente las banderas de asociación para obtener ambos tipos.

Intente preguntar en cakeqs.org que es un portal relacionado con cakephp. Pero definitivamente solo deberías tener alias diferentes para ambas asociaciones

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top