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

       

с этим отметим, что для


Замечание. В связи с этим отметим, что для множеств скаляров, когда структура ключа не может отличаться от структуры элемента множества, его явное определение не имеет смысла.

Глобальный ключ явным образом определяет, что объект будет отличаться своим состоянием от других объектов этого же класса. Глобальные ключи не являются обязательными, поскольку уникальность объекта в любом случае определяется объектным идентификатором. В глобальный ключ могут входить либо компоненты-скаляры, либо скалярные поля одного из компонентов-кортежей или компонентов-множеств. Для объектного типа может быть задано несколько глобальных ключей.

Глобальный ключ, заданный как набор полей компонента-множества, определяет, что элементы этого множества уникальны во всех существующих в системе объектах данного типа - в том числе и в пределах каждого объекта. Отметим, что если для типа задан глобальный ключ, определенный на полях компонента-множества, то для каждого объекта этого типа одновременно может существовать множество уникальных значений этого ключа.

Во внешние ключи входят либо компоненты-скаляры, либо скалярные поля одного из компонентов-кортежей или компонентов-множеств, аналогичных полям, входящих в один из существующих глобальных ключей. Смысл и цели внешних ключей аналогичны смысл и целям внешних ключей РСУБД.

Пример. Объектный тип Warehouse описывает склады. Для объектов этого типа не определены глобальные ключи - таким образом, в системе могут существовать неразличимые по значению объекты этого типа. Компонент ResourceItems содержит данные о товаре, хранящемся на складе. Значение компонента ResourceItems определено как множество кортежных значений типа ArtQty, при этом определено, что атрибут Art является ключом.

CREATE CLASS Warehouse { Address STRING; ResourceItems SET OF ArtQty CONSTRAIN LOCALKEY Art; }

Объектный тип GoodsMotion описывает движение товара. Существующие в системе объекты этого типа уникальны по атрибуту No. Компоненты FromWarehouse и ToWarehouse могут ссылаться на существующие в системе объекты типа Warehouse (значение этих полей может быть не определено - FromWarehouse в случае поставок, ToWarehouse в случае продажи).

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