74
Часть I. Теория баз данных
Таким образом, для упрощения работы СУБД на данные на-
кладывают ограничение не на принадлежность тому или иному
домену, а на принадлежность соответствующему типу данных.
При этом система либо проверяет соответствие типов, либо ищет
такую функцию преобразования, чтобы данные стали принадле-
жащими одному типу.
При этом возникает еще одна сторона проблемы использова-
ния типов данных и поддержки в полном смысле понятия домена:
при манипуляциях с доменами ряд операций имеют смысл в
предметной области, а некоторые операции бессмысленны. На-
пример, выборки данных по условиям SPP.PN = "Физика" и
SPP.PN > "Физика" с учетом вышесказанного корректны, но вто-
рой случай смысла в предметной области не имеет.
Поэтому СУБД должно быть известно, какие выражения и
операции являются корректными, а какие - нет, а множество всех
доменов должно быть замкнутым, чтобы система знала к какому
домену отнести те или иные данные. Из этого следует, что рас-
смотренное выше требование скалярности данных в домене за-
ключается в том, что они могут иметь достаточно сложную
структуру, однако система не должна последнюю видеть.
С аналогичной точки зрения рассмотрим теперь отношения.
Заметим, что в реляционной модели отношения являются как бы
конструкторами типов данных: ведь при создании отношения в
первую очередь создается составной тип данных, являющийся
множеством кортежей, определяемый заголовком. Поэтому, на-
пример, для сравнения или присвоения необходимо, чтобы отно-
шения имели одинаковые наборы имен атрибутов и, кроме того,
атрибуты с идентичными названиями были совместимы друг с
другом по типу.
Очевидно, что в результате выполнения манипуляций с отноше-
ниями возникает проблема типа отношения-результата, т. е. струк-
туры его заголовка. Выше были рассмотрены вопросы, связанные с
выполнением основных операций над отношениями, однако при
изложении в учет не брался тот факт, что заголовок включает в себя
помимо имени атрибута еще и имя домена. Из вышеизложенного
следует, что. скажем, для операции сравнения атрибуты должны
быть совместимы по типу, а принадлежность одному домену не яв-
ляется обязательной, т. к. СУБД производит неявное преобразование
типов доменов.
Следовательно, операция соединения отношений А{А.Х, A.Y}
и B{B.Y, B.Z} является вполне корректной, несмотря на то, что
атрибуты Y имеют одинаковое имя и тип в обоих отношениях, но
определены на различных доменах. При этом возникает интерес-
Глава 1.5. Дополнительные аспекты реляционной технологии 75
ный момент - в полученном в результате выполнения операции
отношении С{С.Х, C.Y, C.Z} неясно, на каком домене определен
атрибут Y. Из совместимости по типу доменов отношений А и В.
на которых определен атрибут Y, следует, что их можно преобра-
зовать один к другому, а в СУБД предусматривают домены с
большим приоритетом.
Атрибуты отношения, как уже упоминалось, состоят из кор-
тежей - упорядоченных пар составного типа, включающих имя
атрибута и его значение, а следовательно, имеющих свой заголо-
вок. Отсюда вытекает, что вопросы совместимости по типу каса-
ются и кортежей при выполнении таких операций, как сравнение,
присваивание и т. д.
Здесь необходимо еще раз остановиться на вопросах, связан-
ных с наследованием типов, которые уже были рассмотрены вы-
ше. Эти вопросы тесно связаны с понятиями подтипа и суперти-
па. Тип X является подтипом типа Y, если каждый экземпляр
типа X обязательно принадлежит типу Y. Соответственно, тип Y
будет являться супертипом для типа X. Например, тип СТУ-
ДЕНТ является подтипом типа УЧАЩИЙСЯ, а тип УЧАЩИЙСЯ
является супертипом для типа СТУДЕНТ.
Эти понятия важны со следующей точки зрения: если СУБД
знает, что экземпляр типа X является подтипом типа Y, то свой-
ства Y. присущи X. В таком случае говорят, что тип X наследует
свойства типа Y, а пользователь имеет возможность применять
данные типа X там, где можно применять данные типа Y - это
называют принципом подстановки. Удобство наследования за-
ключается и в том, что для типа можно многократно выполнять
некое действие, которое применимо и для его подтипов без каких
либо доработок.
Использование этих принципов для доменов связано с тем.
что, несмотря на наследование свойств, внутренняя структура
каждого типа, вообще говоря, может быть различна, но один тип
можно привести к другому. Например, тип СТУДЕНТ можно
привести к типу УЧАЩИЙСЯ, но при обратном преобразовании
может возникнуть потеря информации - у типа СТУДЕНТ может
существовать ряд специфических свойств (например, НАЙМЕ-
НОВАНИЕВУЗА), которых в супертипе может и не быть.
Кроме того, рассматриваемые домены можно представить в
виде простейшей иерархии типов, поскольку супертип есть
обобщение своих подтипов. Любой экземпляр иерархии типов
автоматически при создании наследует все свойства своего су-
пертипа, но всегда есть возможность некоторые из них на задан-
ном уровне иерархии переопределить или добавить новые, спе-