Как вы бы сделали БД содержащую такие данные?

P
На сайте с 06.01.2009
Offline
592
502

Ребят, привет. Если кто сможет посоветовать - буду рад.

Есть товары, у каждого товара существует несколько вариантов размеров и несколько типов поверхности. А именно

товар A - бывает - 10*10, 20*20 - матовый и глянцевый; 30*30 - матовый; 40*40, 60*60 - матовый, глянцевый и структурный.

товар Б - бывает - 15*15, 25*25 - матовый; 33*33 - структурный; 40*40, 60*60, 80*80 - матовый, структурный.

и т.д. товаров очень много.

Задача:

1. в странице показать юзеру фото товара и под ним подписать в каких размерах товар бывает и при этом показать какие поверхности бывают у этого размера.

2. нужна возможность поиска по таблице товара заданного размера с заданным вариантом поверхности.

Проблема - не могу решить как составить таблицу БД, чтобы потом было удобно оперировать данными. Пока только такой вариант, но может есть более правильный?

jpg 115751.jpg
IL
На сайте с 20.04.2007
Offline
435
#1

Можно EAV смотреть..

Можно "ручками".

В итоге "правильная" структура примерно такая:

Таблица размеров содержит (id-размер) 20*20 30*30 и тд

Таблица цветов содержит (id-цвет) naturale lev prelev

Таблица товар-размер-цвет содержит ID-шники (можно доп. данные добавлять)

id_товара id_размера id_цвета int_остаток decimal_цена is_active

Соответственно в админке в карточке товара плюсик - добавить расцветок - добавляется строчка с выпадающим списком (или autocomplete для удобства.. или мультиселекты, если уместно)

На сайте всё это в карточке товара отображается при помощи "связанных списков" (related select)

Как-то так по идее..

p.s. вариант реализации не единственный.. и далёк от "общего".. можно посмотреть, как аналогичное сделано в движках магазинов..

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
Alipapa
На сайте с 01.02.2008
Offline
194
#2

С точки зрения нормализации, ivan-lev дал самую правильную структуру. Но для конкретной задачи ее можно упрощать в ущерб универсальности. Например, сделать прямо в таблице товаров однобитовые поля (галочки) naturale, lev, prelev, glossy и т.д. Одинаковые товары разных размеров, скорее всего, лучше отдельными строками вносить, так как их, наверное, возможно большое разнообразие. Цвета тоже, если их количество небольшое, и не планируется изменение, тоже можно прямо в таблицу товаров как типы поверхностей, иначе же - каждому цвету отдельную запись

Биржа фриланса - простая и удобная (http://kwork.ru/ref/2541)
KS
На сайте с 02.11.2012
Offline
54
#3

таблица на каждую характеристику и в товаре поля для каждой характеристики, где будет айдишник из связующей или прямой таблицы, как организуете выборку

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий