Jump to content
  • Sign Up
vip

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

Recommended Posts

vip

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

 

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

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

 

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

Share this post


Link to post
Share on other sites
rus

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

Share this post


Link to post
Share on other sites
vip

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

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

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

 

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

Share this post


Link to post
Share on other sites
Switch74

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

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

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

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

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

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

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

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

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

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

...

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

Share this post


Link to post
Share on other sites
vip

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

правда,

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

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

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

Share this post


Link to post
Share on other sites
Switch74

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

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

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

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

Share this post


Link to post
Share on other sites
rus

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

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

Share this post


Link to post
Share on other sites
IMDb

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

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

Share this post


Link to post
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
Reply to this topic...

×   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.


  • Member Statistics

    46,895
    Total Members
    1,451
    Most Online
    Neovo
    Newest Member
    Neovo
    Joined
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Спрашивают сейчас

  • Пишут сейчас

    • DevCube
      Привет! Меня зовут Евгения и я ищу талантливых программистов в компанию DevCube. https://mydevcube.com/ Это международная компания, которая занимается DevOps, web и software разработками. На данный момент в команду требуются Full stack .NET (Junior & Senior) — 3+ year of commercial experience; — Strong knowledge of Angular 5+; — Strong knowledge of Typescript; — Experience with HTML/HTML5, CSS/CSS3, SCSS; — Good understanding of Git; — Conversational English. Будет плюсом: VB experience Условия: Удаленная работа full-time Зарплата от 10-20$/час по результатам собеседования. Обязательное условие - быть на связи до 21-22:00 по Москве. Для отклика прошу писать на почту: [email protected]
    • DevCube
      Привет! Меня зовут Евгения и я ищу талантливых программистов в компанию DevCube. https://mydevcube.com/ Это международная компания, которая занимается DevOps, web и software development. На данный момент в команду требуются PHP developers (Junior & Senior) Requirements: — 3+ year of commercial experience; — Strong knowledge PHP 7+ — Framework knowledge — Conversational English — CSS, Json, HTML5 Будет плюсом: Shopify implementation expertise. Условия: Удаленная работа full-time Зарплата от 10-20$/час по результатам собеседования. Обязательное условие - быть на связи до 21-22:00 по Москве. Для отклика прошу писать на почту: [email protected]
    • oleg126
      Подскажите пожалуйста, как позиционировать элемент на всю видимую область окна браузера? Есть слайдер, в котором крутятся картинки, и есть скрипт, благодаря которому картинка увеличивается, но не могу понять относительно какого элемента он позиционируется. <div class="sl_slider"> <div class="sl_img"> <img class="image" src="img/001-1.jpg" alt="001-1"> </div> <div class="sl_img"> <img class="image" src="img/002-2.jpg" alt="002-2.jpg"> </div> <div class="sl_img"> <img class="image" src="img/001-1.jpg" alt="001-1"> </div> <div class="sl_img"> <img class="image" src="img/002-2.jpg" alt="002-2.jpg"> </div> <div class="sl_img"> <img class="image" src="img/001-1.jpg" alt="001-1"> </div> <div class="sl_img"> <img class="image" src="img/002-2.jpg" alt="002-2.jpg"> </div> </div> .popup { position: absolute; height:100%; width:100%; top:0; left:0; display:none; text-align:center; } .popup_bg { background:rgba(0,0,0,0.4); position:absolute; z-index:1; height:100%; width:100%; } .popup_img { position: relative; margin:0 auto; z-index:2; max-height:94%; max-width:94%; margin:1% 0 0 0; } В классе popub выводится и позиционируется изображение, но как можно прописать его позиционирование на видимую обасть браузера? Решил  position: fixed;  у классов .popub_bg и .popub_img и margin выровнять как нужно. Может кому пригодится. 
  • Popular Contributors

    Nobody has received reputation this week.

×
×
  • Create New...