Записывать сумму в базу, или считать ее при каждом запросе?
В работе часть системы с заказами. При новом заказе создается запись в таблице `order`, в столбце `items` лежит json массив заказанных предметов(наименование, количество, цена). Сумма в базу не сохраняется. На клиенте сумму вывожу тупо пересчетом в цикле. Стоит ли при добавлении нового заказа, и при редактировании существующего писать сумму в отдельный стоблец?
Если вы используете mysql 5.7 рекомендую посмотреть функции для работы с json.
Если версия ниже 5.7, то вы не совсем правильно организовали структуру своей базы, смотрите в сторону различных связей: много ко многим, один ко многим, один к одному.
dev400: неудачное решение. Делайте новую таблицу и используйте джойны. Жизнь покажется легче - честное слово) Тем более при использовании передовых фреймворков это все делается очень - очень просто.
Если вас все остальное устраивает то просто заверните расчёт суммы в функцию или метод.
getordersum(order)
И везде вызывайте её.
Даже если потом сделаете отдельное поле, то просто функцию поменять на вывод этого поля.
Главное избежать дублирования кода.
Из минусов для себя вижу только то что сложно будет делать акции скидки, например купи 3 бутылки по цене двух. Либо скидки за покупку двух разных товаров. Либо личная скидка клиенту. Хотя можно потом просто добавить поле размер скидки. И вычитать его из суммы. Если в функцию будет передаваться весь объект заказа, то изменить логику будет просто в одном месте