Добавить комментарий

Изображение пользователя st.

Аналог

[quote=norguhtar]
select sum(amount) from bill.trx
where id_contract=200 and sid_trxtype in ('charge', 'discount');

bill.trx как раз отвечает за проводки. Счет я думаю добавлять не требуется, так-как проще считать что в счет в биллинге один и выражается через bill.trx[/quote]

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

Вопрос же был о первичке. Поскольку разница видна и понятна, то вопрос отпадает.

[quote]А для платежа в количество единицу класть?[/quote]
Есть три основных подхода:
- записывать количество в некоторых базовых единицах, единых для всех количеств данного набора аналитик
- записывать реальное количество, единицы хранить разрезом аналитики, пересчет делать по ходу
- смешанный, например, хранить все перечисленное

[quote]По bill.trx будет тоже самое что выше, только с группировкой. В целом полезно так-как уменьшает нагрузку на биллинг.[/quote]

Считать сумму вместо выборки строки - это увеличение, а не уменьшение нагрузки, для этого и введена таблица балансов (сальдо), кэширующая предвычисленные по разрезам величины. См. пример выше.