vip

связь товаров с заказми

Recommended Posts

Подскажите как правильнее делать при создании интенет магазина.

 

Жесткая связь товаров с заказами, соответственно невозможность удалить товар из базы, если он заказан, что в свою очередь будет забивать базу старыми товарами, которых уже нет в наличии.

Или товар "жестко" записывать в заказ и не делать связи с таблицей товаров?

 

Какова обычная практика?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Наверное связь делать можно, если ассортимент не меняется и товаров/заказов не так много.

Но для обычных магазинов наверное лучше не завязывать все.

Посмотрел в Opencart, даже если товар заказн, его можно удалить из системы.

 

Может есть еще какие мнения?

Share this post


Link to post
Share on other sites

На мой взгляд оно так и должно быть (в смысле работать через ссылку из заказа на товар).

Рассмотрите ситуации на вашем интернет магазине, предположим

есть у вас n-количество товаров, скажем по k-штук

зарегистрировалось x-клиентов и купили у вас часть товара (регистрация естесно не обязательна)

1. теперь вдруг по какой-то причине вы изменили что-то в товаре

- в случае если информация о заказанном товаре будет храниться в заказе, вам придется менять его и во всех уже сделанных заказах + если эта информация большая это все будет очень много места занимать.

- если хранится только ссылка на товар, то достаточно отредактировать в одном месте.

2. хотите вы удалить скажем товар из базы и возникает сразу вопрос, а зачем вам это нужно?

Много места занимает? Мне кажется все копии этого товара в каждом заказе будут весить больше. Если вы конечно предусматриваете для клиентов историю их заказов на сайте.

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

...

можно продолжить этот список и дальше

Share this post


Link to post
Share on other sites

в принципе, с вашими аргументами согласен.

правда,

1) Если у ж меняем что то в товаре, то к старым заказам наверное это не должно относиться. ЧТо было заказано, то было заказано.

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

Как считаете такая идея?

Share this post


Link to post
Share on other sites

1. Например при забивке товаров сделали ошибку и написали "Малаток" (думаю стоит исправить и в заказах подобную оплошность)

Или например добавляется расширенные характеристики для данного товара, по которым потом можно было бы отфильтровать позиции (как это делается например на яндекс маркете). Раньше было указано например ручка деревянная, а теперь еще и ее длинна, было бы не плохо, чтобы данные о товаре из заказа совпадали с данными в каталоге. 

2. у вас 100500 заказов с этим товаром, сейчас он занимает в базе 1 строку, если вы его в каждый заказ пропишете - это в 100500 раз больше места занимает

Если вы хотите его удалить из каталога, скройте его там, но в базе он остается

Share this post


Link to post
Share on other sites

вовсе необязательно хранить полную информацию о заказанном товаре у клиента в заказе, достаточно ссылки в заказе на сам товар, которая ведет на карточку товара на сайте, наименования, цену и возможно артикул.

то что отредактированная информация товара должна попасть сразу в заказ - это верно, но попадет она только в заказ, который в админке, а как редактировать этот же самый заказ на почте у клиента? :) вот-вот, и я о том же, не стоит так сильно заморачиваться над этим, по сути эта фишка нужна только админам для удобства, а пользователю она никакой практической полезности не даст.

Share this post


Link to post
Share on other sites

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

Вся суть релляционных баз данных состоит как раз в этом. Если вы не можете в ЦМС магазина скрыть товар который вышел из оборота чтоб она не мешал - это недоработка самой ЦМС. Если вы хотите чтобы при удалении товара удалялись все записи в других таблицах (заказы например) - то настройте автоматическое удаление в самой СУБД. Или на крайний случай обнуление ссылающегося поля.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Member Statistics

    46,698
    Total Members
    3,128
    Most Online
    Dmitry3258
    Newest Member
    Dmitry3258
    Joined
  • Recently Browsing   0 members

    No registered users viewing this page.