cartItem к корзине привязывать? (там count, productID и т.д.)
1) С помощью cartID
2) Просто json в поле items фигачить
Первое нравится возможностью легкой сортировки (например, по дате добавления: GET /cart/items?orderBy=createdAt). Но как изящно корзину отчищать? Добавить nullable orderID и фильтрацию?
Второе нравится легкой отчисткой и записью в order, но не потеряю ли я гибкости в api ?
Зачем очищать корзину? Заказ оформлен это и есть корзина. Если хочешь отдельно заказ хранить пожалуйста. Просто удали эту корзину после оформления заказа.
А.. можно в начало массива элементы пушить, тогда и сортировка не понадобится (вряд ли что-то обычно нужно кроме даты добавления)
В принципе да.. а новая появится при добавлении нового элемента, спасибо)
Не добавлении элемента. А при новом заказе.
лучше делайте таблицу cart_items и cart_id. вообще пока не освоите нормально построение чего угодно на таблицах, jsonb особенно не трогайте
в том что это нужно сильно осознанно делать))) когда ну вот вообще 100% только для выдачи и раз в году для выборки)))
В том что в какой-то момент бизнес приходит со словами "добавьте еще выборку по этому полю", а оно в прекрасном json'е
Ехидно добавляешь индекс. Куда проще, чем когда бизнес приходит со словами "добавьте-ка ещё поле в эту таблицу", а у тебя нет божественного jsonb и нужно делать ALTER very_big_table
вопрос насколько ехидно увеличится место занимаемое на диске с индексом на jsonb по very_big_table
alter very big table делается мгновенно если делается без транзакций и дефолтных значений а если меняешь существующие поля то твой json тебе же боком обернется)
Теоретически. Практически - некоторые альтеры не заканчиваются никогда
практически некоторые действия не заканчиваются никогда)) нет систем бессмертных и идеальных субд)
Обсуждают сегодня