Как записать параметры в БД

Статус
В этой теме нельзя размещать новые ответы.

Konpolya

Постоялец
Регистрация
23 Окт 2015
Сообщения
91
Реакции
11
всем привет. За ранее извиняюсь, так как плохо доношу свои мысли)
Нужен совет. Пишется интернет магазин, в котором есть товары. У товаров есть параметры, такие как длина, ширина. Есть таблица, в которой эти параметры хранятся id(товара), length, width. Этих параметров у товара может быть только по одному. И теперь появился ещё один параметр, которого у товара может быть несколько, например цвет. Есть товары и чёрные и белые одновременно (возможно черно бело красный и тд). Как записать в базу данных MySQL такой параметр, чтобы без лишней нагрузки И была возможность при фильтре(на странице категории) выводить товар, если фильтруемы параметр совпадает хотя бы с одним из заданных. К примеру фильтруем по цвету. Выбираем цвет «белый», нам выводятся товары не только белые, но и бело чёрные.
Создать отдельную таблицу? Или как то вписать в эту? За ранее благодарен
 
Дополнительную таблицу создавай с привязкой по ID товара из основной таблицы. И туда уже пиши дополнительные характеристики какие хочешь.
 
Где id товара будет не уникальным?
 
Где id товара будет не уникальным?
И что? Тебе ID товара нужно будет только для выборок из двух таблиц для того чтобы отобразить все возможные дополнительные характеристики товаров. Ну или для поиска по доп.параметрам.
 
В принципе так и думал делать, но есть ли ещё варианты?)
 
В принципе так и думал делать, но есть ли ещё варианты?)
Если собираешься в дальнейшем делать сортировки и фильтры по свойствам товаров, типа по цвету, весу, ТТХ, то делай отдельно таблицу с параметрами и их свойствами. т.к. у одного товара может быть в параметрах как разные цвета, так и разный например тип корпуса. И сортируя по цвету, придется игнорировать параметр тип корпуса. Короче онлайн магазин нужно начинать с разработки и проектирования БД.
 
Немного не понял последний пост. Вы имеете ввиду нужно переделать мне таблицу id, length, width в таблицу где есть id, property_name, property_value? Или все же оставить старую таблицу и к ней добавить ещё одну, где будут храниться параметры, которые могут быть двойными?
 
Немного не понял последний пост. Вы имеете ввиду нужно переделать мне таблицу id, length, width в таблицу где есть id, property_name, property_value? Или все же оставить старую таблицу и к ней добавить ещё одну, где будут храниться параметры, которые могут быть двойными?
*id|length|width {основная таблица main}
*id|param|vars... {таблица с возможными параметрами и их свойствами params}
id|main_id|params_id
как-то так на вскидку. параметры лучше отдельно набивать в отдельную таблицу. Но я х.з. что вы там на выходе в вашем магазине хотите реализовать.
 
В принципе так и думал делать, но есть ли ещё варианты?)
EAV с раскидыванием по кучей таблиц усложняет разработку. Очень удобно использовать для хранения "необязательных" и "множественных" параметров NoSQL подход. Очень удобна MongoDB.
В MySQL есть давно Для просмотра ссылки Войди или Зарегистрируйся. Поберегите свои нервы, не используйте EAV.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху