Какой дизайн базы данных выбрать для приложения опроса? - PullRequest
0 голосов
/ 13 февраля 2019

Я создаю приложение для опроса, и я не знаю, как проектировать базу данных.Мне нужны опросы с несколькими вопросами и несколькими типами вопросов.Я могу придумать 3 способа:

a) Создать таблицу базы данных для опросов и вопросов любого типа и связать их со столбцом Survey_id.

b) Создать таблицу базы данных для вопросови опросы и хранить их в текстовом поле, как JSON.Эти текстовые поля могут выглядеть следующим образом:

{
    question: 'Who is the best student?'
    type: 'multiple-choices',
    choices: [
         'Bob',
         'Alice',
         'Alex',
    ],
}

c) Последний вариант - создать таблицу базы данных только для опросов и сохранить их в формате JSON.Вот так:

{
    heading: 'My survey'
    date: '2019-01-01',
    questions: [
         {...},
         {...},
         {...},
    ],
}

Спасибо за любые предложения.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Абстракция важна при проектировании баз данных и в тех случаях, когда в некоторых случаях выполнимо просто поместить все данные в поле JSON (скажем, полезную нагрузку с конечной точки), но если это не так, то есть вызывающие способы хранения данных во многих случаях.более единообразная мода.Ниже я расскажу о том, как начать разработку приложения для опроса на высоком уровне.

1) Сначала вы должны демонстративно иметь таблицу опроса на самом верхнем уровне, чтобы вы могли создавать несколько экземпляров опроса (скажем, в разное время илидля разных групп), которые могут содержать разные типы вопросов.Это также будет содержать дату, время окончания, группу и т.д. ...

2) Затем для следующего уровня я создам общую таблицу вопросов.Это будет содержать внешний ключ к опросу и поле символа для задаваемого вопроса.

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

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

4) И наконец, это еще более важная настройка опроса, а не отвечающая сторона опроса, еще одна причина не помещать все в JSON;).Для ответа я бы реализовал таблицу SurveyResponse на верхнем уровне, а затем другую таблицу, которая имеет внешний ключ к SurveyResponse для каждого вопроса в упомянутом опросе из части 1.

Надеюсь, что это поможет в каком-то направлении.Удачного кодирования!

0 голосов
/ 13 февраля 2019

Если вы спрашиваете о базе данных, то сделайте ее базой данных.Это означает, что нормализованные таблицы для хранения всех ваших данных.Нет вопросов по этому поводу.

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