Я разрабатываю веб-платформу в codeigniter (первый раз с CI) для расчета котировок для растущего числа разных продуктов.Вставить объект в поле базы данных MySQL
Проблема, с которой я сталкиваюсь, заключается в том, что каждый из моих продуктов имеет разные наборы 10+ опций, но я хочу сохранить эти данные только в одной таблице в моей базе данных. Ранее я использовал другую таблицу для каждого продукта, позволяя структуре таблицы представлять различные наборы параметров, однако это не очень масштабируемо с нашим растущим ассортиментом.
После некоторых исследований выяснилось, что одно из решений будет использовать функцию «serialize» для хранения всех моих данных сообщения (из формы цитаты) для каждого продукта в одном столбце, а затем unserialize, когда я захочу использовать эти данные. .
Является ли сериализация данных наилучшим подходом и сможет ли кто-нибудь предоставить простой пример, чтобы показать, как обрабатывать вставку из формы отправки/получения данных?
Большое спасибо заранее
EDIT: Searching будет только когда-либо на тип продукта или уникальный идентификатор. Мои мысли заключались в том, чтобы иметь таблицу типа id, product_type, product_options с product_options, содержащей сериализованные данные?
РЕДАКТИРОВАТЬ 2: Принятие EAV похоже на хороший крик. Я использую для запроса и возврата одного объекта результата, который будет передан в представление (например, $query->quote_ref
, $query->quote_date
). Может ли кто-нибудь указать мне в правильном направлении, как использовать данные отдельной кавычки, когда запрос будет возвращать несколько строк, по одному для каждого атрибута?
ли вы когда-нибудь нужно искать по частям этих данных? – Steve
Кодирование IMO JSON легче читать, чем сериализовать, но, насколько это касается PHP, это не имеет значения. Сохранение в виде сериализованного или JSON-кодированного массива делает невозможным поиск этих столбцов. –
Лучшим решением является нормализация базы данных с использованием подхода EAV, поэтому вы используете новую таблицу product_options, связанную с таблицей продуктов, по идентификатору продукта –