@gitdev

Насколько правильно использовать json для хранения данных в базе данных?

Например: нужно добавить информацию о пользователе который совершает заказ, помимо информации о пользователе есть добавление телефонов(может быть до 4 номеров), поиск по телефонам производить не нужно будет, только отображение данных. Стоит ли для таких целей использовать формат json или следует для телефонов создать отдельную таблицу и каждый телефон записывать как отдельное поле таблицы и связывать их с информацией о заказе.
  • Вопрос задан
  • 218 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
json нужно использовать если у вам надо хранить json и сохранять полностью его форматирование. Форматирование именно самого json с пробелами, табами и переносами строк - т.е. как текст, но с валидацией что здесь именно json.
если вам нужно хранить json - лучше использовать jsonb
А для описанной задачи и просто массива достаточно, bigint[] или text[]. Контактные данные для заказа уместны именно в заказе, а по jsonb и массивам возможно вполне внятно и искать в том числе
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
solotony
@solotony
покоряю пик Балмера
вряд-ли вам кто-то даст однозначный ответ. в конкретном примере преимущества одного или другого способов неочевидны.

JSON обоснован когда у вас сложная древовидная структура, когда у вас много полей, когда у вас у разных строк используются поля. и естественно когда эти поля не должны участвовать в условиях и сортировках, не должны требовать частой модификации
Ответ написан
Комментировать
c3gdlk
@c3gdlk
Ментор в http://rubyboost.ru/
Не забывайте, что база данных всего лишь инструмент. В таком простом варианте как у Вас особой разницы нет. Я бы вибирал исходя из того, насколько удобно Ваш фреймворк умеет работать с такими полями. Например, Rails очень просто умеет работать с такими полями, код приложения даже не поймет, что это одно поле внутри. Я очень активно использую такие поля в разработке.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы