четверг, 18 августа 2011 г.

Решение задачи более компактного представления товаров в каталоге на интернет-сайте


Есть конечное множество товаров с канонической иерархией (группы - подгруппы - товары). Каждый товар обладает своим словарем признаков (набор пар признак - значение). На множестве товаров встречаются однотипные группы, одинаковые во всем кроме одного (двух, трех) признаков.
Необходимо реорганизовать множество товаров так, чтобы имелась возможность представления таких групп как единого товара с разновидностями.

Пример: Кронштейны (для полки) разной длины и цвета. Если варианты по длинам: 100 мм, 200 мм, 300 мм, по цветам: белый и синий. Признак “материал” у всех одинаковый - сталь.

Решение: вводим понятие Типа товаров. Тип - это объединение нескольких товаров, схожих во всем, за исключением одного или нескольких признаков. При создании типа указываем, на основе какого признака (признаков) в него будут объединяться товары. Далее такие признаки будем называть вариативными. Остальные признаки для всех товаров внутри типа должны совпадать, их будем называть статическими.

Пример: Вводим тип “Кронштейн”. Объединяем в него все наши кронштейны. Вариативными параметрами будут “длина” и “цвет”. А “материал” будет статическим - он для всех товаров в типе одинаков.

После наполнения типа товарами по каждому вариативному признаку возникает конечная вариация - набор значений, в пределах которого изменяется данный признак в этом типе.
Набор признаков типа назовем Ортогональным, если для любого сочетания значений этих признаков найдется товар, их реализующий.

Пример: Вариация длины: 100, 200 или 300 мм. Вариация цвета: белый или синий. Для любого сочетания значений этих признаков у нас в ассортименте есть товар. Поэтому набор признаков ортогонален. Но если предположить, что синие кронштейны бывают только 100 и 200 мм, то набор признаков перестает быть ортогональным, поскольку вариация (синий, 300 мм) отсутствует среди возможных наборов значений.

В общем случае (ортогональный или неортогональный набор признаков у типа) для представления товаров нам необходимо по каждому выводить сразу весь состав пар признак - значение.
В случае ортогонального набора признаков у типа мы можем предоставить пользователю независимый выбор значений отдельно по каждому признаку. Ибо мы уверены, что любое возможное сочетание признаков воплощается в некоем товаре.

Пример: Поскольку у нашего типа “Кронштейн” набор признаков ортогональный, то проектируя интерфейс интернет-магазина, мы можем дать пользователю независимый выбор длины кронштейна и его цвета (можно использовать radio-button отдельно по цвету и по длине). Если же набор не ортогонален, то необходимо реализовывать общий выбор по всем парам (тройкам и т.д.) значений (белый, 100 мм), (белый, 200 мм)... и т.д.

Вывод. Объединяя схожие товары в типы мы делаем представление товарной группы на сайте более компактным. Блок типа занимает почти столько же места, сколько и блок одиночного товара. Незначительное дополнительное место требуется для раздела описания признаков, где вместо простого перечисления значений стоит интерфейс выбора.

Комментариев нет:

Отправить комментарий