ASP.NET рассчитывает свойства объекта, должно быть в дБ или рассчитывается время выполнения? - PullRequest
0 голосов
/ 04 июля 2010

У меня есть небольшое веб-приложение, похожее на интернет-магазин, и у меня большие планы :-) У меня есть объект корзины и объект корзины, в корзине есть список элементов корзины. Во время выполнения у меня нет списка, он должен быть загружен из базы данных (используя шаблон хранилища) с идентификатором корзины. Корзина может существовать в течение нескольких дней (максимум 30 дней), и в течение этого интервала покупатель может добавить basketItems в корзину.

Каков наилучший подход к вычислению итоговой суммы корзины (у меня есть несколько аналогичных вычислений), если я сохраню поле в базе данных и обновляю его, когда добавляю что-то в корзину или я вычисляю его на летать как собственность (для привязки данных)?

Допустим, я должен сделать два вычисления для этой корзины, один для общей суммы, а другой со скидкой (хитрый алгоритм, зависящий от многих переменных).

Как насчет 3, 4 или 5 вычислений, какой подход лучше?

Ответы [ 4 ]

1 голос
/ 04 июля 2010

Я бы вычислил сумму на лету - если цена какого-либо из отдельных предметов изменится, пока они находятся в корзине покупателя, то я бы предположил, что вы захотите продать их по новой цене, если цены пошлиили хотели бы передать клиенту любые сбережения, если они вышли из строя :)

Если вы храните его в базе данных, это избыточные данные - у вас есть все данные, которые необходимо рассчитатьон уже хранится в отношении отдельных предметов.Это также означает, что вам нужно будет обновлять эту таблицу / поле базы данных каждый раз, когда пользователь входит в систему для обновления итогов.

0 голосов
/ 04 июля 2010

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

0 голосов
/ 04 июля 2010

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

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

0 голосов
/ 04 июля 2010

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

То же самое касается скидок, некоторые ограничены по времени и требуют повторной оценки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...