|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
tip78 Код: sql 1.
Ну ясно. Студенты, не имеющие ни грамма реального опыта, балуются с флагами. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:25 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинМои шикарные аргументы в защиту Вашего утверждения "все придется переделывать"? Хм. Знатный вы фантазёр. Я не нашёл в своих утверждениях подобных слов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:27 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинEnnor Tiegaelпропущено... Этот там нужен - по нему фильтрация идет. Или у вас все юзеры видят все корзины? Вы, конечно, можете сказать "а до кастомеров можно через ордеры достучаться" Разумеется можно - поэтому никакого "лишнего" места не тратится, одно поле заменяется другим.В большинстве магазинов аноним может зайти и начать собирать корзину до авторизации. Будете в БД анонимный заказ сохранять? И отличаете их потом, наверное, как-то друг от друга? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:27 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Ennor TiegaelВ большинстве магазинов аноним может зайти и начать собирать корзину до авторизации. Будете в БД анонимный заказ сохранять? И отличаете их потом, наверное, как-то друг от друга? Дык это.. у заказа будет статус «корзина» и «аноним» Мда. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:28 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Ennor TiegaelКот Матроскинпропущено... А вот у меня есть - потому что "отправить часть заказа, которую собрали" это офигенно частый кейс.Т.е. если у вас это есть, потому что вы решили не дробить заказы по адресам доставки, значит и у всех остальных так же должно быть? Понятненько. Я вообще-то привел другой кейс. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:29 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинEnnor Tiegaelпропущено... Т.е. если у вас это есть, потому что вы решили не дробить заказы по адресам доставки, значит и у всех остальных так же должно быть? Понятненько. Я вообще-то привел другой кейс.Круто. А в моей аргументации это был один из ключевых аспектов, т.к. если бизнес решит, что ему никогда не понадобится мультишиппинг, то много какая ересь может оказаться вполне жизнеспособной. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:35 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Ennor TiegaelКот Матроскинпропущено... Разумеется можно - поэтому никакого "лишнего" места не тратится, одно поле заменяется другим.В большинстве магазинов аноним может зайти и начать собирать корзину до авторизации. Будете в БД анонимный заказ сохранять? И отличаете их потом, наверное, как-то друг от друга? Конечно - анонимного пользователя с идентификацией по кукам и для него обычную корзину. Я еще раз повторяю - точно так же Вам придется сохранить анонимного пользователя для случая "корзина в отдельной таблице", вся разница - в том что у Вас будет CustomerID, а не OrderID. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:36 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот Матроскиндля случая "корзина в отдельной таблице", вся разница - в том что у Вас будет CustomerID, а не OrderID. OrderID в корзине вообще не нужен. На одну корзину может быть создано несколько заказов, а CustomerId нужен всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:38 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
tip78Ennor TiegaelНу и я до сих пор не увидел рациональной аргументации, зачем пользователю иметь OrderId на стадии наполнения корзины. Вы же понимаете, что столбцы на страницах занимают место, и каждое обращение к корзине будет этот столбец с диска поднимать, даже если он не включен в селект. Ну и размер таблицы в этом случае будет совсем не копеечный. чтобы товар попадал в его корзину, а не в чужую а ещё когда UID нет (авторизации не было), тоже надо как-то товар ловить...В большинстве магазинов аноним может зайти и начать собирать корзину до авторизации. Будете в БД анонимный заказ сохранять? И отличаете их потом, наверное, как-то друг от друга? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:40 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Ennor TiegaelКот Матроскинпропущено... Я вообще-то привел другой кейс.Круто. А в моей аргументации это был один из ключевых аспектов, т.к. если бизнес решит, что ему никогда не понадобится мультишиппинг, то много какая ересь может оказаться вполне жизнеспособной. Я сказал что нет проблем сделать мультишиппинг в концепции "одна таблица", наоборот , будет выигрыш за счет того что не придется второй раз реализовывать фичу. Вы ответили "А мне и так не придется - у меня первой фичи нет!". Ну и кто тут должен говорить "Раз у Вас нет - то и у других не должно быть?" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:40 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttКот Матроскиндля случая "корзина в отдельной таблице", вся разница - в том что у Вас будет CustomerID, а не OrderID. OrderID в корзине вообще не нужен. На одну корзину может быть создано несколько заказов, а CustomerId нужен всегда. Нет, в случае наличия OrderID customerID в корзине не нужен. Тут даже на 2 шага вперед думать необязательно - это прямо на нулевом шаге видно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:42 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVostttip78hVosttпропущено... Дело даже не в этом. Само наличие заказа подразумевает начало некоего workflow, появление нового заказа в системе это событие. А работа с корзиной это совершенно отдельная история. С корзиной могут быть связаны совершенно другие процессы. какие? Что какие? Заказ сам себя сформирует, проведёт и проверит оплату, укомплектуется, и сам себя передаст в службу доставки? Где сам себя доставит и проконтролирует? это процессы не с корзиной, а с заказом (у меня это одна сущность, у вас - 2). Я спрашивал - какие "совершенно другие процессы" вы делаете с корзиной, что её непременно надо отделять от заказа? Если хотите хранить все клиентские "добавить/удалить" (кому они нужны?), то сделайте таблицу истории. hVostttip78для этого статусы есть, как тут 20796966 и вообще "история заказа" это другая сущность (если она вам действительно нужна подробная), а не корзина + заказ Корзина не является заказом. Это не статус заказа. Не согласны? вы всё пытаетесь привязать к корзине какие-то события, которые непременно надо обрабатывать отдельно от заказа, но их НЕТ. И это ключевой момент. всё что юзер собрал в заказ просто едет дальше, а история наполнения/редактирования - ну ведите, если надо, в отдельной таблице, только это просто статусы, они не разбивают заказ на ДО = корзина и ПОСЛЕ = заказ. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:51 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинEnnor Tiegaelпропущено... В большинстве магазинов аноним может зайти и начать собирать корзину до авторизации. Будете в БД анонимный заказ сохранять? И отличаете их потом, наверное, как-то друг от друга? Конечно - анонимного пользователя с идентификацией по кукам и для него обычную корзину. Я еще раз повторяю - точно так же Вам придется сохранить анонимного пользователя для случая "корзина в отдельной таблице", вся разница - в том что у Вас будет CustomerID, а не OrderID.Анонимный пользователь будет хранить свою корзину в локальной куке и нигде более. Полагаю, что спецслужбы знают способ, как сопоставить 2 анонимные сессии с разных айпишников, но мне он неизвестен. Ключевое же отличие в том, что клиент, действительно, есть всегда, а вот заказ появляется только после того, как пользователь: Авторизовался; Нажал submit. А там, где нет заказа, нет и OrderId. Чел может днями играться со своей корзиной, а потом все нафиг стереть и ничего не взять - понятно, что для какого-нибудь поведенческого дата майнинга вся эта история действий может быть полезной, не это все-таки совсем притягивание за уши. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:53 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинНет, в случае наличия OrderID customerID в корзине не нужен. Тут даже на 2 шага вперед думать необязательно - это прямо на нулевом шаге видно :) Т.е. не получится сделать 2 разных заказа на 1 корзину? Ясненько. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:55 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
tip78это процессы не с корзиной, а с заказом (у меня это одна сущность, у вас - 2). Я спрашивал - какие "совершенно другие процессы" вы делаете с корзиной, что её непременно надо отделять от заказа? Если хотите хранить все клиентские "добавить/удалить" (кому они нужны?), то сделайте таблицу истории. Историчность -- отдельная песня. Зачем я буду логику класть на историчность? tip78вы всё пытаетесь привязать к корзине какие-то события, которые непременно надо обрабатывать отдельно от заказа, но их НЕТ. И это ключевой момент. Как это нет? А уведомление: вы положили в корзину товары, но не оформили заказ? А уведомление, товар, который вы добавили в корзину появился в наличии? Вы в каком мире живёте, в вымышленном, если у вас таких событий нет? tip78всё что юзер собрал в заказ просто едет дальше, а история наполнения/редактирования - ну ведите, если надо, в отдельной таблице, только это просто статусы, они не разбивают заказ на ДО = корзина и ПОСЛЕ = заказ. Дальше едет заказ. Вы в жизни посмотрите как это делается. Придите в магазин. Что видите? Корзину. Или вы сразу сразу оформляете чек? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:58 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Ennor TiegaelКот Матроскинпропущено... Конечно - анонимного пользователя с идентификацией по кукам и для него обычную корзину. Я еще раз повторяю - точно так же Вам придется сохранить анонимного пользователя для случая "корзина в отдельной таблице", вся разница - в том что у Вас будет CustomerID, а не OrderID.Анонимный пользователь будет хранить свою корзину в локальной куке и нигде более. "Если у Вас так, то и у других должно быть так? Понятненько" (с) У меня хранятся в базе корзины анонимных пользователей. И да, статистические отчеты по этим корзинам для отдела продаж есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:59 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Ennor Tiegaeltip78пропущено... чтобы товар попадал в его корзину, а не в чужую а ещё когда UID нет (авторизации не было), тоже надо как-то товар ловить...В большинстве магазинов аноним может зайти и начать собирать корзину до авторизации. Будете в БД анонимный заказ сохранять? И отличаете их потом, наверное, как-то друг от друга? не "буду", а сохраняю ) во1, это статистика, её можно поанализировать во2, опять же всё в одном месте (где ещё их хранить и зачем?) в3, клиенту напоминалка придёт про его незаконченную корзину в4, через какое-то время незаконченные удаляются ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:02 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttКот МатроскинНет, в случае наличия OrderID customerID в корзине не нужен. Тут даже на 2 шага вперед думать необязательно - это прямо на нулевом шаге видно :) Т.е. не получится сделать 2 разных заказа на 1 корзину? Ясненько. Глупости :) Вам надо как-то переформатировать свои сообщения - писать "Дяденька, а как сделать 2 разных заказа на одну корзину в случае хранения в одной таблице? Я не умею :(" - не исключено что так Вы скорее научитесь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:02 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
тьфу, напоминалка не в этом случае )) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:03 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
tip78вы всё пытаетесь привязать к корзине какие-то события, которые непременно надо обрабатывать отдельно от заказа, но их НЕТ. И это ключевой момент.Наоборот - это у заказа есть действия, которые отсутствуют у корзины. Я писал, что атрибуты тоже отличаются - для корзины будет достаточно ( CustomerId, ItemId , Count); для детали заказа, очевидно, нет. Или это только мне очевидно, и надо реально объяснять? Что вы действительно упускаете, так это лес за деревьями. Данные в корзине по природе своей временные. Лично мне в базе они вообще не нужны - строго говоря, для них даже РСУБД не нужна, достаточно простейшего blob list. Поэтому я выношу таблицу корзины в отдельную БД, ставлю ей simple recovery и экономлю на бэкапах лога (в оракле, вроде бы, можно на уровне таблиц логирование отключать). Если что-то гавкнется, то потери будут минимальны и не критичны. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:16 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttА уведомление: вы положили в корзину товары, но не оформили заказ? А уведомление, товар, который вы добавили в корзину появился в наличии?Кстати, да, совершенно забыл. Окей, согласен, корзину надо хранить в БД - но никто не требует, что это должна быть та же БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:25 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Ennor TiegaelНаоборот - это у заказа есть действия, которые отсутствуют у корзины. У заказа в комплектации есть действия, которые отсутствуют у отправленного заказа, у отправленного - те которые отсутствуют у выполненного, etc. Тоже будем бить их на разные классы/таблицы? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:31 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
tip78в3, клиенту напоминалка придёт про его незаконченную корзинуМмм? Анониму? tip78в4, через какое-то время незаконченные удаляютсяЕсли каждый заказ - это событие, то возможно. Когда их сотни тысяч в день, удаление из такой таблицы будет вести к фрагментации, а ребилдить индексы в 24*7 системе обычно непросто. Мне здравый смысл подсказывает, что можно сэкономить на дефрагментации, не записывая туда данные, которые могут быть впоследствии удалены. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:37 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинEnnor TiegaelНаоборот - это у заказа есть действия, которые отсутствуют у корзины. У заказа в комплектации есть действия, которые отсутствуют у отправленного заказа, у отправленного - те которые отсутствуют у выполненного, etc. Тоже будем бить их на разные классы/таблицы? :)Где вас учили так перегибать палку с использованием reductio ad absurdum? Толсто же. Кстати говоря - да, их действительно имеет смысл разносить по разным таблицам. Точнее, на разных этапах воркфлоу заказ обрастает дополнительными данными, которые отсутствовали на предыдущих стадиях. Разбивка по складам, в общем случае, может быть неизвестна в самом начале, и заполняться позже. Трекинг(и) доставки появляются только после отправки. Оплата - я говорю о цивилизованных странах, где cash on delivery большая редкость - вообще целая отдельная вселенная. Я надеюсь, вы понимаете, что все это, и многое другое, хранится в своих собственных таблицах, а не в позициях заказа. С моей т.з. главное тут, что оформленные заказы во всех последующих стадиях одинаково персистентны. Корзина же временная по своей природе, и схема данных у нее совсем другая. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:52 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
registerersСуть проблемы можно пояснить на примере того же банального интернет-магазина. Есть множество таблиц разных товаров, потому что набор свойств (атрибутов) у них разный. Например, булка хлеба и како-нибудь девайс. Вопрос - как положить в корзину и то, и другое, и пятое-десятое? Ответ на твой "супер-сложный" вопрос так же суперпрост: надо использовать наследование, оно же отношение подкатегории (между сущностями). Вжух -- и нет проблем! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 16:30 |
|
|
start [/forum/topic.php?fid=32&msg=39521864&tid=1540132]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
140ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 252ms |
0 / 0 |