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

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

Пример

[quote=norguhtar]
Вообще использовать UUID идея хорошая, но это генераторы ключей в РСУБД пока не умеют.[/quote]

SQL Server умеет, начиная с 2008 версии (см. newsequentialid)

[quote=norguhtar]
Я посмотрел схему и не вижу реальной пользы от ее применения. Есть какой нибудь пример когда эта схема выгоднее? Вида "к примеру тут вот меньше придется делать".[/quote]

Давайте рассмотрим простой пример (в нем даже нет двойной записи). Имея 2 таблицы (проводки и баланс) с настраиваемой агрегацией по уровням вы умещаете туда любой биллинг с любой детализацией, пригодной для оперативного анализа и генерации выходных документов (например, счетов) и отчетности.

Операция (Первичный документ)
---
1 - Пополнение счета
    2015-04-15 15:30 
    Иванов 
    Контракт 1 
    300 руб 
2 - Услуга (звонок)  
    2015-04-16 12:45
    Иванов 
    Контракт 1 
    5 минут
    20 руб
3 - Перевод среств
    2015-04-16 12:45
    Иванов
    Контракт 1
    Контракт 2 (Петров)
    100 руб
 
 
Проводки
(С1 - счет-регистр "Счета клиентов")
--------
Счет | Период | Сумма | Основание | У1:Клиент | У2:Контракт | У3:Тип док
------------------------------------------------------------------------
С1   | 1      |  +300 | 1         | Иванов    | Контракт 1  | Пополнение 
С1   | 2      |   -20 | 2         | Иванов    | Контракт 1  | Звонок 
С1   | 2      |  -100 | 3         | Иванов    | Контракт 1  | Звонок 
С1   | 2      |  +100 | 3         | Петров    | Контракт 2  | Перевод
 
 
Баланс 
(В настройках агрегации для счета С1 используются только У1 и У2)
------
Счет | Период | Сумма | У1:Клиент | У2:Контракт
-----------------------------------------------
С1   | 1      |   300 | Иванов    | Контракт 1  
С1   | 2      |   180 | Иванов    | Контракт 1 
С1   | 2      |   100 | Петров    | Контракт 2