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

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

Для затравки

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

Куча полей типа ts и tscreated, как я понимаю, технические и соответствуют времени последней модификации и создания записи. Их, в принципе, можно опустить, указав, что они используются в таблицах по списку. Можно использовать для этой цели одну системную таблицу (см. описание в книжке, глава "Реестр объектов и аудит", стр. 143) - реестр, вынеся в прикладные только "время модификации" для производительности.

Баланс. По моим представлениям (бухгалтерским) расположение хронологических атрибутов должно быть зеркальное. Транзакция - это проводка по-русски. Соответственно, дату и период имеет она, они же суть история платежей и трат (списаний и приходов, т.е. движения денежных средств). А в балансах хранится агрегация (сумма) проводок за период. Это позволяет, например, контролировать неотрицательность или приближение баланса к порогу в реальном времени.

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