Хорошо ли хранить serialize в БД?

Недавно узнал о функциях serialize и unserialize в php. Таким способом можно записать целый массив в 1 ячейку таблицы sql, не создавая при этом дополнительной таблицы. Вопрос: нормальная ли это практика, стоит ли так делать и почему?
  • Вопрос задан
  • 1351 просмотр
Решения вопроса 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
Ни в коем случае.
Твоя база данных не зря названа реляционной, то есть связанной. Информация хранится в связанных между собой таблицах. Это позволяет получать нужную информацию одним запростом и обрабатывать миллионы срок без потери производительности. Что в миллион раз важнее лени "создавать дополнительную таблицу"

И не надо слушать советчиков из соседних ответов.
Увы, поколение милленниалов не умеет воспринимать письменный текст, и реагирует в лучшем случае на пару ключевых слов в вопросе, не воспринимая корнтекст. Который, чтобы было понятно, звучит так: Нашел у папы в сарае заряженнвую двустволку. Прикладом очень удобно орехи колоть. Это удобнее потому что из щипцов орехи вываливаются. Нормально ли колоть орехи заряженным ружьем?

Сериализованные данные стоит хранить в бд только в очень крайнем случае.
На данном этапе вообще забудь про такую возможность и учись работать с БД правильно.
Ответ написан
@dimuska139
Backend developer
Если уж и требуется такие структуры хранить, то лучше, как уже написали, хранить в json. Во-первых, у mysql и postgresql для таких данных есть специальное поле. Во-вторых, serialize - это пхпшная штука, поэтому если с базой будет взаимодействовать другой сервис, написанный не на php, будут заморочки и велосипеды.
Ответ написан
saintbyte
@saintbyte
Django developer
Забудьте про такие вещи как eval и serialize - это источник багов, дырок и говнокода
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Лучше сериализуйте в json https://www.php.net/manual/ru/function.json-encode.php
https://www.postgresql.org/docs/9.4/datatype-json.html

Некоторые базы данных (почти все) позволяют хранить json внутри специального типа поля и использовать их при запросах.

С позиции нормализации данных это конечно не очень хорошо, но если в логике БД эти данные не используются, то это безразлично.
Ответ написан
@stilic
Если вы в дальнейшем не собираетесь искать по полям из этих данных
если вам не нужен контроль целостности данных по этим полям,
то можно и так.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы