powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Реляционка тут бессильна?
25 сообщений из 169, страница 5 из 7
Реляционка тут бессильна?
    #39521813
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
Код: sql
1.
status smallint default 1,      -- статус заказа: 1 корзина; 2 оформлен; 4 подтверждён; 8 отказ; 16 собран; 32 передан курьеру; 64 доставлен; 128 оплачен;



Ну ясно. Студенты, не имеющие ни грамма реального опыта, балуются с флагами.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521814
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинМои шикарные аргументы в защиту Вашего утверждения "все придется переделывать"? Хм.

Знатный вы фантазёр. Я не нашёл в своих утверждениях подобных слов.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521815
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинEnnor Tiegaelпропущено...
Этот там нужен - по нему фильтрация идет. Или у вас все юзеры видят все корзины? Вы, конечно, можете сказать "а до кастомеров можно через ордеры достучаться"
Разумеется можно - поэтому никакого "лишнего" места не тратится, одно поле заменяется другим.В большинстве магазинов аноним может зайти и начать собирать корзину до авторизации. Будете в БД анонимный заказ сохранять? И отличаете их потом, наверное, как-то друг от друга?
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521816
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelВ большинстве магазинов аноним может зайти и начать собирать корзину до авторизации. Будете в БД анонимный заказ сохранять? И отличаете их потом, наверное, как-то друг от друга?

Дык это.. у заказа будет статус «корзина» и «аноним»

Мда.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521817
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelКот Матроскинпропущено...

А вот у меня есть - потому что "отправить часть заказа, которую собрали" это офигенно частый кейс.Т.е. если у вас это есть, потому что вы решили не дробить заказы по адресам доставки, значит и у всех остальных так же должно быть? Понятненько.
Я вообще-то привел другой кейс.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521821
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинEnnor Tiegaelпропущено...
Т.е. если у вас это есть, потому что вы решили не дробить заказы по адресам доставки, значит и у всех остальных так же должно быть? Понятненько.
Я вообще-то привел другой кейс.Круто. А в моей аргументации это был один из ключевых аспектов, т.к. если бизнес решит, что ему никогда не понадобится мультишиппинг, то много какая ересь может оказаться вполне жизнеспособной.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521822
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelКот Матроскинпропущено...

Разумеется можно - поэтому никакого "лишнего" места не тратится, одно поле заменяется другим.В большинстве магазинов аноним может зайти и начать собирать корзину до авторизации. Будете в БД анонимный заказ сохранять? И отличаете их потом, наверное, как-то друг от друга?
Конечно - анонимного пользователя с идентификацией по кукам и для него обычную корзину.
Я еще раз повторяю - точно так же Вам придется сохранить анонимного пользователя
для случая "корзина в отдельной таблице", вся разница - в том что у Вас будет CustomerID, а не OrderID.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521827
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскиндля случая "корзина в отдельной таблице", вся разница - в том что у Вас будет CustomerID, а не OrderID.

OrderID в корзине вообще не нужен. На одну корзину может быть создано несколько заказов, а CustomerId нужен всегда.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521829
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Ennor TiegaelНу и я до сих пор не увидел рациональной аргументации, зачем пользователю иметь OrderId на стадии наполнения корзины. Вы же понимаете, что столбцы на страницах занимают место, и каждое обращение к корзине будет этот столбец с диска поднимать, даже если он не включен в селект. Ну и размер таблицы в этом случае будет совсем не копеечный.
чтобы товар попадал в его корзину, а не в чужую
а ещё когда UID нет (авторизации не было), тоже надо как-то товар ловить...В большинстве магазинов аноним может зайти и начать собирать корзину до авторизации. Будете в БД анонимный заказ сохранять? И отличаете их потом, наверное, как-то друг от друга?
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521831
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelКот Матроскинпропущено...

Я вообще-то привел другой кейс.Круто. А в моей аргументации это был один из ключевых аспектов, т.к. если бизнес решит, что ему никогда не понадобится мультишиппинг, то много какая ересь может оказаться вполне жизнеспособной.

Я сказал что нет проблем сделать мультишиппинг в концепции "одна таблица", наоборот , будет выигрыш за счет того что не придется второй раз реализовывать фичу. Вы ответили "А мне и так не придется - у меня первой фичи нет!". Ну и кто тут должен говорить "Раз у Вас нет - то и у других не должно быть?"
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521836
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКот Матроскиндля случая "корзина в отдельной таблице", вся разница - в том что у Вас будет CustomerID, а не OrderID.

OrderID в корзине вообще не нужен. На одну корзину может быть создано несколько заказов, а CustomerId нужен всегда.
Нет, в случае наличия OrderID customerID в корзине не нужен. Тут даже на 2 шага вперед думать необязательно - это прямо на нулевом шаге видно :)
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521852
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostttip78hVosttпропущено...


Дело даже не в этом. Само наличие заказа подразумевает начало некоего workflow, появление нового заказа в системе это событие. А работа с корзиной это совершенно отдельная история. С корзиной могут быть связаны совершенно другие процессы.
какие?

Что какие? Заказ сам себя сформирует, проведёт и проверит оплату, укомплектуется, и сам себя передаст в службу доставки? Где сам себя доставит и проконтролирует?
это процессы не с корзиной, а с заказом (у меня это одна сущность, у вас - 2). Я спрашивал - какие "совершенно другие процессы" вы делаете с корзиной, что её непременно надо отделять от заказа? Если хотите хранить все клиентские "добавить/удалить" (кому они нужны?), то сделайте таблицу истории.

hVostttip78для этого статусы есть, как тут 20796966
и вообще "история заказа" это другая сущность (если она вам действительно нужна подробная), а не корзина + заказ

Корзина не является заказом. Это не статус заказа. Не согласны?
вы всё пытаетесь привязать к корзине какие-то события, которые непременно надо обрабатывать отдельно от заказа,
но их НЕТ. И это ключевой момент.
всё что юзер собрал в заказ просто едет дальше, а история наполнения/редактирования - ну ведите, если надо, в отдельной таблице, только это просто статусы, они не разбивают заказ на ДО = корзина и ПОСЛЕ = заказ.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521854
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинEnnor Tiegaelпропущено...
В большинстве магазинов аноним может зайти и начать собирать корзину до авторизации. Будете в БД анонимный заказ сохранять? И отличаете их потом, наверное, как-то друг от друга?
Конечно - анонимного пользователя с идентификацией по кукам и для него обычную корзину.
Я еще раз повторяю - точно так же Вам придется сохранить анонимного пользователя
для случая "корзина в отдельной таблице", вся разница - в том что у Вас будет CustomerID, а не OrderID.Анонимный пользователь будет хранить свою корзину в локальной куке и нигде более. Полагаю, что спецслужбы знают способ, как сопоставить 2 анонимные сессии с разных айпишников, но мне он неизвестен.

Ключевое же отличие в том, что клиент, действительно, есть всегда, а вот заказ появляется только после того, как пользователь:
Авторизовался;

Нажал submit.

А там, где нет заказа, нет и OrderId. Чел может днями играться со своей корзиной, а потом все нафиг стереть и ничего не взять - понятно, что для какого-нибудь поведенческого дата майнинга вся эта история действий может быть полезной, не это все-таки совсем притягивание за уши.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521855
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинНет, в случае наличия OrderID customerID в корзине не нужен. Тут даже на 2 шага вперед думать необязательно - это прямо на нулевом шаге видно :)

Т.е. не получится сделать 2 разных заказа на 1 корзину? Ясненько.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521860
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78это процессы не с корзиной, а с заказом (у меня это одна сущность, у вас - 2). Я спрашивал - какие "совершенно другие процессы" вы делаете с корзиной, что её непременно надо отделять от заказа? Если хотите хранить все клиентские "добавить/удалить" (кому они нужны?), то сделайте таблицу истории.

Историчность -- отдельная песня. Зачем я буду логику класть на историчность?


tip78вы всё пытаетесь привязать к корзине какие-то события, которые непременно надо обрабатывать отдельно от заказа,
но их НЕТ. И это ключевой момент.

Как это нет? А уведомление: вы положили в корзину товары, но не оформили заказ? А уведомление, товар, который вы добавили в корзину появился в наличии? Вы в каком мире живёте, в вымышленном, если у вас таких событий нет?


tip78всё что юзер собрал в заказ просто едет дальше, а история наполнения/редактирования - ну ведите, если надо, в отдельной таблице, только это просто статусы, они не разбивают заказ на ДО = корзина и ПОСЛЕ = заказ.

Дальше едет заказ. Вы в жизни посмотрите как это делается. Придите в магазин. Что видите? Корзину. Или вы сразу сразу оформляете чек?
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521861
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelКот Матроскинпропущено...

Конечно - анонимного пользователя с идентификацией по кукам и для него обычную корзину.
Я еще раз повторяю - точно так же Вам придется сохранить анонимного пользователя
для случая "корзина в отдельной таблице", вся разница - в том что у Вас будет CustomerID, а не OrderID.Анонимный пользователь будет хранить свою корзину в локальной куке и нигде более.

"Если у Вас так, то и у других должно быть так? Понятненько" (с)
У меня хранятся в базе корзины анонимных пользователей. И да, статистические отчеты по этим корзинам для отдела продаж есть.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521864
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegaeltip78пропущено...

