Все атрибуты в системах управления базами данных
делятся (по абсолютной аналогии с отношениями) на базовые и виртуальные.
Так называемые базовые атрибуты – это хранимые атрибуты, которые
необходимо использовать не один раз, а следовательно, целесообразно
сохранить. А, в свою очередь, виртуальные атрибуты – это не
хранимые, а вычисляемые атрибуты. Что это значит? Это значит, что
значения так называемых виртуальных атрибутов реально не хранятся, а
вычисляются через базовые атрибуты на ходу посредством задаваемых
формул. При этом домены вычисляемых виртуальных атрибутов определяются
автоматически.
Приведем пример таблицы, задающей отношение, в которой
два атрибута – обычные, базовые, а третий атрибут – виртуальный. Он
будет вычисляться по специально введенной формуле. Итак,
мы видим, что атрибуты «Вес Кг» и «Цена Руб за Кг» – базовые атрибуты,
потому что они имеют обыкновенные значения и хранятся в нашей базе
данных. А вот атрибут «Стоимость» – виртуальный атрибут, потому что он
задан формулой своего вычисления и реально в базе данных храниться не
будет.
Интересно заметить, что в силу своей природы,
виртуальные атрибуты не могут принимать значения по умолчанию, да и
вообще, само понятие значения по умолчанию для виртуального атрибута
лишено смысла, а следовательно, не применяется.
И еще необходимо знать, что, несмотря на то что домены
виртуальных атрибутов определяются автоматически, тип вычисляемых
значений иногда нужно заменить с имеющегося на какой-нибудь другой. Для
этого в языке систем управления базами данных имеется специальный
предикат Convert, с помощью которого и может быть переопределен тип
вычисляемого выражения. Convert – это так называемая функция явного
преобразования типов. Записывается она следующим образом:
Convert (тип данных, выражение);
Выражение, стоящее вторым аргументом
функции Convert, посчитается и выведется в виде таких данных, тип
которых указан первым аргументом функции.
Рассмотрим пример. Пусть нам необходимо посчитать
значение выражения «2*2», но вывести это нужно не в виде целого числа
«4», а строкой символов. Для выполнения этого задания запишем следующую
функцию Convert:
Convert (Char (1), 2 * 2).
Таким образом, можно увидеть, что данная запись функции Convert в точности даст необходимый нам результат.
|