2013-07-31 5 views
-1

Это может быть довольно прямолинейный. Я играю с маленьким приложением, которое я пытаюсь создать. У меня есть форма, в которой пользователи представляют свои «buy_price» и «sell_price». Затем я пытаюсь разобраться, если они понесли убыток или прибыль. Было бы лучше иметь столбец в базе данных, который выработает «margin» i.e «margin coulmn = sell_price-buy_price» (и как я это сделаю). Или было бы лучше сделать это в php.Сумма столбца равна, A - B

Заранее спасибо.

Dan

Edit: Я использую базу данных, так как хранить данные, а затем они могут просматривать свою историю покупок. Затем я хочу сделать такой раздел, как «лучшие сделки» для тех, у которых максимальная маржа и т. Д.

+0

Зачем вам нужна база данных? Очевидно, есть много информации об этом простом требовании, о котором вы не указали. – Anigel

+0

Мне лично кажется, что такой простой расчет должен выполняться приложением, а не с базой данных. Я сохраняю вычисления базы данных для сложных хранимых процедур, которые нуждаются в информации из других таблиц. Но я не эксперт (отсюда почему это не ответ). – Gray

+0

Ваш вопрос: «будет ли лучше», что в конечном итоге является мнением. Это не подходит для SO/SE. Целью одного единственного доказуемого ответа является намерение сайта. [FAQ] – SQLMason

ответ

3

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

Даже без сохранения значения вы по-прежнему имеете возможность рассчитывать значение при извлечении (с MySQL) или с PHP при рендеринге.

SELECT buy_price, sell_price, (buy_price - sell_price) AS margin FROM x 

SQL в сторону, я бы до сих пор идут с расчетом его по визуализации с PHP.

+0

Спасибо за ваши ответы. Скажем, я решил рассчитать маржу с PHP, было бы тогда сложно заказать «наилучший запас»? – Liondedan

+0

Если вам нужно сортировать большой объем данных, я бы на самом деле пошел с MySQL - и, скорее всего, создаст новое представление для сортировки ... но вам этого не нужно.В примере, который я дал, вы можете просто добавить 'ORDER BY margin DESC | ASC' для выполнения сортировки. – jterry

0

Определение «лучше» очень сильно зависит от вашего приложения. Он часто ссылается на то, какая операция выполняется быстрее, что потребует от вас запуска теста (но я предполагаю, что это PHP). Тем не менее, скорость, вероятно, не проблема для вас, поэтому «лучше» становится проще, что вам будет легче. Это почти определенно PHP.

1

Лучше сделать этот расчет в базе данных и вставлять значения в виде:

create view vw_table as 
    select t.*, (buy_price - sell_price) AS margin 
    from table t; 

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

Во-первых, это гарантирует, что одно и то же определение и имя будут использоваться везде, где требуется «маржа». Во-вторых, использование представления помогает отделить уровень приложения от уровня базы данных. Таким образом, вы можете изменить имя таблицы или столбца без, чтобы переписать приложение - вы просто изменяете представление. В-третьих, во многих средах маржа может быть рассчитана параллельно на большом объеме данных, а не должна быть рассчитана последовательно в приложении. (С другой стороны, для клиента возвращается немного больший объем данных.)

+0

+1, особенно для объяснения, почему это лучше. – nico

Смежные вопросы