Должны ли данные базы данных быть сериализованными? - PullRequest
0 голосов
/ 20 января 2011

Я знаю, что и как работает сериализация PHP.Но мне интересно, какой тип данных / структуры должен быть сериализован при хранении в базе данных.

Я строю своего рода систему адресной книги в PHP с такими полями:

Имя, Имя, Улица, Город, Почтовый индекс и т. Д.

Я могу сериализовать свои данные, чтобы сохранить их в своей базе данных или иметь разные поля для каждого элемента для хранения.

Любые советы, предложения, мысли?

Ответы [ 5 ]

4 голосов
/ 20 января 2011

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

При отсутствии чрезвычайных обстоятельств я бы посоветовал вам сделать последнее. Это позволит вам более эффективно осуществлять поиск, сортировку, перекрестные ссылки и т. Д. В базе данных.

Сериализация чаще встречается при передаче данных или сохранении графиков сложных объектов для сохранения части состояния сценария, а не для хранения данных в базе данных.

2 голосов
/ 20 января 2011

Я бы выбрал базу данных и сохранил бы имя, имя, улицу и т. Д. В отдельных столбцах таблицы БД. В этом случае нет необходимости использовать сериализацию ...

Вот ситуация, которая выиграет от сериализации ...

Представьте, что вы создаете интернет-магазин с несколькими классными продуктами. Эти продукты имеют такие атрибуты, как цвет ... "Продукт доступен в этих цветах ...."
Вы не знаете, сколько цветов будет хранить администратор магазина для этих продуктов ...

Итак, сериализация наступила ...
Администратор может добавить столько цветов, сколько необходимо, когда он импортирует товары в БД ... Ваш скрипт просто сериализует массив $ colors в строку, а затем сохраняет сериализованный массив (-> строка) в таблице БД в одном столбце 'color' ...
Когда данные извлекаются из БД, вы просто десериализуете эту сериализованную строку ...

Надеюсь, я объяснил вам мою идею осмысленно:)

2 голосов
/ 20 января 2011

Для непротиворечивых данных храните поля в своих собственных столбцах. Таким образом, вы можете искать / заказать / и т.д. по этим полям. Сериализация редко необходима для хранения базы данных. Обычно используется, когда вам нужно хранить данные / объекты в текстовом файле или в другом месте, где требуется строковая форма.

1 голос
/ 20 января 2011

Один пример: если вы используете Curl в качестве прокси-сервера ретрансляции и хотите передать переменные массива POST, вам нужно использовать php serialize (или эквивалентный), потому что curl не может публиковать переменные массива .

0 голосов
/ 20 января 2011

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

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