|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот Матроскину Вас в системе все равно уже есть API "переложить часть заказа в новый заказ"Нет у меня такого, зачем он мне? Как юзер по заказам разбил, так и сохраню. Даже если какой-то позиции не было в корзине - пофиг, в пост-контроллер пришло, значит надо. Кот МатроскинУ Вас будет CustomerID вместо этого - который точно так же занимает место, поднимается с диска и т.п.Этот там нужен - по нему фильтрация идет. Или у вас все юзеры видят все корзины? Вы, конечно, можете сказать "а до кастомеров можно через ордеры достучаться", но если, как предполагал ТС, изначально писать в это поле null... В общем, бритву Оккама вы не убедили. Насчет ТС - не в курсе, я это тут пишу, скорее, для тех, кто потом найдет этот топик и будет пытаться сделать по аналогии. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 11:02 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttКот МатроскинЧто именно из перечисленного у Вас не получается в случае единой таблицы? Зачем вы приплели сюда понятие «получится»? Потому что Вы приплели "переделывать". Переделывают что-то тогда, когда некую дополнительную функциональность реализовать либо не получается совсем, либо получается очень сложно. Так что же это за функциональность? hVosttУдобно и комфортно работать с этим, если для разных по смыслу и функциональности понятий будут выделены отдельные сущности и таблицы. Да-да, как в соседней ветке - таблица Girl, таблица Man ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 11:09 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Ennor TiegaelКот Матроскину Вас в системе все равно уже есть API "переложить часть заказа в новый заказ"Нет у меня такого, зачем он мне? Как юзер по заказам разбил, так и сохраню. Даже если какой-то позиции не было в корзине - пофиг, в пост-контроллер пришло, значит надо. А вот у меня есть - потому что "отправить часть заказа, которую собрали" это офигенно частый кейс. Ennor TiegaelКот МатроскинУ Вас будет CustomerID вместо этого - который точно так же занимает место, поднимается с диска и т.п.Этот там нужен - по нему фильтрация идет. Или у вас все юзеры видят все корзины? Вы, конечно, можете сказать "а до кастомеров можно через ордеры достучаться" Разумеется можно - поэтому никакого "лишнего" места не тратится, одно поле заменяется другим. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 11:14 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинПотому что Вы приплели "переделывать". Переделывают что-то тогда, когда некую дополнительную функциональность реализовать либо не получается совсем, либо получается очень сложно. Так что же это за функциональность? Например, хранение истории корзины и заказов. Заказы могут меняться, переукомплектовываться, разбиваться, сливаться, корзина в истории нет. Мульти-корзина, всяческие программы лояльности, и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 11:45 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинhVosttУдобно и комфортно работать с этим, если для разных по смыслу и функциональности понятий будут выделены отдельные сущности и таблицы. Да-да, как в соседней ветке - таблица Girl, таблица Man Гендер это характеристика. А корзина или заказ -- нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 11:45 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttКот МатроскинПотому что Вы приплели "переделывать". Переделывают что-то тогда, когда некую дополнительную функциональность реализовать либо не получается совсем, либо получается очень сложно. Так что же это за функциональность? Например, хранение истории корзины и заказов. Заказы могут меняться, переукомплектовываться, разбиваться, сливаться, корзина в истории нет. Мульти-корзина, всяческие программы лояльности, и т.д. Ээ... и что в этом сложного? манипуляции с заказом в статусе "корзина" не создают следов в "исторических" таблицах, с заказами в остальных статусах - создают. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 12:14 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttКот Матроскинавтор д ля разных по смыслу и функциональности понятий будут выделены отдельные сущности и таблицы Да-да, как в соседней ветке - таблица Girl, таблица Man Гендер это характеристика. А корзина или заказ -- нет. Начинаете изобретать определение на ходу :) раньше было "разных по смыслу и функциональности". Man и Girl - вполне себе разные по смыслу и уж тем более по функциональности :) А "характеристика" или "не характеристика" - это вообще зависит не от самого понятия, а от модели, скажу по секрету ;) В каких-то моделях - характеристика, в каких-то - ключевое различие. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 12:20 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинЭэ... и что в этом сложного? манипуляции с заказом в статусе "корзина" не создают следов в "исторических" таблицах, с заказами в остальных статусах - создают. Заказ в статусе «корзина»? Лан, проехали. Бессмысленный спор. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 12:20 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинНачинаете изобретать определение на ходу :) раньше было "разных по смыслу и функциональности". Man и Girl - вполне себе разные по смыслу и уж тем более по функциональности :) А "характеристика" или "не характеристика" - это вообще зависит не от самого понятия, а от модели, скажу по секрету ;) В каких-то моделях - характеристика, в каких-то - ключевое различие. Какие определения? Есть субъект «участник», у него есть характеристика «пол» — это атрибут субъекта. Два субъекта взаимодействуют друг с другом. Корзина и заказ это разные с точки зрения функциональности классы, они работают в разных ограниченных контекстах. Вплоть до того, что управление заказами может осуществляться вообще в другой системе со своей базой данных, и для заказа абсолютно параллельно, была ли какая-то корзина или нет. Для корзины может быть сформирован заказ, на основе позиций в корзине, при чём не обязательно, что в заказ попадут все позиции из корзины, или в заказ не будут добавлены позиции при уточнении по телефону. В общем понятно всё с вашей аргементацией. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 12:25 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttКот МатроскинЭэ... и что в этом сложного? манипуляции с заказом в статусе "корзина" не создают следов в "исторических" таблицах, с заказами в остальных статусах - создают. Заказ в статусе «корзина»? Лан, проехали. Бессмысленный спор. Если оперировать демагогическими штампами типа "надо думать головой", "придется переделывать" и т.п. - конечно бессмысленный. А если обсуждать конкретные объективные вещи типа сложности реализации той или иной фичи - вполне себе осмысленный правда, очень невыгодный для некоторых участников ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 12:27 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVostt и для заказа абсолютно параллельно, была ли какая-то корзина или нет. Для корзины может быть сформирован заказ, на основе позиций в корзине, при чём не обязательно, что в заказ попадут все позиции из корзины, или в заказ не будут добавлены позиции при уточнении по телефону. Как это все связано с вопросом "одна таблица или две"? :) В случае одной таблицы Вы будете мучиться месяц, разобьете пару клавиатур и выдерете остатки волос, но так и сможете придумать, как реализовать "не обязательно, что в заказ попадут все позиции из корзины"? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 12:33 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинЕсли оперировать демагогическими штампами типа "надо думать головой", "придется переделывать" и т.п. - конечно бессмысленный. А если обсуждать конкретные объективные вещи типа сложности реализации той или иной фичи - вполне себе осмысленный правда, очень невыгодный для некоторых участников Был интернет-магазин. Потом открылись бутики, заказы по телефону, оптовые продажи, торговля с юр. лицами — на кой хрен упала тут корзина? Корзина это лишь концепция пользователя интернет-магазина, один из многочисленных источников формирования заказа. Думать головой и на пару шагов вперёд уже не модно? Апологеты херак-херак и в продакшен занимают нишу разработчиков? Не думаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 12:33 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинКак это все связано с вопросом "одна таблица или две"? :) В случае одной таблицы Вы будете мучиться месяц, разобьете пару клавиатур и выдерете остатки волос, но так и сможете придумать, как реализовать "не обязательно, что в заказ попадут все позиции из корзины"? Связано напрямую. Вы либо с самого начала понимаете устройство модели, либо не понимаете и тулите заказ и корзину в одну таблицу со смешным статусом «корзина». Даже джуниору это простительно лишь с натяжкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 12:35 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttКот МатроскинЕсли оперировать демагогическими штампами типа "надо думать головой", "придется переделывать" и т.п. - конечно бессмысленный. А если обсуждать конкретные объективные вещи типа сложности реализации той или иной фичи - вполне себе осмысленный правда, очень невыгодный для некоторых участников Был интернет-магазин. Потом открылись бутики, заказы по телефону, оптовые продажи, торговля с юр. лицами — на кой хрен упала тут корзина? Корзина это лишь концепция пользователя интернет-магазина, один из многочисленных источников формирования заказа. И что? Наличие корзин в той же таблице, что и заказы запрещает создавать заказы без корзин? Нет, не запрещает и не мешает, это Вас кто-то обманул, а Вы не попытались "подумать головой и на два шага вперед" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 12:39 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttКот МатроскинКак это все связано с вопросом "одна таблица или две"? :) В случае одной таблицы Вы будете мучиться месяц, разобьете пару клавиатур и выдерете остатки волос, но так и сможете придумать, как реализовать "не обязательно, что в заказ попадут все позиции из корзины"? Связано напрямую. Вы либо с самого начала понимаете устройство модели, либо не понимаете и тулите заказ и корзину в одну таблицу со смешным статусом «корзина». Я с самого начала понимаю устройство модели и храню заказы и корзины в одной таблице :) И да, задача "не обязательно, что в заказ попадут все позиции из корзины", "история для заказов" и т.п. не вызывают у меня животного ужаса "Это ж ужасно сложно, надо все переделывать!", как у Вас :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 12:49 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинИ что? Наличие корзин в той же таблице, что и заказы запрещает создавать заказы без корзин? Нет, не запрещает и не мешает, это Вас кто-то обманул, а Вы не попытались "подумать головой и на два шага вперед" (с) Ну что ж, вижу началась глупая и бессмысленная демагогия. Никто не может вам запретить делать плохо, максимум могут уволить. Кот МатроскинЯ с самого начала понимаю устройство модели и храню заказы и корзины в одной таблице :) Вы не понимаете бизнес-модель и разницу в понятиях. Кот МатроскинИ да, задача "не обязательно, что в заказ попадут все позиции из корзины", "история для заказов" и т.п. не вызывают у меня животного ужаса "Это ж ужасно сложно, надо все переделывать!", как у Вас :) Животной ужас? О, вы хотите поговорить об этом? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 12:53 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttНу что ж, вижу началась глупая и бессмысленная демагогия. Глупая и бессмысленная демагогия началась гораздо раньше - с утверждений "Все придется переделывать!" hVosttКот МатроскинИ да, задача "не обязательно, что в заказ попадут все позиции из корзины", "история для заказов" и т.п. не вызывают у меня животного ужаса "Это ж ужасно сложно, надо все переделывать!", как у Вас :) Животной ужас? О, вы хотите поговорить об этом? Да я вот сегодня весь день пытаюсь :) И все Ваши примеры "необычайно сложных задач" вызывают пока усмешку - напугать как-то пока никак у Вас не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:06 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Ennor TiegaelКот Матроскин, Вы, наверное, меня имели в виду. Моя логика в том, что корзина - сущность временного назначения, и данные там лежат только до тех пор, пока не сформирован(ы) заказ(ы). Семантически она не тождественна позициям заказа - там могут быть какие-то столбцы, неактуальные для позиций заказа, и не быть многих, которые актуальны. Например, все что связано с выбором склада, если таковых больше одного. Или такой вариант: юзер берет 5 экземпляров какой-то позиции, 3 берутся с одного склада, а оставшиеся 2 - с другого. Зачем это в корзине? А когда юзер передумает и уменьшит количество, опять обтанцовывать кактус кругом? не понял я эту логику... автор3 берутся с одного склада, а оставшиеся 2 - с другого это вообще к товарам относится, причём тут корзина? есть таблица/jsonb, где товар привязывается ко складам (один товар может быть на нескольких) Почему мне не нравится идея одной таблицы вместо двух: если / когда пользователь начнет разносить содержимое корзины на несколько заказов, придется делать дополнительные телодвижения в виде апдейта поля OrderId, причем нелинейного - какая-то часть позиций остается в дефолтном заказе, остальные разъезжаются по новым. Учитывая, что я еще ни разу не видел интернет-магазина, где разбивка по заказам сохранялась бы до оплаты, не думаю, что это сильно востребовано рынком. Конечно, если средний заказ состоит из сотен позиций, возможно это и имеет смысл, но сколько таких магазинов? просто создаётся новый заказ (корзина) в код надо будет добавить параметр "активная корзина" и возможность иметь несколько заказов одновременно Ну и я до сих пор не увидел рациональной аргументации, зачем пользователю иметь OrderId на стадии наполнения корзины. Вы же понимаете, что столбцы на страницах занимают место, и каждое обращение к корзине будет этот столбец с диска поднимать, даже если он не включен в селект. Ну и размер таблицы в этом случае будет совсем не копеечный. чтобы товар попадал в его корзину, а не в чужую а ещё когда UID нет (авторизации не было), тоже надо как-то товар ловить... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:07 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttEnnor TiegaelНу и я до сих пор не увидел рациональной аргументации, зачем пользователю иметь OrderId на стадии наполнения корзины. Вы же понимаете, что столбцы на страницах занимают место, и каждое обращение к корзине будет этот столбец с диска поднимать, даже если он не включен в селект. Ну и размер таблицы в этом случае будет совсем не копеечный. Дело даже не в этом. Само наличие заказа подразумевает начало некоего workflow, появление нового заказа в системе это событие. А работа с корзиной это совершенно отдельная история. С корзиной могут быть связаны совершенно другие процессы. какие? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:08 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttКот МатроскинПотому что Вы приплели "переделывать". Переделывают что-то тогда, когда некую дополнительную функциональность реализовать либо не получается совсем, либо получается очень сложно. Так что же это за функциональность? Например, хранение истории корзины и заказов. Заказы могут меняться, переукомплектовываться, разбиваться, сливаться, корзина в истории нет. Мульти-корзина, всяческие программы лояльности, и т.д. для этого статусы есть, как тут 20796966 и вообще "история заказа" это другая сущность (если она вам действительно нужна подробная), а не корзина + заказ ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:15 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинГлупая и бессмысленная демагогия началась гораздо раньше - с утверждений "Все придется переделывать!" Ну так и где ваши шикарные аргументы? Не увидел ни одного, кроме демагогии. Кот МатроскинДа я вот сегодня весь день пытаюсь :) И все Ваши примеры "необычайно сложных задач" вызывают пока усмешку - напугать как-то пока никак у Вас не получается. У меня не было и в мыслях вас пугать. Но вы держитесь, а то мало ли что :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:17 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
tip78какие? Что какие? Заказ сам себя сформирует, проведёт и проверит оплату, укомплектуется, и сам себя передаст в службу доставки? Где сам себя доставит и проконтролирует? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:19 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
tip78для этого статусы есть, как тут 20796966 и вообще "история заказа" это другая сущность (если она вам действительно нужна подробная), а не корзина + заказ Корзина не является заказом. Это не статус заказа. Не согласны? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:20 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
Кот МатроскинEnnor Tiegaelпропущено... Нет у меня такого, зачем он мне? Как юзер по заказам разбил, так и сохраню. Даже если какой-то позиции не было в корзине - пофиг, в пост-контроллер пришло, значит надо. А вот у меня есть - потому что "отправить часть заказа, которую собрали" это офигенно частый кейс.Т.е. если у вас это есть, потому что вы решили не дробить заказы по адресам доставки, значит и у всех остальных так же должно быть? Понятненько. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:22 |
|
Реляционка тут бессильна?
|
|||
---|---|---|---|
#18+
hVosttКот МатроскинГлупая и бессмысленная демагогия началась гораздо раньше - с утверждений "Все придется переделывать!" Ну так и где ваши шикарные аргументы? Не увидел ни одного, кроме демагогии. Мои шикарные аргументы в защиту Вашего утверждения "все придется переделывать"? Хм. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 13:24 |
|
|
start [/forum/moderation_log.php?user_name=JesterOK]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
142ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 437ms |
total: | 718ms |
0 / 0 |