Мне интересно, действительно ли хорошая практика хранить массивы в базе данных? Я предпочитаю использовать json_encode
а не serialize
, но просто интересно, хорошая ли это идея. Если нет, то я могу внести небольшие изменения и просто взорвать массив запятой.
Нет, это ужасная практика. Пожалуйста, воздержитесь от вставки CSV, JSON *, serialize()
или любого рода сериализованных данных в реляционную базу данных. Денормализация почти всегда плохая идея – не делайте этого, если вы действительно не знаете, что делаете, или вы начнете задавать такие вопросы, как: это , это , это , это …
Выполняя это, вы теряете или сильно мешают вашей способности:
JOIN
s. Это может звучать педантично, но, видя, что люди это делают, это одно из моих любимых мотивов – особенно в свете множества вопросов, заданных на SO, которых можно было бы избежать, если бы они сделали правильный путь.
Вот правильный способ взаимодействия «один ко многим» и «многие ко многим» в РСУБД.
* Хотя некоторые базы данных SQL имеют встроенную поддержку JSON, часто лучше реструктурировать свои данные, чтобы вам не понадобилось это
Зависит от вашего шаблона использования. Если вам понадобится доступ к меньшим частям массива (например, для использования в предложении where или аналогичном), то это плохая идея – вы теряете все преимущества хранения данных в реляционной базе данных, Relatable. В конечном итоге вы получите большие накладные расходы, извлекая из этого небольшого фрагмента данных снова и снова.
С другой стороны, если вы просто используете базу данных в качестве хранилища данных и никогда не должны срезать этот хранимый массив отдельно – просто вставляйте и извлекайте, то, вероятно, нет проблем вообще, кроме, может быть, потери пространства, как сериализованного / json'd имеет тенденцию быть «многословным» и занимать больше места, чем само исходные данные.