Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7   вперед  Ctrl      все
 Re: Реляционка тут бессильна?  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 2843
Кот Матроскин
у Вас в системе все равно уже есть API "переложить часть заказа в новый заказ"
Нет у меня такого, зачем он мне? Как юзер по заказам разбил, так и сохраню. Даже если какой-то позиции не было в корзине - пофиг, в пост-контроллер пришло, значит надо.
Кот Матроскин
У Вас будет CustomerID вместо этого - который точно так же занимает место, поднимается с диска и т.п.
Этот там нужен - по нему фильтрация идет. Или у вас все юзеры видят все корзины? Вы, конечно, можете сказать "а до кастомеров можно через ордеры достучаться", но если, как предполагал ТС, изначально писать в это поле null...

В общем, бритву Оккама вы не убедили. Насчет ТС - не в курсе, я это тут пишу, скорее, для тех, кто потом найдет этот топик и будет пытаться сделать по аналогии.
15 сен 17, 11:02    [20798075]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
hVostt
Кот Матроскин
Что именно из перечисленного у Вас не получается в случае единой таблицы?


Зачем вы приплели сюда понятие «получится»?

Потому что Вы приплели "переделывать". Переделывают что-то тогда, когда некую дополнительную функциональность реализовать либо не получается совсем, либо получается очень сложно. Так что же это за функциональность?
hVostt
Удобно и комфортно работать с этим, если для разных по смыслу и функциональности понятий будут выделены отдельные сущности и таблицы.

Да-да, как в соседней ветке - таблица Girl, таблица Man
15 сен 17, 11:09    [20798110]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
Ennor Tiegael
Кот Матроскин
у Вас в системе все равно уже есть API "переложить часть заказа в новый заказ"
Нет у меня такого, зачем он мне? Как юзер по заказам разбил, так и сохраню. Даже если какой-то позиции не было в корзине - пофиг, в пост-контроллер пришло, значит надо.

А вот у меня есть - потому что "отправить часть заказа, которую собрали" это офигенно частый кейс.
Ennor Tiegael
Кот Матроскин
У Вас будет CustomerID вместо этого - который точно так же занимает место, поднимается с диска и т.п.
Этот там нужен - по нему фильтрация идет. Или у вас все юзеры видят все корзины? Вы, конечно, можете сказать "а до кастомеров можно через ордеры достучаться"

Разумеется можно - поэтому никакого "лишнего" места не тратится, одно поле заменяется другим.
15 сен 17, 11:14    [20798138]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
hVostt
Member

Откуда:
Сообщений: 11386
Кот Матроскин
Потому что Вы приплели "переделывать". Переделывают что-то тогда, когда некую дополнительную функциональность реализовать либо не получается совсем, либо получается очень сложно. Так что же это за функциональность?


Например, хранение истории корзины и заказов. Заказы могут меняться, переукомплектовываться, разбиваться, сливаться, корзина в истории нет. Мульти-корзина, всяческие программы лояльности, и т.д.
15 сен 17, 11:45    [20798276]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
hVostt
Member

Откуда:
Сообщений: 11386
Кот Матроскин
hVostt
Удобно и комфортно работать с этим, если для разных по смыслу и функциональности понятий будут выделены отдельные сущности и таблицы.

Да-да, как в соседней ветке - таблица Girl, таблица Man


Гендер это характеристика. А корзина или заказ -- нет.
15 сен 17, 11:45    [20798280]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
hVostt
Кот Матроскин
Потому что Вы приплели "переделывать". Переделывают что-то тогда, когда некую дополнительную функциональность реализовать либо не получается совсем, либо получается очень сложно. Так что же это за функциональность?


Например, хранение истории корзины и заказов. Заказы могут меняться, переукомплектовываться, разбиваться, сливаться, корзина в истории нет. Мульти-корзина, всяческие программы лояльности, и т.д.


Ээ... и что в этом сложного? манипуляции с заказом в статусе "корзина" не создают следов
в "исторических" таблицах, с заказами в остальных статусах - создают.
15 сен 17, 12:14    [20798407]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
hVostt
Кот Матроскин
автор
для разных по смыслу и функциональности понятий будут выделены отдельные сущности и таблицы


