Jump to content
  • 0

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


vip
 Share

Question

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

 

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

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

 

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

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

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

Link to comment
Share on other sites

  • 0

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

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

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

 

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

Link to comment
Share on other sites

  • 0

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

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

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

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

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

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

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

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

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

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

...

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

Link to comment
Share on other sites

  • 0

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

правда,

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

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

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

Link to comment
Share on other sites

  • 0

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

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

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

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

Link to comment
Share on other sites

  • 0

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

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

Link to comment
Share on other sites

  • 0

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

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy