- •Глава 13. Семантическое моделирование
- •Часть III Проектирование базы данных
- •Часть IV
- •14.1. Введение
- •14.2. Транзакции
- •14.3. Восстановление транзакции
- •14.4. Восстановление системы
- •14.5. Восстановление носителей
- •14.6. Двухфазная фиксация
- •14.7. Поддержка языка sql
- •14.8. Резюме
- •15.1. Введение
- •15.2. Три проблемы параллельности
- •15.3. Блокировка
- •15.4. Устранение трех проблем параллельности
- •15.5. Взаимная блокировка
- •15.6. Упорядочиваемость
- •15.7. Уровни изоляции
- •15.8. Блокировка намерения
- •15.9. Средства языка sql
- •15.10. Резюме
- •Часть V
- •16.1. Введение
- •16.2. Избирательная схема управления доступом
- •16.3. Мандатная схема управления доступом
- •16.4. Статистические базы данных
- •16.5. Шифрование данных
- •16.6. Средства языка sql
- •16.7. Резюме
- •17.1. Введение
- •17.2. Пример выполнения оптимизации
- •17.3. Оптимизация запросов
- •17.4. Преобразование выражений
- •17.5. Статистические показатели базы данных
- •17.6. Стратегия по принципу "разделяй и властвуй"
- •17.7. Реализация реляционных операторов
- •17.8. Резюме
- •18.1. Введение
- •18.2. Обзор концепции трехзначной логики
- •18.3. Некоторые следствия изложенной схемы
- •18.4. Отсутствующие значения и ключи
- •18.5. Внешнее соединение
- •18.6. Специальные значения
- •18.7. Поддержка неопределенных значений в языке sql
- •18.8. Резюме
- •Глава 19
- •19.1. Введение
- •19.2. Иерархия типов
- •19.3. Полиморфизм и заменимость
- •19.4. Переменные и операция присвоения
- •19.5. Специализация по ограничениям
- •19.6. Операции сравнения
- •19.7. Операторы, версии и сигнатуры
- •19.8. Является ли окружность эллипсом
- •19.9. Пересмотр специализации ограничением
- •19.10. Резюме
- •20.1. Введение
- •20.2. Предварительные сведения
- •20.3. Двенадцать основных целей
- •1. Локальная независимость
- •2. Отсутствие опоры на центральный узел
- •3. Непрерывное функционирование
- •4. Независимость от расположения
- •5. Независимость от фрагментации
- •6. Независимость от репликации
- •7. Обработка распределенных запросов
- •8. Управление распределенными транзакциями
- •9. Аппаратная независимость
- •10. Независимость от операционной системы
- •11. Независимость от сети
- •12. Независимость от типа субд
- •20.4. Проблемы распределенных систем
- •Транзакция т1х
- •20.5. Системы "клиент/сервер"
- •20.6. Независимость от субд
19.9. Пересмотр специализации ограничением
Продолжая начатое в предыдущем разделе обсуждение, рассмотрим небольшое, но существенное дополнение. Обратимся к следующему примеру: "Пусть тип CIRCLE имеет собственный подтип COLORED CIRCLE (Цветная окружность)". При этом подразумевается, что "цветные окружности" являются частным случаем окружностей вообще. Примеры такого рода весьма распространены в литературе. До сих пор мы говорили, что считаем их крайне неубедительными и даже в некотором отношении вводящими в заблуждение. Если говорить конкретно, то в данном случае, по нашему мнению, не имеет смысла рас- сматривать цветные окружности как отдельный случай окружностей в целом. В конце концов, "цветные окружности" по определению должны быть изображениями, напри- мер, на экране дисплея, в то время как окружности вообще представляют собой геомет- рические фигуры, а не изображения. Поэтому представляется более разумным считать тип COLORED CIRCLE не подтипом типа CIRCLE, а совершенно самостоятельным типом. Такой независимый тип мог бы иметь возможное представление, в котором один ком- понент имел бы тип CIRCLE, а другой — тип COLOR, но, повторяем, он ни в коем случае не являлся бы подтипом типа CIRCLE.
Наследование возможных представлений
Рассмотрим конкретные аргументы в пользу нашей позиции по предыдущему вопро- су. Возвратимся на некоторое время к уже знакомому нам примеру с эллипсами и ок- ружностями. Еще раз приведем сокращенные определения типов.
TYPE ELLIPSE POSSREP ( A LENGTH, В LENGTH, CTR POINT ) ... ; TYPE CIRCLE POSSREP ( R LENGTH, CTR POINT ) ... ;
Обратите внимание, что эллипсы и окружности имеют различные объявляемые возможные представления. Однако возможное представление для эллипсов являет- ся — обязательно, хотя и неявно — возможным представлением и для окружностей, поскольку окружности являются эллипсами. Таким образом, окружности могут "возможно, представляться" своими полуосями а и b (и центром), хотя на самом деле их полуоси будут равны одному и тому же значению. Обратное, конечно, не верно, т.е. возможное представление для окружностей не обязательно является возможным представлением для эллипсов.
Отсюда следует, что мы могли бы считать возможные представления и ограничения до- полнительными "свойствами", которые наследуются окружностями от эллипсов или, гово-
ря в более общем плане, подтипами от супертипов9. Но (возвращаясь к окружностям и цветным окружностям) очевидно, что объявленное возможное представление для типа CIRCLE не является возможным представлением для типа COLORED_CIRCLE, поскольку в нем нет ничего, что могло бы представлять цвет! Это говорит о том, что цветные окружности не являются окружностями в том же смысле, что и, например, окружности и эллипсы.
Действительный смысл понятия подтипа
Следующий аргумент связан с предыдущим, но он логически является более строгим. Не существует способа получения какой-либо цветной окружности из некоторой ок- ружности посредством специализации по ограничениям.
Для объяснения этого утверждения опять возвратимся к примеру с эллипсами и ок- ружностями. Ниже вновь приведены соответствующие определения типов.
TYPE ELLIPSE POSSREP ( A LENGTH, В LENGTH, CTR POINT ) ...
CONSTRAINT ( THE_A { ELLIPSE j > THE_B ( ELLIPSE ) ) ;
TYPE CIRCLE POSSREP ( R LENGTH, CTR POINT ) SUBTYPE OF ( ELLIPSE }
CONSTRAINT ( THE_A ( CIRCLE ) = THE_B ( CIRCLE ) ) ;
Как мы видели ранее, фраза CONSTRAINT для типа CIRCLE гарантирует, что эллипс с . равными полуосями а = Ь будет автоматически специализирован к типу CIRCLE. Но в случае цветных окружностей и вообще окружностей нет каких-либо предложений CONSTRAINT, которые можно было бы записать в определении типа COLORED CIRCLE и ко- торые по аналогии со случаем с эллипсами и окружностями позволили бы специализиро- вать некоторую окружность к типу C0L0RED_CIRCLE. Иными словами, нет ограничений типа, которые можно было бы сформулировать таким образом, что если бы им удовле- творяла некоторая данная окружность, то это прямо означало бы, что она в действитель- ности является цветной.
Поэтому, опять же, представляется более разумным считать типы COLORED CIRCLE и CIRCLE совершенно разными типами и, в частности, считать, что тип COLORED CIRCLE имеет возможное представление, в котором один компонент относится к типу CIRCLE, а другой — к типу COLOR. В последнем случае данному типу можно дать следующее определение.
TYPE COLORED_CIRCLE POSSREP ( CIR CIRCLE, COL COLOR ) ... ;
На самом деле мы здесь затронули вопрос, который можно поставить гораздо шире. Фактически мы считаем, что определение подтипов должно всегда задаваться через спе- циализацию по ограничениям! Наше предложение заключается в том, что, если тип
Т' — это подтип типа Т, всегда должно существовать такое ограничение типа, что если оно удовлетворяется некоторым заданным значением типа Т, то рассматри- ваемое значение на самом деле является некоторым значением типа Т' (и должно быть автоматически специализировано к типу Т'). Предположим, что Т и Т' — некото- рые типы и I" — подтип типа Т (не нарушая общности, можно считать, что Т' — это не- посредственный подтип типа Т). Тогда будут справедливы следующие рассуждения.
Типы Т и Т' — это, по существу, множества (именованные множества значений), и Т' является подмножеством Т.
Следовательно, типы т и Т' оба имеют предикаты члена множества, т.е. такие предикаты, что их значения являются членами данного множества (поэтому и зна- чениями данного типа) тогда и только тогда, когда они удовлетворяют данному предикату. Пусть такими предикатами будут соответственно Р и Р'.
Заметим, что предикат Р' по определению при вычислении дает значение истина только для значений из числа действительно относящихся к типу Т. Поэтому он может быть сформулирован не только в терминах значений типа Т', айв терми- нах значений типа Т.
Именно такой предикат Р', сформулированный в терминах значений типа Т, и является ограничением, которому должны удовлетворять значения типа Т, чтобы фактически являться значениями типа Т'. Иными словами, некоторое значение типа Т специализируется именно к типу Т', если оно удовлетворяет ограничению Р'.
Поэтому мы утверждаем, что специализация по ограничениям является единствен- ным концептуально допустимым средством определения подтипов. Вследствие этого мы не признаем примеров, подобных предлагаемому, в котором тип COLORED_CIRCLE может быть подтипом типа CIRCLE.