powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / как посчитать сумму заказа?
17 сообщений из 42, страница 2 из 2
как посчитать сумму заказа?
    #38974666
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> ну так вот: чем этот вариант "худший из возможных" ?

Основных вариантов всего 3:

1. Триггер. Пока всё так просто - лучший вариант.
2. ХП, делающая всё, что нужно, по номеру заказа.
Подробности вытаскивает сама, но они уже в кеше,
пэтому "с диском" проблем не будет. Хуже 1, лучше 3.
3. Твой вариант ХП с плохим дизайном. Худший.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974667
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mandarina> так?

Ну типа того, только я бы ещё по переменным разложил, не люблю такие портянки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974668
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамМой сегодня на полке, поэтому я этот момент уточнил. :)
А, да. Зафлудили этот момент как-то...

mandarinaтам должно быть так: заказ(id_заказа, id_сборки, id_доставки, id_товара,
сумма)
Нет, Рина, так быть не должно, ибо это нарушение второй нормальной формы, которое карается
геморроем.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974670
mandarina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

Большое спасибо за помощь! Все работает как надо)))
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974672
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТаблоид> ну так вот: чем этот вариант "худший из возможных" ?

Основных вариантов всего 3:

1. Триггер. Пока всё так просто - лучший вариант.Ога. Особенно когда в таблице будут меняться поля НЕ из списка тех, что нужны для расчета суммы. И триггер сей всё равно будет дёргать все три(?) таблицы, чтобы обновить сумму, которая окажется той же самой :-)

Гаджимурадов Рустам2. ХП, делающая всё, что нужно, по номеру заказа.
Подробности вытаскивает сама, но они уже в кеше,
пэтому "с диском" проблем не будет. Хуже 1, лучше 3.Откуда дровишки, что "они уже в кеше", если передаётся только номер заказа ? Ты утверждаешь, что при таком раскладе никогда не будет reads > 0 ?

Гаджимурадов Рустам3. Твой вариант ХП с плохим дизайном. Худший.По дизайну - да, худший. По производительности - лучше, чем "2" (и тем более "1"), если значения наценки/доставки и прочего уже известны в вызывателе.
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974676
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Особенно когда в таблице будут меняться поля
Таблоид> НЕ из списка тех, что нужны для расчета суммы.
Таблоид> И триггер сей всё равно будет дёргать все три(?) таблицы,
Таблоид> чтобы обновить сумму, которая окажется той же самой :-)

Во-первых, это будет и в твоём варианте, так что чья бы мычала. :)
Во-вторых, никто не запрещает это проверять и не дергать.

> Откуда дровишки, что "они уже в кеше", если передаётся только номер заказа ?

Не понял вопроса. В триггере на инсерт-апдейт записи
данные уже в кеше во всех нормальных ситуациях.

> По производительности - лучше, чем "2"

Ненамного, я полагаю.

Таблоид> (и тем более "1")

Нет, конечно. Конечно, много хуже.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974677
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mandarina> Все работает как надо)))

Вообще говоря, то, что ты написала - это на четвёрку
с минусом. Так что тебе удачи, а преподу превед.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974682
mandarina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам, главное сдать работу) Спасибо, передам)))
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974692
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамВо-первых, это будет и в твоём варианте, так что чья бы мычала. :)
Во-вторых, никто не запрещает это проверять и не дергать.1) я НЕ предлагал вызывать ХП из триггера. И вообще пришёл как-то к "фундаментальному открытию", что row-level триггеры, дёргающиеся как свиньи на верёвке на каждый чих, по поводу и без него, есть одна из сторон Мирового Зла.. :-)
2) ХП должна вызываться только из тех мест, где действительно надо обновлять итоговую сумму заказа. Звучит как Вселенская Ересь, согласен, но главное - поменьше триггеров! Код в таком случае становится больше, появятся дублирующиеся вызовы или, еще хуже, просто повторы кусков кода, легко забыть вызвать эту ХП - всё так. Но по производительности это точно будет выигрыш.