Да-да, как в соседней ветке - таблица Girl, таблица Man


Гендер это характеристика. А корзина или заказ -- нет.

Начинаете изобретать определение на ходу :)
раньше было "разных по смыслу и функциональности". Man и Girl - вполне себе разные по смыслу и уж тем более по функциональности :)
А "характеристика" или "не характеристика" - это вообще зависит не от самого понятия, а от модели, скажу по секрету ;) В каких-то моделях - характеристика, в каких-то - ключевое различие.
15 сен 17, 12:20    [20798436]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
hVostt
Member

Откуда:
Сообщений: 11386
Кот Матроскин
Ээ... и что в этом сложного? манипуляции с заказом в статусе "корзина" не создают следов
в "исторических" таблицах, с заказами в остальных статусах - создают.


Заказ в статусе «корзина»? Лан, проехали. Бессмысленный спор.
15 сен 17, 12:20    [20798437]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
hVostt
Member

Откуда:
Сообщений: 11386
Кот Матроскин
Начинаете изобретать определение на ходу :)
раньше было "разных по смыслу и функциональности". Man и Girl - вполне себе разные по смыслу и уж тем более по функциональности :)
А "характеристика" или "не характеристика" - это вообще зависит не от самого понятия, а от модели, скажу по секрету ;) В каких-то моделях - характеристика, в каких-то - ключевое различие.


Какие определения? Есть субъект «участник», у него есть характеристика «пол» — это атрибут субъекта. Два субъекта взаимодействуют друг с другом.

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

В общем понятно всё с вашей аргементацией.
15 сен 17, 12:25    [20798461]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
hVostt
Кот Матроскин
Ээ... и что в этом сложного? манипуляции с заказом в статусе "корзина" не создают следов
в "исторических" таблицах, с заказами в остальных статусах - создают.


Заказ в статусе «корзина»? Лан, проехали. Бессмысленный спор.

Если оперировать демагогическими штампами типа "надо думать головой", "придется переделывать" и т.п. - конечно бессмысленный. А если обсуждать конкретные объективные вещи типа сложности реализации той или иной фичи - вполне себе осмысленный правда, очень невыгодный для некоторых участников
15 сен 17, 12:27    [20798470]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
hVostt
и для заказа абсолютно параллельно, была ли какая-то корзина или нет. Для корзины может быть сформирован заказ, на основе позиций в корзине, при чём не обязательно, что в заказ попадут все позиции из корзины, или в заказ не будут добавлены позиции при уточнении по телефону.

Как это все связано с вопросом "одна таблица или две"? :)
В случае одной таблицы Вы будете мучиться месяц, разобьете пару клавиатур и выдерете остатки волос, но так и сможете придумать, как реализовать "не обязательно, что в заказ попадут все позиции из корзины"?
15 сен 17, 12:33    [20798487]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
hVostt
Member

Откуда:
Сообщений: 11386
Кот Матроскин
Если оперировать демагогическими штампами типа "надо думать головой", "придется переделывать" и т.п. - конечно бессмысленный. А если обсуждать конкретные объективные вещи типа сложности реализации той или иной фичи - вполне себе осмысленный правда, очень невыгодный для некоторых участников


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

Думать головой и на пару шагов вперёд уже не модно? Апологеты херак-херак и в продакшен занимают нишу разработчиков? Не думаю.
15 сен 17, 12:33    [20798490]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
hVostt
Member

Откуда:
Сообщений: 11386
Кот Матроскин
Как это все связано с вопросом "одна таблица или две"? :)
В случае одной таблицы Вы будете мучиться месяц, разобьете пару клавиатур и выдерете остатки волос, но так и сможете придумать, как реализовать "не обязательно, что в заказ попадут все позиции из корзины"?


Связано напрямую. Вы либо с самого начала понимаете устройство модели, либо не понимаете и тулите заказ и корзину в одну таблицу со смешным статусом «корзина». Даже джуниору это простительно лишь с натяжкой.
15 сен 17, 12:35    [20798498]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
hVostt
Кот Матроскин
Если оперировать демагогическими штампами типа "надо думать головой", "придется переделывать" и т.п. - конечно бессмысленный. А если обсуждать конкретные объективные вещи типа сложности реализации той или иной фичи - вполне себе осмысленный правда, очень невыгодный для некоторых участников


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