чтобы товар попадал в его корзину, а не в чужую
а ещё когда UID нет (авторизации не было), тоже надо как-то товар ловить...В большинстве магазинов аноним может зайти и начать собирать корзину до авторизации. Будете в БД анонимный заказ сохранять? И отличаете их потом, наверное, как-то друг от друга?
не "буду", а сохраняю )
во1, это статистика, её можно поанализировать
во2, опять же всё в одном месте (где ещё их хранить и зачем?)
в3, клиенту напоминалка придёт про его незаконченную корзину
в4, через какое-то время незаконченные удаляются
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521865
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКот МатроскинНет, в случае наличия OrderID customerID в корзине не нужен. Тут даже на 2 шага вперед думать необязательно - это прямо на нулевом шаге видно :)

Т.е. не получится сделать 2 разных заказа на 1 корзину? Ясненько.
Глупости :)
Вам надо как-то переформатировать свои сообщения - писать "Дяденька, а как сделать 2 разных заказа на одну корзину в случае хранения в одной таблице? Я не умею :(" - не исключено что так Вы скорее научитесь :)
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521868
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тьфу, напоминалка не в этом случае ))
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521875
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78вы всё пытаетесь привязать к корзине какие-то события, которые непременно надо обрабатывать отдельно от заказа,
но их НЕТ. И это ключевой момент.Наоборот - это у заказа есть действия, которые отсутствуют у корзины. Я писал, что атрибуты тоже отличаются - для корзины будет достаточно ( CustomerId, ItemId , Count); для детали заказа, очевидно, нет. Или это только мне очевидно, и надо реально объяснять?

Что вы действительно упускаете, так это лес за деревьями. Данные в корзине по природе своей временные. Лично мне в базе они вообще не нужны - строго говоря, для них даже РСУБД не нужна, достаточно простейшего blob list. Поэтому я выношу таблицу корзины в отдельную БД, ставлю ей simple recovery и экономлю на бэкапах лога (в оракле, вроде бы, можно на уровне таблиц логирование отключать). Если что-то гавкнется, то потери будут минимальны и не критичны.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521879
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttА уведомление: вы положили в корзину товары, но не оформили заказ? А уведомление, товар, который вы добавили в корзину появился в наличии?Кстати, да, совершенно забыл. Окей, согласен, корзину надо хранить в БД - но никто не требует, что это должна быть та же БД.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521884
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelНаоборот - это у заказа есть действия, которые отсутствуют у корзины.
У заказа в комплектации есть действия, которые отсутствуют у отправленного заказа, у отправленного - те которые отсутствуют у выполненного, etc. Тоже будем бить их на разные классы/таблицы? :)
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521888
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78в3, клиенту напоминалка придёт про его незаконченную корзинуМмм? Анониму?
tip78в4, через какое-то время незаконченные удаляютсяЕсли каждый заказ - это событие, то возможно. Когда их сотни тысяч в день, удаление из такой таблицы будет вести к фрагментации, а ребилдить индексы в 24*7 системе обычно непросто. Мне здравый смысл подсказывает, что можно сэкономить на дефрагментации, не записывая туда данные, которые могут быть впоследствии удалены.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521901
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинEnnor TiegaelНаоборот - это у заказа есть действия, которые отсутствуют у корзины.
У заказа в комплектации есть действия, которые отсутствуют у отправленного заказа, у отправленного - те которые отсутствуют у выполненного, etc. Тоже будем бить их на разные классы/таблицы? :)Где вас учили так перегибать палку с использованием reductio ad absurdum? Толсто же.

Кстати говоря - да, их действительно имеет смысл разносить по разным таблицам. Точнее, на разных этапах воркфлоу заказ обрастает дополнительными данными, которые отсутствовали на предыдущих стадиях. Разбивка по складам, в общем случае, может быть неизвестна в самом начале, и заполняться позже. Трекинг(и) доставки появляются только после отправки. Оплата - я говорю о цивилизованных странах, где cash on delivery большая редкость - вообще целая отдельная вселенная. Я надеюсь, вы понимаете, что все это, и многое другое, хранится в своих собственных таблицах, а не в позициях заказа.

С моей т.з. главное тут, что оформленные заказы во всех последующих стадиях одинаково персистентны. Корзина же временная по своей природе, и схема данных у нее совсем другая.
...
Рейтинг: 0 / 0
Реляционка тут бессильна?
    #39521971
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
registerersСуть проблемы можно пояснить на примере того же банального интернет-магазина. Есть множество таблиц разных товаров, потому что набор свойств (атрибутов) у них разный. Например, булка хлеба и како-нибудь девайс. Вопрос - как положить в корзину и то, и другое, и пятое-десятое?

Ответ на твой "супер-сложный" вопрос так же суперпрост:
надо использовать наследование, оно же отношение подкатегории (между сущностями).
Вжух -- и нет проблем!
...
Рейтинг: 0 / 0
25 сообщений из 169, страница 5 из 7
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Реляционка тут бессильна?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]