Классика баз данных - статьи

       

Декартово произведение этих значений представляет


Декартово произведение этих значений представляет собой значение 1НФ отношения, полностью описывающее состояние этого объекта (схема этого отношения включает все скалярные поля, существующие в компонентах этого объекта). Каждому объекту и, следовательно, каждому такому значению, соответствует уникальный объектный идентификатор, также представляющий собой значение скалярного типа. Сказанное позволяет рассматривать объявление объектного типа t также и как объявление переменной t, содержащей данные всех существующих в системе объектов этого типа (это отношение определено также на множестве скалярных типов).

Оговоримся, что операция, производящая значение 1НФ отношения, полностью описывающее состояние объекта, должна быть несколько более сложной, чем простое декартово произведение. Дело в том, что имена полей, входящих в различные компоненты объекта, могут совпадать между собой. Для того чтобы избежать подобных конфликтов имен, предлагается в процессе создания декартова произведения уточнять имена полей именами компонентов. Например, кортежные типы R1 и R2, на которых определены компоненты a1 и a2, могут иметь поля с одинаковым именем x. (Еще раз отметим, что реляционная модель не накладывает каких-либо ограничений на имена, за исключением требования их уникальности.) Если использовать точечную нотацию, то уточненные имена будут выглядеть как a1.x и a2.x. По нашему мнению, уточнение имен сохраняет семантику и позволяет выразить сложность структуры объекта в сложном имени атрибута R-переменной. Например, множество значений атрибута x компонента a типа t может быть получено как с помощью операции выборки из R-переменной компонента t.a[x], так и из R-переменной типа t[a.x].

Таким образом, значение переменной t представляет собой совокупность значений декартовых произведений семантически уточненных компонентов объектов типа t, существующих в системе. Каждому объектному типу t соответствует единственная переменная t. Будем называть такие переменные R-переменными типов.

Пример. Объектному типу GoodsMotion соответствует R-переменная этого типа GoodsMotion со схемой (OID:DOID, No:INTEGER, DateOfAction:DATE, FromWarehouse:Warehouse, ToWarehouse:Warehouse, MovedItems.Article:STRING, MovedItems.Quantity:INTEGER). Отметим, что это отношение определено на множестве скалярных типов, включающих тип объектных идентификаторов DOID и ссылочный тип Warehouse, который был определен в процессе объявления соответствующего объектного типа. Операция

Object(GoodsMotion WHERE MovedItems.Article = "art1" AND DateOfAction = '31.05.2005')

вернет значение, представляющее собой множество OID объектов, описывающих движения товаров с артикулом "art1", произведенных 31мая 2005 года.


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