И что? Наличие корзин в той же таблице, что и заказы запрещает создавать заказы без корзин? Нет, не запрещает и не мешает, это Вас кто-то обманул, а Вы не попытались "подумать головой и на два шага вперед" (с)
15 сен 17, 12:39    [20798516]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
hVostt
Кот Матроскин
Как это все связано с вопросом "одна таблица или две"? :)
В случае одной таблицы Вы будете мучиться месяц, разобьете пару клавиатур и выдерете остатки волос, но так и сможете придумать, как реализовать "не обязательно, что в заказ попадут все позиции из корзины"?


Связано напрямую. Вы либо с самого начала понимаете устройство модели, либо не понимаете и тулите заказ и корзину в одну таблицу со смешным статусом «корзина».

Я с самого начала понимаю устройство модели и храню заказы и корзины в одной таблице :)
И да, задача "не обязательно, что в заказ попадут все позиции из корзины", "история для заказов" и т.п. не вызывают у меня животного ужаса "Это ж ужасно сложно, надо все переделывать!", как у Вас :)
15 сен 17, 12:49    [20798542]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
hVostt
Member

Откуда:
Сообщений: 11386
Кот Матроскин
И что? Наличие корзин в той же таблице, что и заказы запрещает создавать заказы без корзин? Нет, не запрещает и не мешает, это Вас кто-то обманул, а Вы не попытались "подумать головой и на два шага вперед" (с)


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

Кот Матроскин
Я с самого начала понимаю устройство модели и храню заказы и корзины в одной таблице :)


Вы не понимаете бизнес-модель и разницу в понятиях.

Кот Матроскин
И да, задача "не обязательно, что в заказ попадут все позиции из корзины", "история для заказов" и т.п. не вызывают у меня животного ужаса "Это ж ужасно сложно, надо все переделывать!", как у Вас :)


Животной ужас? О, вы хотите поговорить об этом?
15 сен 17, 12:53    [20798550]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
hVostt
Ну что ж, вижу началась глупая и бессмысленная демагогия.

Глупая и бессмысленная демагогия началась гораздо раньше - с утверждений "Все придется переделывать!"

hVostt
Кот Матроскин
И да, задача "не обязательно, что в заказ попадут все позиции из корзины", "история для заказов" и т.п. не вызывают у меня животного ужаса "Это ж ужасно сложно, надо все переделывать!", как у Вас :)


Животной ужас? О, вы хотите поговорить об этом?

Да я вот сегодня весь день пытаюсь :) И все Ваши примеры "необычайно сложных задач" вызывают пока усмешку - напугать как-то пока никак у Вас не получается.
15 сен 17, 13:06    [20798608]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
tip78
Member

Откуда: Москва
Сообщений: 444
Ennor Tiegael
Кот Матроскин,

Вы, наверное, меня имели в виду.

Моя логика в том, что корзина - сущность временного назначения, и данные там лежат только до тех пор, пока не сформирован(ы) заказ(ы). Семантически она не тождественна позициям заказа - там могут быть какие-то столбцы, неактуальные для позиций заказа, и не быть многих, которые актуальны. Например, все что связано с выбором склада, если таковых больше одного. Или такой вариант: юзер берет 5 экземпляров какой-то позиции, 3 берутся с одного склада, а оставшиеся 2 - с другого. Зачем это в корзине? А когда юзер передумает и уменьшит количество, опять обтанцовывать кактус кругом?

не понял я эту логику...
автор
3 берутся с одного склада, а оставшиеся 2 - с другого

это вообще к товарам относится, причём тут корзина?
есть таблица/jsonb, где товар привязывается ко складам (один товар может быть на нескольких)

