Как хранить логику ветвления? - PullRequest
1 голос
/ 18 января 2012

Я пытаюсь найти наилучший способ хранения / обработки логики ветвления в моей модели.

Пользователь установит другие правила, и правило будет "Если участник опроса выберет Ответ 1, тогда покажитеВопросы 2, 3 и 4 "

У меня есть модели вопросов и ответов, поэтому я могу сохранять правила и сопоставлять их с идентификаторами вопросов и ответов по мере необходимости.

Просто не уверен из базы данныхколонка точки зрения, как лучше всего справиться с этим.

Ответы [ 2 ]

1 голос
/ 18 января 2012
  • Используйте карту:

    (Ответ 1) -> (Q1, Q2, Q3)

Что касается схема базы данных : Учитывая эту таблицу

questionsTable: ID, CurrentAnswer, NextQuestion

select NextQuestion from questionsTable where CurrentQuestion='A1'
  • Вы также можете создать небольшой мозг с логическими утверждениями в соединительной нормальной форме (CNF):

A1-> Q1 ^ A1-> Q2 ^ A1-> Q3

или вы можете отделить каждое значение как отдельное утверждение.

Тогда оцените эти выражения. Результат может затем указать на следующий вопрос.

0 голосов
/ 18 января 2012

Возможные ответы относятся к одному вопросу (столбец answer_id).Вопрос: has_many: ответы Ответ: принадлежит_в: вопрос

Для последующих вопросов может потребоваться дополнительная работа: вопросы могут принадлежать (= следовать) разным ответам, и несколько ответов могут иметь одни и те же вопросы после них.Так что здесь вам, скорее всего, понадобится отношение has_and_belongs_to_many с промежуточной таблицей, в которой хранятся идентификатор вопроса и идентификатор ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...