Проверяемый текст
Пушников А.Ю. Введение в системы управления базами данных. Учебное пособие/Изд-е Башкирского ун-та. - Уфа, 1999.
[стр. 24]

при изменении логики расчета надобность в некоторых атрибутах может исчезнуть, зато может появиться потребность в новых атрибутах.
Это потребует перестройки структуры отношения, что является весьма болезненной операцией для работающей системы;
структура отношения становится более сложной и запутанной; • увеличивается объем базы данных; • увеличивается трафик сети.
Как видим, оба решения имеют свои достоинства и недостатки.
Важно то, что программный код, содержащий эти формулы, не исчезает ни в каком из этих решений (да и куда он денется, раз такова предметная область!).
Только в одном случае код хранится в одном месте, а в другом может быть "размазан" по всему приложению.
На самом деле данный пример сильно упрощен, т.к.
еще одной неприятной особенностью наших бухгалтерий является то, что все расчеты должны вестись с определенной точностью, а именно до копеек.
Возникает проблема округления, а это еще более усложняет формулы для расчетов цен.
Простой пример вычисление НДС содержит операцию деления, следовательно может приводить к бесконечным дробям типа 15,519999...
Такую дробь необходимо округлить до 15.52.
Если продается одна единица товара, то это не страшно, но если продается несколько единиц товара, то сумму НДС на все количество можно считать по разным формулам: 1.
S4 = N* ROUND(P2*NDS/100) СНАЧАЛА округлить при вычислении НДС на единицу товара, а ПОТОМ умножить на все количество, или 2.
S4 = ROUND(N*P2*NDS/100) СНАЧАЛА умножить на все количество, а ПОТОМ округлить до требуемого знака.

Другие решения.
Можно попытаться использовать и другие решения, для облегчения разработки и сопровождения в данном случае.
Например, можно хранить в базовом отношении только базовые атрибуты, а для работы бухгалтерии использовать заранее подготовленные представления
24
[стр. 139]

При изменении логики расчета надобность в некоторых атрибутах может исчезнуть, зато может появиться потребность в новых атрибутах.
Это потребует перестройки структуры отношения, что является весьма болезненной операцией для работающей системы.

Структура отношения становится более сложной и запутанной.
 Увеличивается объем базы данных.
Увеличивается трафик сети.
Как видим, оба решения имеют свои достоинства и недостатки.
Важно то, что программный код, содержащий эти формулы, не исчезает ни в каком из этих решений (да и куда он денется, раз такова предметная область!).
Только в одном случае код хранится в одном месте, а в другом может быть "размазан" по всему приложению.
На самом деле данный пример сильно упрощен, т.к.
еще одной неприятной особенностью наших бухгалтерий является то, что все расчеты должны вестись с определенной точностью, а именно до копеек.
Возникает проблема округления, а это еще более усложняет формулы для расчетов цен.
Простой пример вычисление НДС содержит операцию деления, следовательно может приводить к бесконечным дробям типа 15,519999… Такую дробь необходимо округлить до 15.52.
Если продается одна единица товара, то это не страшно, но если продается несколько единиц товара, то сумму НДС на все количество можно считать по разным формулам: 1.
S4 = N* ROUND(P2*NDS/100) СНАЧАЛА округлить при вычислении НДС на единицу товара, а ПОТОМ умножить на все количество, или 2.
S4 = ROUND(N*P2*NDS/100) СНАЧАЛА умножить на все количество, а ПОТОМ округлить до требуемого знака.

Лирическое отступление.
Автор, как математик по образованию (к.ф.-м.н.), считает, что верной, безусловно, является первая формула.
Действительно, вычисляя по первой формуле, мы получим одну и ту же сумму НДС независимо от того, продали мы одну партию товара, содержащую 50 единиц, или продали 50 партий по одной единице в каждой.
При вычислениях по второй формуле сумма НДС в партии, состоящий из 50 единиц товара отличается от суммы НДС по 50 партиям по одной единице товара в каждой.
Разработав несколько складских программ, автор получал разные ответы на этот вопрос в разных бухгалтерия, разные ответы на этот вопрос в одной бухгалтерии в разное время, и разные ответы на этот вопрос в разных налоговых инспекциях.
В конечном итоге, автор пришел к грустному выводу, что для того, чтобы стать бухгалтером, его способностей и образования недостаточно.
Другие решения.
Можно попытаться использовать и другие решения, для облегчения разработки и сопровождения в данном случае.
Например, можно хранить в базовом отношении только базовые атрибуты, а для работы бухгалтерии использовать заранее подготовленные представления
(динамические отношения, задаваемые оператором SQL).
Тогда логика расчетов будет храниться в одном SQL-операторе, определяющем это представление.
Другим вариантом может быть сохранение формул в виде хранимых процедур и функций базы данных.
Проверка ограничения.
К моменту проверки ограничения кортежа должны быть проверены ограничения целостности атрибутов, входящих в этот кортеж.
Ограничение кортежа является немедленно проверяемым ограничением.
Действительно, ограничение кортежа не зависит ни от каких других объектов базы данных, кроме атрибутов, входящих в состав кортежа.
Поэтому никакие изменения в других объектах не могут повлиять на истинность ограничения.
Ограничения отношения

[Back]