Вопрос

У меня есть следующая схема: мой сайт - игра викторин, поэтому каждый вопрос "hasMany" Ответы, но Вопрос также "hasOne" правильный ответ, который также представлен моделью ответа. Я еще не проверял это, но инстинкт моего программиста говорит мне, что извлеченный массив будет отчасти избыточен, и он не отделит правильный ответ от остальных.

Мой вопрос: как мне представить это в моделях и в базе данных, есть ли лучший способ представить эти отношения?

Это было полезно?

Решение

Или просто посмотрите на эту страницу, очень полезно;) http: //www.charlesgarwood .com / блог /? р = 23

Другие советы

Ну, я могу придумать два способа сделать это.

<Ол>
  • Вопрос имеет много ответов, в то время как вопрос относится к правильному ответу (для правильного ответа в вопросе укажите answer_id, чтобы он выглядел как Question (id, answer_id) и < code> Ответ (id, вопрос_id) )

  • Установите флажок в ответе, который показывает, является ли он правильным или нет.

  • Я думаю, что выбрать - это скорее личное мнение, но я бы, вероятно, выбрал номер 2, даже если 1 более правильное из реляционного мышления, но это уменьшает избыточность, и вы все равно можете искать ее в ответы.

    Конечно, если вопрос может иметь более одного правильного ответа, то вариант № 1 исключен.

    Другой способ - создать две модели, сопоставленные с одной и той же таблицей. В ответе должен быть флаг, указывающий, что это правильный ответ или нет.

    Поскольку вы не будете переключаться, какой ответ является правильным, тогда сопоставление правильности с флагом во время создания подойдет, и у вас будет несколько правильных ответов. С системой взвешивания вы даже можете оценить правильность ответа.

    В двух отдельных моделях обязательно задайте условия для отношений или в самой модели, чтобы модель CorrectAnswer находила ответы только с полем Answer.correct = true. Затем вы можете иметь общую модель ответа, в которой нет такого условия. Готово в модели Вопроса, вы можете даже использовать только флаги ассоциации для извлечения обоих типов.

    Попробуйте спросить на cakeqs.org, это портал, связанный с cakephp. Но определенно у вас должны быть разные псевдонимы для обеих ассоциаций

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top