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



         

Идентифицируемость объектов


Следует поддерживать идентифицируемость объектов

Идентифицируемость объектов давно поддерживается в языках программирования. Для баз данных эта концепция сравнительно нова, см., например, [Hall и др. 76], [Maier и Price 84], [Khoshafian и Copeland 86]. Идея состоит в следующем: в модели с идентифицируемостью объектов объект существует независимо от его значения. Таким образом, имеется два понятия эквивалентности объектов: два объекта могут быть идентичны (они представляют собой один и тот же объект) или они могут быть равны (они имеют одно и тоже значение). Это влечет две следствия: первое – разделение объектов, а второе – изменения объектов.

Разделение объектов: в модели с идентифицируемыми объектами два объекта могут иметь совместно используемый компонент. Таким образом, схематическим представлением сложного объекта является граф, в то время как в системе без идентифицируемости объектов это дерево. Рассмотрим следующий пример: Человек имеет имя, возраст и некоторое количество детей. Предположим, что Питер и Сьюзан имеют 15-летнего сына по имени Джон. В реальной жизни могут иметь место две ситуации: Сьюзан и Питер являются родителями одного и того же ребенка или каждый из них имеет по сыну. В системе без идентифицируемости Питер представляется как:

(peter, 40, {(john, 15, {})}),

а Сьюзен как:

(susan, 41, {john, 15, {})}).

Таким образом, нет никакой возможности выразить, являются ли Питер и Сьюзан родителями одного и того же ребенка или разных детей. В модели с идентифицируемостью объектов эти две структуры либо имеют общую часть (john, 15, { }), либо не имеют ее, так что поддерживаются обе ситуации.

Изменения объектов: предположим, что Питер и Сьюзан действительно являются родителями мальчика по имени Джон. В этом случае все исправления, касающиеся сына Сьюзан, будут производиться с объектом Джон, а следовательно, и с сыном Питера. Идентифицируемость объектов, кроме того, обеспечивает мощный примитив манипулирования данными, который может служить основой для манипулирования множествами, кортежами или рекурсивными сложными объектами [Abiteboul and Kanellakis 89].




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