Comments 9
Секреты правильных таблиц
Заключаются в том, что, по правилам, положено еще иметь таблицу PRICES(id, product_id, price, open_at not_null, closed_at, ...) и из order_items делать ссылку в PRICES. В общем, так себе у вас секреты правильных таблиц.
P.S: и total в orders не нужен, он через sum() вычисляется
Это если у вас цена всегда одинаковая, для всех заказов , за все годы . А так она обычно меняется, иногда в пределах 15 минутного ролика в магазине на диване, который может быть привязан к вебшопу. И таких кейсов полно - акции, купоны, инфляция....
Ключевая ошибка - наличие цены не в ORDER_ITEMS, а наличие цены в PRODUCTS, которое приводит к потере информации.
А про то что вы перечислили - для всей этой фигни цена есть много вариантов. Самых частых два - например дублируют фактическую цену (а иногда и сумму) в order_items. Правда часто забывают предусмотреть что надо где-то сохранить почему цена именно такая а не стандартная, и потом начинаются гнилые разборки "а почему продали так дешево"
Второй - реже используемый но технически более правильный используемый вариант - когда у вас задекларировано несколько цен - например базовая, цена по карте, цена акционная и так далее (каждая отдельной строкой в таблице цен), и вы просто ссылаетесь на соответствующую цену.
В любом случае, цены больше нет в таблице PRODUCTS
Насчет криворуких разрабов: как-то раз мне надо было найти несколько sfx, а нужные были на одном из сайтов, на котором скачивать можно было только с подпиской, а прослушивать бесплатно. Не долго думая я полез в консоль и обнаружил, что аудио передается просто в mp3 файле
А это уже естественное отсутствие ограничений самого формата. Если звук можно слушать, то ничто не мешает осуществить запись этого звука в каком-нибудь аудиоредакторе, а потом сохранить записанное в MP3.
Лицензия на так работает. Если просто послушать - это работает, а если использовать, то могут потянуть в суд.
При чем тут low/no-code? Обычное рукожопство. Если в ДНК ошибки, то накосячить можно где угодно и на чем угодно.
И нет, low/no-code это совсем не круто. Это грустно.
Очередные советы, которые делают только хуже :)
price с клиента в коммерции надо передавать ОБЯЗАТЕЛЬНО, а потом уже проверять на сервере соответствие и возвращать «Цена изменилась», если она изменилась, иначе пользователь откроет форму со старой ценой, будет думать, что покупает за старую цену, и пока он смотрит цена может поменяться и там дальше куча проблем, начиная от заказа с другой ценой, заканчивая списанием другой суммы…
Low-code API: Как ваш разработчик может разорить вас одной строчкой кода (почему корзина — это минное поле)