Как сохранить логику ветвления в базе данных? - PullRequest
7 голосов
/ 11 марта 2011

Мы создаем механизм обследования для внутреннего использования.Я хотел бы знать, как сохранить вопрос логики ветвления в базе данных?Кто-нибудь делал это раньше или какие-либо идеи относительно схемы для базы данных?

Если пользователь отвечает с ответом, нам нужно перейти к следующим вопросам на основе логики, добавленной к вопросам. Каждый вопрос может иметь несколькок нему добавлена ​​логика.

Например:

Question: Is it Sunny, Raining or Cloudy?
Answer: Raining.
The next question should be based on the previous answer.
if(Raining)
{
}

if(Sunny)
{
}

if(Cloudy)
{
}

как мне сохранить вышеизложенное в базе данных и перейти оттуда?

Какие-нибудь яркие идеи?

1 Ответ

5 голосов
/ 11 марта 2011

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

Редактировать: простой дизайн может быть две таблицы: вопросы и края.Вопросы просто имеет id и question text.Края могут быть answered_question_id, next_question_id и answer.Первая таблица не требует пояснений.Во второй таблице указано, что если на вопрос answered_question_id задан и дан ответ с чем-либо, равным или совпадающим с answer, перейдите к вопросу next_question_id далее.

...