ВВЕДЕНИЕ В СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ



Ограничения кортежа - часть 2


сумма является явно избыточным атрибутом, значение которого просто выводятся из значений других атрибутов. Поэтому кажется, что лучше хранить только два базовых атрибута "Цена" и "Количество", а сумму вычислять во время выполнения запросов по мере необходимости. Так, собственно, требует реляционная теория, стремящаяся свести избыточность к минимуму. В практике, однако, дело обстоит сложнее. Например, каждая строка реальной накладной может содержать следующие данные о товаре:

Базовый ли атрибут

Наиме-нование атрибута Описание атрибута Формула для вычислимого атрибута
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 Процент НДС Да  
P4 Сумма НДС на единицу товара   P4 = P2*NDS/100
S4 Сумма НДС на все количество   S4 = N*P4
P5 Цена товара с НДС   P5 = P3+P4
S5 Сумма на все количество с НДС   S5 = N*P5

Таблица 3 Атрибуты товара

Базовыми, т.е. требующими ввода данных являются всего 5 атрибутов (выделены серым цветом). Все остальные атрибуты вычисляются по базовым. Нужно ли хранить в отношении только базовые атрибуты, или желательно хранить все атрибуты, пересчитывая значения вычислимых атрибутов каждый раз при изменении базовых?

Решение 1. Пусть в отношении решено хранить только базовые атрибуты.

Достоинства решения:

  • Структура отношения полностью неизбыточна.
  • Не требуется дополнительного программного кода для поддержания целостности кортежа.
  • Экономится дисковое пространство.
  • Уменьшается трафик сети.

    Недостатки решения:

  • В бухгалтерии для формирования проводок используются, как правило, не базовые, а вычислимые атрибуты.


    Содержание  Назад  Вперед