JSON по сравнению с таблицами в PostgreSQL - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь составить анкету и рассматриваю две структуры данных:

JSON: я мог бы использовать JSON для хранения различных вопросов следующим образом:

{
    "questions": [
        {
            "question": "how old are you?",
            "type": "input_int",
        },
            "question": "what is your name",
            "type": "input_string",
        },
        {
            "question": "how are you today?",
            "type": "multiple_choice",
            "options": [
                "good",
                "bad"
            ]
        },
    ]
}

Или таблица для каждого типа вопросов:

InputIntTable
- Question
- Order

InputStringTable
- Question
- Order

MultipleChoiceTable
- Question
- Options
- Order

Я использую Django. Какой способ размещения хоста будет лучше с точки зрения вычислений, структуры и затрат. Что займет больше места? Спасибо !!

1 Ответ

3 голосов
/ 18 июня 2020

Если вам не требуется частая фильтрация по типу вопроса или любой другой области вопроса, вы можете использовать структуру Json. Но вы не можете запросить, если вы сохраните вопросы как Json. Поэтому я считаю, что вам следует использовать таблицы. Json следует использовать только для сохранения данных, которые предназначены только для отображения или должны использоваться как dict IMHO. Но если вам нужно запросить, как ORM, вы должны использовать таблицы

У вас должна быть модель, например:

Вопрос

  • вопрос
  • порядок
  • тип
  • параметры (список строк, null в случае типа «input_int» или «input_string»)

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

Вы также не можете использовать остальные представления, такие как список, создайте детали и c. если вы сохраняете вопросы как Json.

Вкратце, используйте таблицы.

---- EDIT ----

Вопрос

  • вопрос
  • заказ
  • тип

Опции

  • параметры (список строк)
  • вопрос (внешний ключ для модели вопроса)
...