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

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

Konpolya

Постоялец
Регистрация
23 Окт 2015
Сообщения
91
Реакции
11
всем привет. За ранее извиняюсь, так как плохо доношу свои мысли)
Нужен совет. Пишется интернет магазин, в котором есть товары. У товаров есть параметры, такие как длина, ширина. Есть таблица, в которой эти параметры хранятся id(товара), length, width. Этих параметров у товара может быть только по одному. И теперь появился ещё один параметр, которого у товара может быть несколько, например цвет. Есть товары и чёрные и белые одновременно (возможно черно бело красный и тд). Как записать в базу данных MySQL такой параметр, чтобы без лишней нагрузки И была возможность при фильтре(на странице категории) выводить товар, если фильтруемы параметр совпадает хотя бы с одним из заданных. К примеру фильтруем по цвету. Выбираем цвет «белый», нам выводятся товары не только белые, но и бело чёрные.
Создать отдельную таблицу? Или как то вписать в эту? За ранее благодарен
 

2cher777

Постоялец
Регистрация
10 Мар 2018
Сообщения
300
Реакции
133
Дополнительную таблицу создавай с привязкой по ID товара из основной таблицы. И туда уже пиши дополнительные характеристики какие хочешь.
 

Konpolya

Постоялец
Регистрация
23 Окт 2015
Сообщения
91
Реакции
11
Где id товара будет не уникальным?
 

2cher777

Постоялец
Регистрация
10 Мар 2018
Сообщения
300
Реакции
133
Где id товара будет не уникальным?
И что? Тебе ID товара нужно будет только для выборок из двух таблиц для того чтобы отобразить все возможные дополнительные характеристики товаров. Ну или для поиска по доп.параметрам.
 

Konpolya

Постоялец
Регистрация
23 Окт 2015
Сообщения
91
Реакции
11
В принципе так и думал делать, но есть ли ещё варианты?)
 

2cher777

Постоялец
Регистрация
10 Мар 2018
Сообщения
300
Реакции
133
В принципе так и думал делать, но есть ли ещё варианты?)
Если собираешься в дальнейшем делать сортировки и фильтры по свойствам товаров, типа по цвету, весу, ТТХ, то делай отдельно таблицу с параметрами и их свойствами. т.к. у одного товара может быть в параметрах как разные цвета, так и разный например тип корпуса. И сортируя по цвету, придется игнорировать параметр тип корпуса. Короче онлайн магазин нужно начинать с разработки и проектирования БД.
 

Konpolya

Постоялец
Регистрация
23 Окт 2015
Сообщения
91
Реакции
11
Немного не понял последний пост. Вы имеете ввиду нужно переделать мне таблицу id, length, width в таблицу где есть id, property_name, property_value? Или все же оставить старую таблицу и к ней добавить ещё одну, где будут храниться параметры, которые могут быть двойными?
 

2cher777

Постоялец
Регистрация
10 Мар 2018
Сообщения
300
Реакции
133
Немного не понял последний пост. Вы имеете ввиду нужно переделать мне таблицу id, length, width в таблицу где есть id, property_name, property_value? Или все же оставить старую таблицу и к ней добавить ещё одну, где будут храниться параметры, которые могут быть двойными?
*id|length|width {основная таблица main}
*id|param|vars... {таблица с возможными параметрами и их свойствами params}
id|main_id|params_id
как-то так на вскидку. параметры лучше отдельно набивать в отдельную таблицу. Но я х.з. что вы там на выходе в вашем магазине хотите реализовать.
 

Black Hat

Постоялец
Регистрация
15 Май 2015
Сообщения
167
Реакции
112
В принципе так и думал делать, но есть ли ещё варианты?)
EAV с раскидыванием по кучей таблиц усложняет разработку. Очень удобно использовать для хранения "необязательных" и "множественных" параметров NoSQL подход. Очень удобна MongoDB.
В MySQL есть давно Для просмотра ссылки Войди или Зарегистрируйся. Поберегите свои нервы, не используйте EAV.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху