Цена за единицу или Общая стоимость - что хранить в БД
Пользователь при поступлении нового товара вводит на форме следующую информацию:
1) Товар
2) Цена закупа за грамм
3) Общая стоимость реализации
Собственно вопрос в сабже.
Что делать: после ввода пользователя вычислять цену реализации за грамм(стоимость / граммы) и записывать именно ее в БД, а при показе пользователю общей информации по товару снова вычислять общую стоимость; либо делать обратную операцию: записывать общую сумму в таблицу, а при показе общей информации вычислять цену за грамм.
Вопрос очень интересный, ИМХО.
Хочу подчеркнуть, что и в том, и в другом случае, правила построения структуры БД не нарушаются - мы не храним вычисляемые поля в таблице. В добавок ко всему, цена реализации за грамм не используется нигде, кроме как при отображении пользователю информации по товару.
Тем не менее, хранить общую стоимоть, а не цену за грамм - как-то не привычно. :)
В общем, вот такой вопрос передо мной возник.
Кто что по этому поводу думает?? Только аргументированно, пжлста..
1. Меняется ли количество граммов для данного товара, и если меняется - то влияет ли это на цену одного грамма. (Т.е., грубо говоря - всегда ли чугунная гиря весит 1000 грамм или она может весить 1005 грамм, и изменится ли от этого ее стоимость).
2. Если вес постоянен и ни на что не влияет, то - что удобнее вводить пользователю? (в смысле - какую информацию пользователю легче достать).
3. Если ни 1), ни 2) ни на что не влияют, то какого объема таблицу Вы ожидаете? Если таблица относительно небольшая - храните то, с чем Вам удобнее работать. Если ожидается здоровущая таблица на энное количество тысяч записей - храните то, что чаще используется.
А вообще
ганжу нада в стакане хранить а не базе,хе
1. Меняется ли количество граммов для данного товара, и если меняется - то влияет ли это на цену одного грамма. (Т.е., грубо говоря - всегда ли чугунная гиря весит 1000 грамм или она может весить 1005 грамм, и изменится ли от этого ее стоимость).
2. Если вес постоянен и ни на что не влияет, то - что удобнее вводить пользователю? (в смысле - какую информацию пользователю легче достать).
3. Если ни 1), ни 2) ни на что не влияют, то какого объема таблицу Вы ожидаете? Если таблица относительно небольшая - храните то, с чем Вам удобнее работать. Если ожидается здоровущая таблица на энное количество тысяч записей - храните то, что чаще используется.
Сорри забыл сказать - количество граммов поступившей единицы продукции тоже вводится пользователем - думаю все вопросы должны отпасть - остальное достаточно точно объяснил!!
А вообще
ганжу нада в стакане хранить а не базе,хе
Очень содержательно!! :)
'Респект' чЕЛОВЕК!!
Что хранить - в данном случае не имеет значения, что больше нравится. Можно пальцем ткнуть, закрыв глаза. А для пользователя реализовать две схемы ввода - кому как удобно будет. Точнее одну - значения в форме всегда согласованы.
..
Спасибо.. В принципе то, что и ожидал услышать - не зря возник вопрос ;)
Смущало вот это:
..
А для пользователя реализовать две схемы ввода - кому как удобно будет.
..
В этом нет необходимости - данные, которые имеются у юзера содержат лишь сумму реализации..
Смущало вот это:
...
Тем не менее, хранить общую стоимоть, а не цену за грамм - как-то не привычно.
...
Почему Вас это смущает? Базе все равно, что Вы в ней храните, пользователю - тем более :). В своей разработке Вы сам себе хозяин - как удобнее, так и делайте, лишь бы принятое Вами решение не влияло существенным образом на производительность.
..
Базе все равно, что Вы в ней храните, пользователю - тем более :).
..
Вот блин, а я же догадывался, что им все равно - ну теперь ты меня до конца просвятил ;)
..
В своей разработке Вы сам себе хозяин - как удобнее, так и делайте, лишь бы принятое Вами решение не влияло существенным образом на производительность.
А если серьезно: понятное дело, что я могу хоть что наворотить и никто об этом не узнает :), тем не менее, изначально необходимо досканально продумывать схему базы данных, чтобы потом не возникло проблем.
Поле [общая стоимость] - в общем случае является вычисляемым, а поле [цена за грамм] - хранимым в таблице. Вот это меня и смущало.
Я получил ответ на свой вопрос - всем спасибо за участие!!