Гаджимурадов РустамНе понял вопроса. В триггере на инсерт-апдейт записи
данные уже в кеше во всех нормальных ситуациях.Про КАКУЮ таблицу вот из этих:
Код: plaintext
1.
2.
3.
4.
заказ(id_заказа, id_сборки, id_доставки, id_товара),
товар(id_товара, название, цена),
доставка(id_доставки, город, цена),
сборка(id_сборки, вид, цена).
- ты говоришь ?
Допустим, усер выбрал в своём приложении сборку, доставку и товар (через листбокс или еще чего-то там) - да, затащил в страничный кеш ФБ эти данные из соотв. справочников.
Затем пожевал 5-10 минут, перетёр что-то с клиентом, и жмякнул "ОК". В этот момент в таблицу "заказ" добавляется строка с известными id_сборки, id_доставки, id_товара. Но откудова уверенность, что прочитанные N минут взад данные по ценам - еще сидят в кеше ? К тому же, нормальная аппликуха должна перечитать цены в момент жмякания "ОК", потому что они (цены!) могли измениться за то время, пока усер что-то там решал.
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974703
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> я НЕ предлагал вызывать ХП из триггера

Это было дефолтным изначальным вариантом.
Если ты что-то там имел в виду в подкоре, но
молчал как партизан - это твои проблемы. :)

> есть одна из сторон Мирового Зла.. :-)

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

> ХП должна вызываться только из тех мест, где действительно надо

Дальше можно не читать. Все что угодно должно
вызываться только из тех мест и только тогда, когда
действительно надо, и не вызываться из тех мест и
тогда, когда не надо. Касательно сабжа, если ты про
вызов с клиента при "Сохранить заказ" - это путь к
отсутствию целостности в БД и тройке по курсовой.

> Про КАКУЮ таблицу вот из этих: ты говоришь ?

Про все, есессно.

> Но откудова уверенность, что прочитанные N минут взад данные по ценам - еще сидят в кеше ?

Я разверну этот вопрос тебе же, сам над ним подумай
и доложи сюда ответ, а то аж позоришься. :-) Ей Богу,
даже подсказывать неудобно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974732
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам> Но откудова уверенность, что прочитанные N минут взад данные по ценам - еще сидят в кеше ?

Я разверну этот вопрос тебе же, сам над ним подумай
и доложи сюда ответ, а то аж позоришься. :-) Ей Богу,
даже подсказывать неудобно. Гы... вспомнилось: у нас в институте курс был, История КПСС и М-Л философия (нахрена он был нужен технарям - другой вопрос). И вёл его препод, которому задаёшь вопрос "а как вы объясните то-то", а он: "я бы поставил вопрос по-другому", "ваш вопрос слишком второстепенен", "сходите в деканат, там вам всё объяснят" (с занесением в учетную карточку комсомольца :)), "как вы в иинститут попали ?! вам не стыдно задавать такие глупые вопросы ?" или вообще: "а какой ответ вы ожидаете услышать?"
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974736
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Гы... вспомнилось

А мне почему-то вспомнились Деда и Диля,
"особливо на ляпасинах". Но если ты сильно
настаиваешь, могу, конечно, "объяснить",
"ответить", "рассказать", "изложить" или
как тебе там угодно. Могу даже с примерами -
на ляпасинах там, на ежах, ужах, моржах...
Не так красиво как Деда, конечно, но всё же.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974737
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объясни только вот это, плз:откудова уверенность, что прочитанные N минут взад данные по ценам - еще сидят в кеше ?
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974764
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оттудова, родной, что прочитанные N минут критичные данные по
любым ляпасинам перед любым "использованием" либо держатся в
снапшоте (а долгих снапшотов не бывает), либо всегда перечитываются
перед (и соответственно точно есть кеше). Дальше объяснять?

P.S. Да, и цак надень.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974809
Граур Станислав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только меня смутил smallint для ID ?

mandarina
Код: sql
1.
    ID_ZAK smallint




Или сейчас он уже не настолько small ?
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974854
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустампрочитанные N минут критичные данные <...> всегда перечитываютсяну, и ? вот тебе их надо перечитать - и что, они перед этой перечиткой всегда в кеше торчат, да ?
...
Рейтинг: 0 / 0
как посчитать сумму заказа?
    #38974862
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> они перед этой перечиткой всегда в кеше торчат, да ?

Перед - неважно. Сразу после - да.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / как посчитать сумму заказа?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]