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

Тема в разделе "Базы данных", создана пользователем Konpolya, 5 сен 2018.

Модераторы: latteo
  1. Konpolya

    Konpolya Постоялец

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

    2cher777

    Регистр.:
    10 мар 2018
    Сообщения:
    256
    Симпатии:
    76
    Дополнительную таблицу создавай с привязкой по ID товара из основной таблицы. И туда уже пиши дополнительные характеристики какие хочешь.
     
  3. Konpolya

    Konpolya Постоялец

    Регистр.:
    23 окт 2015
    Сообщения:
    75
    Симпатии:
    9
    Где id товара будет не уникальным?
     
  4. metsys

    metsys

    Регистр.:
    27 апр 2014
    Сообщения:
    515
    Симпатии:
    507
  5. 2cher777

    2cher777

    Регистр.:
    10 мар 2018
    Сообщения:
    256
    Симпатии:
    76
    И что? Тебе ID товара нужно будет только для выборок из двух таблиц для того чтобы отобразить все возможные дополнительные характеристики товаров. Ну или для поиска по доп.параметрам.
     
  6. Konpolya

    Konpolya Постоялец

    Регистр.:
    23 окт 2015
    Сообщения:
    75
    Симпатии:
    9
    В принципе так и думал делать, но есть ли ещё варианты?)
     
  7. 2cher777

    2cher777

    Регистр.:
    10 мар 2018
    Сообщения:
    256
    Симпатии:
    76
    Если собираешься в дальнейшем делать сортировки и фильтры по свойствам товаров, типа по цвету, весу, ТТХ, то делай отдельно таблицу с параметрами и их свойствами. т.к. у одного товара может быть в параметрах как разные цвета, так и разный например тип корпуса. И сортируя по цвету, придется игнорировать параметр тип корпуса. Короче онлайн магазин нужно начинать с разработки и проектирования БД.
     
  8. Konpolya

    Konpolya Постоялец

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

    2cher777

    Регистр.:
    10 мар 2018
    Сообщения:
    256
    Симпатии:
    76
    *id|length|width {основная таблица main}
    *id|param|vars... {таблица с возможными параметрами и их свойствами params}
    id|main_id|params_id
    как-то так на вскидку. параметры лучше отдельно набивать в отдельную таблицу. Но я х.з. что вы там на выходе в вашем магазине хотите реализовать.
     
  10. Black Hat

    Black Hat

    Регистр.:
    15 май 2015
    Сообщения:
    163
    Симпатии:
    104
    EAV с раскидыванием по кучей таблиц усложняет разработку. Очень удобно использовать для хранения "необязательных" и "множественных" параметров NoSQL подход. Очень удобна MongoDB.
    В MySQL есть давно поиск по JSON. Поберегите свои нервы, не используйте EAV.