Введение в системы БД (542480), страница 198
Текст из файла (страница 198)
19.5. ! 998. — 4 1, № 12. Короткая заметка, содержащая перечень основных особенностей нашей модели наследования. !9.7. Манов Ы., РеМ!сЫе! 1..О. Кесепг Реыйп Тгаде-Ойз 1п 5(;Н.З // АСМ 510МОР.— РесегпЬег, 1994. — Кесогд 23, № 4. В статье обосновывается решение разработчиков не поддерживать в $( 1.3 ограни- чения типа (это обоснование базируется на аргументе, который был выдвинут ра- нее Здоником (Хдоп!к) и Мейером (Ма!ег) в (!9.1!]). Однако мы не согласны с та- ким обоснованием.
Фундаментальная проблема заключается в том, что в нем не- верно различаются значения и переменные (см. упр. 19.3). 19.8. Меуег В. ТЬе Мапу Расея о( 1пЬегйапсе: А Тахопощу о( Тахопощу 0 1ЕЕЕ Сощрщег. — Мау, 1996. — 29, № 5. 19.9. КцгпЬацсЬ 1. А Мапег оТ 1пгепг: Нотч го Рейне БцЬс!аззез 0 Зошпа! оТОЬ)есГ-Опепгед Рго8гаппп[п8. — БерсегпЬег, ! 996. 763 Глава 19. Наследование типов 19.6. Раге Сд,, Рагччеп Н. Точгагд а Моде! оТ Туре !пйейгапсе а САСМ. — РесещЬег, Как указывалось в разделе 19.9, мы придерживаемся мнения„что специализация ограничением — это единственный логически допустимый способ определения подтипов. Поэтому интересно отметить, что объектный мир (по крайней мере, часть его обитателей) занимает прямо противоположную позицию.
Процитируем автора настоящей публикации: "Класс Б[)САВŠ— это подкласс класса КЕСТАЕБЕЕ? ...Растяжение прямоугольника по оси Х вполне допустимо. Но если то же самое сделать с квадратом, он перестанет быть квадратом. Концептуально это не обязательно плохо.
Когда вы вытягиваете квадрат, получается прямоугольник... Но... большинство объектно-ориентированных языков не допускают, чтобы объекты меняли свой класс... Поэтому предлагается следующий принцип проектирования для систем классификации: Подкласс не должен быть оиредвлен через ограничения суиеркласса". Замечание. Как объясняется в главе 24, в объектном мире часто используется термин класс лля понятия, которое мы называем тииом.
Нас поражает, что автор принимает указанную позицию просто потому, что объектно-ориентированные языки "не допускают, чтобы объекты меняли свой класс". Мы бы скорее побеспокоились о получении, прежде всего, правильной модели, а не о соответствии конкретной реализации. 19.10.Танка!ваап' А. Оп 1Ье 1чо11оп оГ 1пйегйапсе П АСМ Сошр. Бцгч.— БергешЬег, 1996.
— 28, № 3. 19.11. Ъ$оп[к Б.В., Ма|ег П. Рцпдашепга1з оГОЬ)есс-Опеп1ед Ва1аЬазез в [24.52]). Ответы к некоторым упражнениям 19.3. Рассмотрим лишь п. е [значение и переменная), поскольку это фундаментальные понятия и они еше явно нигде в книге не рассматривачись.
(Следующие определения взяты из [3.3].) ° Значение — это "отдельная константа" [например, отдельная константа "3"). Значение не имеет никакого места расположения во времени изи пространстве. Однако значения могут иметь в памяти некоторые кодированные представления, и такие представления, конечно, имеют место расположения во времени и пространстве [см.
следующий абзац). Отметим, что по определению значение не может быть изменено. Иначе, если бы это было возможно, после такого изменения оно бы не было больше таким значением (вообще). ° Переменная — это хранитель кодированного представления некоторого значения. Она имеет место расположения во времени и пространстве. Также переменные в отличие от значений, конечно же, могут быть обновлены, т.е. текущее значение переменной может быть заменено другим значением, возможно, отличным от предыдущего. [Безусловно, после выполнения операции обновления данная переменная остается той же переменной.) Кстати заметим следующее; важно понимать, что значение не обязательно должно быть таким же простым, как целое число "3".
Наоборот, значения могут быть сколь угодно сложными. Например, значение может быть массивом, стеком, списком, отношением, геометрической точкой, эллипсом, Х-лучом, документом, отпечатком пальца и т.д. Аналогичное замечание, конечно, справедливо и для переменных. 764 Часть р. дополнительные аспекты 19.4. Наименее конкретный тип любого значения любого типа, показанный на рис. 19.1, — это, конечно, РЬМЕ РХБНКЕ. 19.5. Всего 22 иерархии. В их число включена и пустая иерархия. !9.6. Исходя нз того, что все прямоугольники имеют центр в начале координат, каждый заданный прямоугольник может однозначно идентифицироваться любыми двумя смежными вершинами (скажем, А и В), а заданный квадрат может однозначно идентифицироваться любой отдельной вершиной (скажем, А).
Чтобы определиться более точно, будем считать, что А — вершина в правом верхнем квадранте плоскости (х > О, у > О), а  — вершина в ее правом нижнем квадранте (х > О, у < О). Тогда типы КЕСТАНОЬЕ и НОВАКЕ можно определить следующим образом. ТУРЕ КЕСТМОЬЕ РОЯЯКЕР ( А Р01НТ, В Р01НТ ) ... 1/ ТУРЕ НОВАКЕ РОББКЕР ( А РО1НТ ) СОНЯТКАХНТ ( ТНЕ Х ( ТНЕ А ( ЯООАКЕ ) ) - ТНЕ У ( ТНЕ В ( ЯООАКЕ ) ) МО ТНЕ У ( ТНЕ А ( ЯООМЕ ) ) ТНЕ Х ( ТНЕ В ( ЯООМЕ ) ) ) 1 19.7. Приведенные ниже операторы являются операторами обновления. В качестве вспомогательного упражнения приведите некоторые аналоги этих операторов, предназначенных только для чтения.
ОРЕКАТОК КОТАТЕ ( К КЕСТМОЬЕ ) ОРОАТЕБ ( К ) ЧЕКЯ10Н КОТАТЕ КЕСТМОЬЕ ; ВЕОХН 1 ЧЫ Р РОХНТ ЧАК 0 РО1НТ Р := ТНЕ А ( К ) 0 $- "ТНЕ В ( К ) 1 ТНЕ Х ( ТНЕ А ( К ) ) := ТНЕ У ( 0 ) 1 ТНЕ У ( ТНЕ А ( К ) ) := ТНЕ Х ( а ) ; ТНЕ Х ( ТНЕ В ( В ) ) и- "ТНЕ У ( Р ) ТНЕ У ( ТНЕ В ( К ) ) з= ТНЕ Х ( Р ) КЕТОКК 1 ЕНО ; ЕНО ОРЕКАТОК 1 ОРЕКАТОК КОТАТЕ ( Я ЯООАКЕ ) ОРОАТЕЯ ( Я ) ЧЕКЯХОН КОТйТЕ ЯООАКЕ КЕТОКН ЕКО ОРЕКАТОК ; 19.8. а) Указанное выражение приведет к ошибке несоответствия типа во время компиляции, поскольку для оператора ТНЕ К требуется, чтобы аргумент имел тип С1КСЬЕ, а объявленный тип атрибута й был ЕЬЬ1РБЕ, а не С1КСЬЕ.
(Конечно, если проверка типа во время компиляции будет отсутствовать, мы получим ошибку 765 Глава 19. Наследование типов типа во время выполнения, как только встретится кортеж, в котором значение атрибута А будет просто эллипсом, а не окружностью.) б) Указанное выражение допустимо, однако оно дает в результате отношение с таким же заголовком„как и заголовок переменной-отношения К, но в этом отношении объявленный тип атрибута А — С1КСЬЕ, а не ЕЬЬ1РЯЕ.
19.9. Выражение служит сокращенной записью выражения такого вида. ( ( ЕХТЕК0 ( К ) й00 ( ТЕКАТ 00ИН АЯ Т ( А ) ) йЯ й' ) ( АЬЬ 007 А ) КЕНАИЕ А' АЯ А Здесь А' — произвольное имя, не появляюшееся в качестве имени атрибута в результате вычисления реляционного выражения К. 19.10. Выражение служит сокращенной записью выражения такого вида. ( К ННЕКЕ 1Я т ( А ) ) ТКЕАТ 00ИН йЯ т ( А Более того, это последнее выражение само является сокрашенной записью для бо- лее длинного выражения, что было показано в ответе к упр.
19.9. 766 Часть г'. Дополнительные аспекты Глава 20 Распределенные базы данных 20.1. Введение В конце главы 2 уже затрагивалась тема распределенных баз данных. При этом указывалось, что "полная поддержка распределенных баз данных означает, что отдельное приложение может "прозрачно" обрабатывать данные, распределенные между множеством различных баз данных, управление которыми осуществляют разные СУБД, работающие на соединенных коммуникационными сетями машинах разных типов с различными операционными системами. Здесь понятие "прозрачно" означает, что приложение выполняет обработку данных с логической точки зрения так, как будто управление данными полностью осуществляется одной СУБД, работающей на единственной машине". В этой главе мы поговорим о распределенных базах данных подробнее, а именно — более точно определим, что такое распределенная база данных, почему такие базы данных играют все более важную роль и какие технические проблемы существуют в области распределенных баз данных.
Кроме того, в главе 2 обсуждались системы "клиент/сервер'*, которые можно рассматривать как простой частный случай распределенных систем вообще. Системы "клиент/сервер" будут рассмотрены в разделе 20.5. Общий план данной главы приведен в конце следующего раздела. 20.2. Предварительные сведения Начнем с рабочих определений, которые на этом этапе неизбежно будут не совсем точны. ° Система распределенных баз данных состоит из набора узлов (зйез), связанных коммуникационной сетью, в которой: а) каждый узел — это полноценная СУБД сама по себе, но б) узлы взаимодействуют мекду собой таким образом, что пользователь любого из них может получить доступ к любым данным в сети так, как будто они находятся на его собственном узле. Из этого определения следует, что так называемая "распределенная база данных" в действительности является вирглуальной базой данных, компоненты которой физически хранятся в нескольких "реальных" базах данных на нескольких различных узлах (в сущности, являясь логическим объединением этих реальных баз данных).
Пример подобной структуры показан на рис. 20,1. 767 Глава 20. Распределенные базы данньп Нью-йорк Лондон Лос-Анджелес Сан-Франциско Рис. 20.1. Пример типичной системы распределенной базы данных Еще раз отметим, что каждый узел сам по себе является системой базы данных.