=> Главная База Знаний Базы данных Виртуальные атрибуты


Виртуальные атрибуты

Виртуальные атрибуты

Все атрибуты в системах управления базами данных делятся (по абсолютной аналогии с отношениями) на базовые и виртуальные. Так называемые базовые атрибуты – это хранимые атрибуты, которые необходимо использовать не один раз, а следовательно, целесообразно сохранить. А, в свою очередь, виртуальные атрибуты – это не хранимые, а вычисляемые атрибуты. Что это значит? Это значит, что значения так называемых виртуальных атрибутов реально не хранятся, а вычисляются через базовые атрибуты на ходу посредством задаваемых формул. При этом домены вычисляемых виртуальных атрибутов определяются автоматически.

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


Итак, мы видим, что атрибуты «Вес Кг» и «Цена Руб за Кг» – базовые атрибуты, потому что они имеют обыкновенные значения и хранятся в нашей базе данных. А вот атрибут «Стоимость» – виртуальный атрибут, потому что он задан формулой своего вычисления и реально в базе данных храниться не будет.

Интересно заметить, что в силу своей природы, виртуальные атрибуты не могут принимать значения по умолчанию, да и вообще, само понятие значения по умолчанию для виртуального атрибута лишено смысла, а следовательно, не применяется.

И еще необходимо знать, что, несмотря на то что домены виртуальных атрибутов определяются автоматически, тип вычисляемых значений иногда нужно заменить с имеющегося на какой-нибудь другой. Для этого в языке систем управления базами данных имеется специальный предикат Convert, с помощью которого и может быть переопределен тип вычисляемого выражения. Convert – это так называемая функция явного преобразования типов. Записывается она следующим образом:

Convert (тип данных, выражение);

Выражение, стоящее вторым аргументом функции Convert, посчитается и выведется в виде таких данных, тип которых указан первым аргументом функции.

Рассмотрим пример. Пусть нам необходимо посчитать значение выражения «2*2», но вывести это нужно не в виде целого числа «4», а строкой символов. Для выполнения этого задания запишем следующую функцию Convert:

Convert (Char (1), 2 * 2).

Таким образом, можно увидеть, что данная запись функции Convert в точности даст необходимый нам результат.