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

Пример 8.
В накладной можно установить следующую взаимосвязь атрибутов "Цена*Количество=Сумма", связывающую атрибуты "Цена", "Количество", "Сумма".
Данный пример кажется неестественным, т.к.
сумма является явно избыточным атрибутом, значение которого просто выводятся из значений других атрибутов.
Поэтому кажется, что лучше хранить только два базовых атрибута "Цена" и "Количество", а сумму вычислять во время выполнения запросов по мере необходимости.
Так, собственно, требует реляционная теория, стремящаяся свести избыточность к минимуму.
В практике, однако, дело обстоит сложнее.
Например, каждая строка реальной накладной может содержать следующие данные о товаре
(табл.
7).
Таблица 7 Атрибуты товара Наимс-пованис атрибута Описание атрибута Базовы й ли атрибут Формула для вычислимого атрибута 1 Name Наименование товара Да I N Количество Да Р1 Учетная цена товара Да S1 Учетная сумма на все количество SI = N*P1 PcrScnt Процент наценки на единицу товара Да Р2 Наценка на единицу товара P2 = Pl*PerSent/100 S2 Сумму наценки на все количество S2 = N*P2 РЗ Цену товара с учетом наценки РЗ = P1+P2 S3 Сумму на все количество с учетом наценки S3 = N*P3 NDS Процент НДС Да 1 Р4 Сумма НДС на единицу товара P4 = P2*NDS/100 S4 Сумма НДС на все количество S 4 = N*P4 Р5 Цена товара с НДС P 5 = P3+P4 ............
S5 Сумма на все количество с НДС S5 = N*P5 i
[стр. 137]

Пример 6.
Атрибут "Возраст сотрудника" в таблице "Спецподразделение", может иметь дополнительное ограничение "Возраст сотрудника не менее 25 и не более 45", помимо того, что этот атрибут уже имеет ограничение, определяемое доменом "Возраст сотрудника не менее 18 и не более 65".
Приведенное ограничение кортежа, по сути, является дополнительным ограничением на значения одного атрибута.
В этом случае допустимы два решения.
Можно объявить новый домен "Возраст сотрудника спецподразделения" и тогда ограничение кортежа становится ограничением домена и атрибута, либо рассматривать это ограничение именно как ограничение кортежа.
Оба решения имеют свои положительные и отрицательные стороны.
Замечание.
Тут имеются некоторые возможности для оптимизации.
Формально, при изменении значения данного атрибута необходимо проверить два ограничения ограничение атрибута и ограничение кортежа.
Но в данном случае ограничение кортежа сильнее ограничения атрибута и достаточно проверить только ограничение кортежа.
Разумно построенная СУБД могла бы выявлять такие случаи и уменьшать лишнюю работу.
Пример 7.
Для отношения "Сотрудники" можно сформулировать следующее ограничение: если атрибут "Должность" принимает значение "Директор", то атрибут "Зарплата" содержит значение не менее 1000$.
Это ограничение связывает два атрибута одного кортежа.
Пример 8.
В накладной можно установить следующую взаимосвязь атрибутов "Цена*Количество=Сумма", связывающую атрибуты "Цена", "Количество", "Сумма".
Данный пример кажется неестественным, т.к.
сумма является явно избыточным атрибутом, значение которого просто выводятся из значений других атрибутов.
Поэтому кажется, что лучше хранить только два базовых атрибута "Цена" и "Количество", а сумму вычислять во время выполнения запросов по мере необходимости.
Так, собственно, требует реляционная теория, стремящаяся свести избыточность к минимуму.
В практике, однако, дело обстоит сложнее.
Например, каждая строка реальной накладной может содержать следующие данные о товаре:
Наиме-нование атрибута Описание атрибута Базовый ли атрибут Формула для вычислимого атрибута Name Наименование товара Да N Количество Да P1 Учетная цена товара Да S1 Учетная сумма на все количество S1 = N*P1 PerSent Процент наценки на единицу товара Да P2 Наценка на единицу товара P2 = P1*PerSent/100 S2 Сумму наценки на все количество S2 = N*P2 P3 Цену товара с учетом наценки P3 = P1+P2 S3 Сумму на все количество с учетом наценки S3 = N*P3 NDS Процент НДС Да

[Back]