Почему мне не нравится идея одной таблицы вместо двух: если / когда пользователь начнет разносить содержимое корзины на несколько заказов, придется делать дополнительные телодвижения в виде апдейта поля OrderId, причем нелинейного - какая-то часть позиций остается в дефолтном заказе, остальные разъезжаются по новым. Учитывая, что я еще ни разу не видел интернет-магазина, где разбивка по заказам сохранялась бы до оплаты, не думаю, что это сильно востребовано рынком. Конечно, если средний заказ состоит из сотен позиций, возможно это и имеет смысл, но сколько таких магазинов?

просто создаётся новый заказ (корзина)
в код надо будет добавить параметр "активная корзина" и возможность иметь несколько заказов одновременно

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

чтобы товар попадал в его корзину, а не в чужую
а ещё когда UID нет (авторизации не было), тоже надо как-то товар ловить...
15 сен 17, 13:07    [20798614]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
tip78
Member

Откуда: Москва
Сообщений: 444
hVostt
Ennor Tiegael
Ну и я до сих пор не увидел рациональной аргументации, зачем пользователю иметь OrderId на стадии наполнения корзины. Вы же понимаете, что столбцы на страницах занимают место, и каждое обращение к корзине будет этот столбец с диска поднимать, даже если он не включен в селект. Ну и размер таблицы в этом случае будет совсем не копеечный.


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

какие?
15 сен 17, 13:08    [20798619]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
tip78
Member

Откуда: Москва
Сообщений: 444
hVostt
Кот Матроскин
Потому что Вы приплели "переделывать". Переделывают что-то тогда, когда некую дополнительную функциональность реализовать либо не получается совсем, либо получается очень сложно. Так что же это за функциональность?


Например, хранение истории корзины и заказов. Заказы могут меняться, переукомплектовываться, разбиваться, сливаться, корзина в истории нет. Мульти-корзина, всяческие программы лояльности, и т.д.

для этого статусы есть, как тут 20796966
и вообще "история заказа" это другая сущность (если она вам действительно нужна подробная), а не корзина + заказ
15 сен 17, 13:15    [20798643]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
hVostt
Member

Откуда:
Сообщений: 11386
Кот Матроскин
Глупая и бессмысленная демагогия началась гораздо раньше - с утверждений "Все придется переделывать!"


Ну так и где ваши шикарные аргументы? Не увидел ни одного, кроме демагогии.


Кот Матроскин
Да я вот сегодня весь день пытаюсь :) И все Ваши примеры "необычайно сложных задач" вызывают пока усмешку - напугать как-то пока никак у Вас не получается.


У меня не было и в мыслях вас пугать. Но вы держитесь, а то мало ли что :)
15 сен 17, 13:17    [20798653]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
hVostt
Member

Откуда:
Сообщений: 11386
tip78
какие?


Что какие? Заказ сам себя сформирует, проведёт и проверит оплату, укомплектуется, и сам себя передаст в службу доставки? Где сам себя доставит и проконтролирует?
15 сен 17, 13:19    [20798658]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
hVostt
Member

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


Корзина не является заказом. Это не статус заказа. Не согласны?
15 сен 17, 13:20    [20798662]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 2843
Кот Матроскин
Ennor Tiegael
пропущено...
Нет у меня такого, зачем он мне? Как юзер по заказам разбил, так и сохраню. Даже если какой-то позиции не было в корзине - пофиг, в пост-контроллер пришло, значит надо.

А вот у меня есть - потому что "отправить часть заказа, которую собрали" это офигенно частый кейс.
Т.е. если у вас это есть, потому что вы решили не дробить заказы по адресам доставки, значит и у всех остальных так же должно быть? Понятненько.
15 сен 17, 13:22    [20798672]     Ответить | Цитировать Сообщить модератору
 Re: Реляционка тут бессильна?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
hVostt
Кот Матроскин
Глупая и бессмысленная демагогия началась гораздо раньше - с утверждений "Все придется переделывать!"


Ну так и где ваши шикарные аргументы? Не увидел ни одного, кроме демагогии.

Мои шикарные аргументы в защиту Вашего утверждения "все придется переделывать"? Хм.
15 сен 17, 13:24    [20798678]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7   вперед  Ctrl      все
Все форумы / Проектирование БД Ответить