282
Модель обладает рядом недостатков:
• не хранятся суммы по всем видам начислений на случай изменения
алгоритма (например, исключение вида начисления из табеля повлечет
изменения в общей ведомости);
• значит, нельзя удалять начисления или удержания;
• справочник начислений и удержаний хранится в строках ведомости и его
изменения затрагивают все строки, то есть оказывают влияние на время
существования информационной системы.
Рис. 108. Практическая реализация строковой модели
Одним из вариантов частичного решения проблемы является хранение
«копии» справочников начислений и удержаний в названиях полей расчетной
ведомости. На рис. 108 приведена практическая реализация
этого подхода. Причем часть полей (например, N999 и
U999) явно денормализованы, а поле N000 (остаток на
начало месяца) может быть вычислено через другие записи в ведомости по
этому работнику. Описанный ниже прием с разделением бюджетов и
выделением условного «бюджета» для хранения накопительных сумм,
позволяет ускорить вычисление проблемных полей, наподобие НДФЛ.
Естественно, как и в случае любого использования денормализации,
алгоритмическая часть ИС должна периодически контролировать
соответствие денормализованных полей исходным. В данном случае при
запуске ИС проверяется соответствие структуры и справочника и, при
необходимости, в таблицу VED добавляются недостающие столбцы.
Однако полученная модель не позволяет вести учет по нескольким
бюджетам (муниципальный, федеральный, областной), что необходимо для
бюджетных предприятий. Предлагается решить эту (а одновременно – и
некоторые из перечисленных выше) проблему созданием справочника видов
Строки
Месяц
Год
N000 (FK)
N001
N002
N999
U001
U002
U999
ВСГД
ОСГД
База ЕСН
Справочник
УИД
Начисление или удержание
Название
Начисления
Удержания
Накопительные
N000 – остаток с прошлого месяца
N001 – оклад
N002 – доплата за вредность
…
N999 – итого начислено
U001 – НДФЛ
U002 – профсоюзный сбор