@Bel0g0r

Как лучше привязать товары интернет магазина к городам?

Имеется база товаров, разбитых по категориям. Нужно привязать каждый товар к определенному городу, в зависимости от того, какой город выбрал пользователь, выводить нужные товары.

Загвоздка в том, что в зависимости от города, рассчитывается стоимость доставки. Так же помимо города, может быть населенный пункт в черте города, который никак не прописать в базу, ибо их может быть N кол-во, а может и не быть вовсе. У одного и того же товара может быть разная стоимость, в зависимости от города. Человек выбравший город, может иметь не прямое отношение к нему, а находиться в 2-3 километрах от города.

Суть вопроса:
Как лучше производить запись и выборку товаров? Создавать товар для каждого города и хранить отдельно, либо же привязывать товар к нескольким городам и при выборке проверять есть ли id города в поле привязки? Или есть еще какие то варианты которые я не увидел?

P.S. Движок самописный и найти какие то готовые решения не вариант.
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 2
@IgoNsk
backend web developer
Судя по описанию задачи тут можно выделить 2 логические сущности:
* товары - набор свойств, которые описывают конкретный товар
* город
* товарное предложение - это по сути связь населенного пункта и товара, в котором помимо ссылок на первые два объекта есть еще стоимость доставки. Также можно добавить сюда дополнительное поле - населенный пункт, который будет раскрывать конкретный район место в рамках города, для чего валидна данная цена доставки.

Ну и все.
При извлечении делать join товаров на товарные предложения, и фильтровать по ID Города.

Либо эту инфу выносить в денормализованной форме в товар, но тогда отдеььно сделить за ее консистентностью
Ответ написан
Комментировать
alexander_v_pryadko
@alexander_v_pryadko
e-commerce: автоматизация, интеграция, учет
Если существует однозначная связь между товарами и местом их получения (городом, населенным пунктом и т.п.) то ее можно зафиксировать, как предложил Игорь Яцевич Игорь Яцевич - но это только 1 часть задачи. Можно фиксировать не город а область, куда входят определенные города. Территориальное деление. А вторая как мне видится, это связь между этой областью (городом) и местом проживания клиента (Иногда возникают ситуации когда конечный пункт практически равноудален от двух крупных городов где есть условный пункт выдачи, и пользователь должен сам решить откуда ему удобнее получить товар) - на этом этапе рассчитывать вторую часть стоимости доставки (при необходимости).

Создавать отдельный товар - очень странное решение, я бы его не советовал.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы