@Anrek

Как организовать хранение данных в БД?

Добрый день!

Есть интернет магазин. Там большая классификация (200 позиций) и у каждой группы свои характеристики. Например 2 шт:

1) бытовая электроника (длина шнура, мощность, цвет, размер горизонтальный)
2) книги (издательство, жанр, цвет)

Как это организовать в базе данных чтобы не кровь из глаз? В голове крутится, что поидее наверное можно как-то создать таблицу, в строках которой ID и массив с массивами:

categоryId, haracteristics[
publishing [Moscow, Peter, Exmo], 
genre[novel, shortStory, horror], 
cоlоr[blue, white, green]
]

categоryId, haracteritics[
length[1, 2, 3, 4, 6, 10], 
pоwerty[2, 4, 6], 
cоlоr[blue, white, green], 
price[200, 1000, 2000]
]


годится так сделать? (база данных pоstgresql - если это важно)
  • Вопрос задан
  • 72 просмотра
Решения вопроса 2
Stalker_RED
@Stalker_RED
200 позиций - это не большая. Когда будут десятки тысяч классов товаров (не наименований) - будет большая.

Писать массивы в поле кажется хорошей идеей только до тех пор, пока вам не нужен фасетный поиск. Фильтр товаров по характеристикам, как в яндекс-маркете, например.
Присмотритесь к EAV.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Массив в поле работает до тех пор, пока вам не надо с этим массивом что-то делать, добавлять в него значения, убирать их, искать по ним.
Стандартно делается как-то так:
category(`id`, `name`, `parent_id`) - категории товаров
items(`id`, `name`, `category_id`) - товары
properties(`id`, `name`, `type`, `units`) - описание свойств
properties_values(`id`, `property_id`, `value`) - варианты значений свойств
categories_properties(`category_id`, `property_id`, `order`) - возможные свойства по категориям товаров
item_values(`id`, `item_id`, `value_id`) - свойства товаров
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы