Предметный указатель


B

B-дерево, 193

А

Автоматическая навигация, 33

Администратор базы данных, 136, 186

— системный, 136

— транзакций, 163

Алгебра реляционная, 234

Анализ на непротиворечивость, 169

Аргумент (динамический SQL), 182

Ассоциация, 241

Атомарность значений данных, 24

операций, 164

транзакций, 163

Атрибут, 26

Б

База данных, 186

— —п о умолчанию, 195

— — пользовательская, 186

— — реляционная, 22

— — системная, 186

Безопасность данных, 132

представления, 133

Блок условия, 211

Блокирование, 169

Блокировка монопольная, 169

совместная, 170

В

Вариант CHECK, 118

GRANT, 138

Восстановление, 166

Г

Генератор деклараций DCLGEN, 155

планов прикладных задач, 35

Генерация кода, 38

Граф ожидания, 179

Группа памяти, 188

— — по умолчанию, 196

повторяющаяся, 25

Д

Данные скрытые, 128

Домен, 231

Е

Единица блокирования, 176

— восстановления, 166

Ж

Журнал, 163

З

Зависимость от незафиксированного обновления, 167

функциональная, 249

Запись хранимая, 190

Значение неопределенное, 45

— — в арифметическом выражении, 55

— — в индексе с параметром UNIQUE, 47

— — в предложении SELECT DISTINCT, 60

— — в предложении UPDATE, 98

— — в сравнениях, 59

— — во встроенном языке, 149

— — во фразе GROUP BY, 86

— — во фразе ORDER BY, 60

— — при проектировании базы данных, 252

И

Идентификатор записи, 191

санкционирования доступа, 132

Импликация, 81

Имя, 43

представления, 116

уточненное, 53

Индекс, 138, 187, 188, 190

кластеризации, 190

Интерфейс интерактивный, 197

Исключение дубликатов, 54

К

Каталог, 39, 109

Квантор, 77

общности FORALL, 79

существования, 77

Классификация связей, 241

сущностей, 240

Кластеризация внутритабличная, 190

межтабличная, 190

Ключ альтернативный, 233

внешний, 234

возможный, 233

Команда BIND, 201

DISPLAY FORM, 204

DISPLAY REPORT, 205

DRAW COND, 212

FREE, 201

PRINT REPORT, 205

REBIND, 201

RUN QUERY, 204

DRAW, 210

Константы, 45

Кортеж, 231

Курсор, 151

, стабильноcть его, 175

М

Макетирование, 223

Манипулирование данными, 28

Модель данных реляционная, 25

Модуль запросов к базе данных, 34

языка программирования интерфейсный, 37

Н

Навигация, 31

автоматическая, 221

ручная, 221

Независимость данных, 40, 222

логическая, 222

физическая, 40

Нормализация, 240, 248

О

Области рабочая QUERY, 204

дескрипторов SQLDA, 183

рабочая FORM, 205

рабочая временная, 204

связи SQLCA, 183

Обновление данных, 98

— — незафиксированное, 167

— — утраченное, 167

Обозначение, 241

Обстановка операционная системы DB2, 20

Ограничение санкционирования доступа, 132

Оператор сравнения ALL, 71

— — ANY, 71

Операция декартова произведения, 236

деления, 237

присваивания реляционная, 238

проекции, 236

разности, 236

соединения, 237

Отношение, 232

базовое, 234

Отношения, совместимые по объединению, 235

Отчет, 204

П

Параметр UNIQUE, 47

динамического SQL, 182, 184

Переменная включающего языка, 146

индикаторная, 149

системная USER, 134

План прикладной задачи, 35, 38

Подзапрос, 72

коррелированный, 74

Подтип сущностей, 251

Поле SQLCODE, 147

Пользователь, 28

Предикат BETWEEN, 57

IN, 57

— — с подзапросами, 72

LIKE, 58

Предлжение DELETE CURRENT, 153

INSERT встроенного языка, 150

ALTER TABLE, 46

CLOSE, 151

COMMENT ON, 112

COMMIT, 155

CREATE INDEX, 47

CREATE SYNONYM, 113

CREATE TABLE, 43, 46

CREATE VIEW, 115

DECLARE CURSOR, 151

DECLARE TABLE, 146

DELETE, 99

DELETE встроенного языка, 150

DROP INDEX, 48

DROP SYNONYM, 113

DROP TABLE, 46

DROP VIEW, 118

EXECUTE, 182

FETCH, 151

GRANT, 135

INCLUDE (декларация), 155

INCLUDE SQLCA, 147

INCLUDE SQLDA, 183

INSERT, 100

LOCK TABLE, 174

OPEN курсор, 152

PREPARE, 181

REVOKE, 135

ROLLBACK, 156

SELECT, 53

SELECT вложенное, 72

SELECT встроенного языка, 148

SELECT единичное, 148

SELECT обработка, 90

SELECT*, 55

UPDATE, 98

UPDATE CURRENT, 153

UPDATE встроенного языка, 149

WHENEVER, 155

Представление, условие обновляемости, 121

Представления, 29

Преимущества реляционных систем, 220

Прекомпилятор, 34

Привилегия, 135

BCTRL, 140

DBADM, 140

DBMAINT, 140

SYSADM, 140

SYSOPR, 140

административная, 140

требуемая пользователю, 140

Приложение интерактивное, 21

пакетное, 21

Принцип двухрежимный, 145

Проверка полномочий, 38

—п равильности плана, 201

Программа управления хранимыми данными, 36

Проектирование базы данных, 240

Производительность системы, 225

Пространство индексное, 186

табличное, 186

— — по умолчанию, 189

— — простое, 189

— — табличное сегментированное, 190

Протокол упреждающей записи в журнал, 166

Процедура проверки достоверности, 192

редактирования, 191

Процессор SPUFI, 199

Псевдоним, 66

ПсевдоЯОД, 245

Пул буферный, 196

Путь доступа, 38

Р

Реорганизация, 189

Реструктуризация, 126

С

Свойство, 240

Связь, 240

Сегментирование пространства, 189

Синоним, 113

Система R*, 230

SQL/DS, 230

реляционная, 238

Ситуация тупиковая, 176

Словарь данных (каталог), 109

Спецификация DISTINCT, 53

Средство программное DL/1 Extract, 22

— — DXT, 22

— — QMF, 22

Степень отношения, 233

Страница, 186

Супервизор стадии исполнения, 35

Сущность, 240

ассоциативная, 240

стержневая, 240

характеристическая, 240

Т

Таблица, 42

базовая, 42

виртуальная, 30

каталога, 109

хранимая, 186

Тип данных, 44

Точка синхронизации, 165

Транзакция, 162

У

Умолчание системное, 188

Управление параллельными процессами, 166

Уровень изоляции, 175

Утилита, 202

Ф

Фиксация автоматическая, 163

двухфазная, 165

Форма отношения нормальная, 248

отчета по умолчанию, 204

Фраза FOR UPDATE, 152

GROUP BY, 85

HAVING, 86

NOT NULL, 45

ORDER BY (определение курсора), 152

ORDER BY (предложение SELECT), 56

USING (предложения EXECUTE), 182

USING (предложение FETCH), 184

Функция стандартная AVG, 83

— — COUNT (*), 83

— — MIN, 83

— — SUM, 83

— — МАХ, 83

Х

Характеристика, 241

Ц

Целостность по ссылкам, 99, 234

— — сущностям, 234

Ч

Число кардинальное отношения, 233

Чтение повторяемое, 175

Э

Эквисоединение, 62

Элемент образца, 212

Я

Язык QBE, 210

SQL встроенный, 145

SQL динамический, 180

SQL интерактивный, 197

SQL статический, 185



[1] В этой книге мы будем использовать термин «MVS» для обозначения как стандартной операционной системы MVS (т. е. системного продукта фирмы IBM «Multiple Virtual Systems»), так и расширенной ее версии, называемой MVS/XA («MVS/Extended Architecture»). Каждая ссылка в этом тексте на MVS относится в равной степени к обеим ее версиям.

[2] В интересах точности следует заметить, что TSO в действительности не является «подсистемой» в том специальном смысле, в котором этот термин используется в MVS Скорее она является неотъемлемой частью самой MVS. Можно приобрести систему MVS без IMS или CICS, но нельзя без TSO. Но эти различия не представляются важными для наших целей, и для простоты мы будем рассматривать в этой книге все три компонента как подсистемы.

[3] Для читателей, хорошо знающих MVS и/или TSO, заметим, что пакетное приложение TSO есть не что иное, как обычное пакетное приложение MVS, которое исполняется под управлением телемонитора TSO (ТМР). См. раздел 14.9.

[4] Формат хранимых данных — это, конечно, не единственное, чем отличаются эти две системы. Имеется ряд других отличий, о которых упоминается ниже. Большинство из них связано с тем фактом, что система DB2 специально разработана для обстановки больших систем (MVS). Например, объем данных в базе данных, которые могут запоминаться в интерактивном режиме в системе DB2, ограничивается только объемом памяти, доступной в таком режиме, в то время как система SQL/DS ограничивается единственной базой данных, функционирующей в интерактивном режиме, объемом 64 гигабайта (теоретический максимум; практический максимум несколько меньше). Подобным образом механизм безопасности данных системы DB2 значительно более тщательно разработан, чем в SQL/DS, отражая тог факт, что существует, вероятно, намного больше пользователей и намного больше категорий пользователей для установки DB2, чем для SQL/DS. Детальный разбор всех таких различий не является целью этой книги.

[5] В этой книге предложения SQL, команды и т. п. для ясности записываются прописными буквами. На практике же обычно более удобно вводить такие предложения и команды строчными буквами. Система DB2 допускает то и другое.

[6] В фирменных руководствах по системе термины «RUNTIME SUPERVISOR» или «STORED DATA MANAGER» не используются.

[7] Он оставляет также копию каждого такого предложения SQL в модифицированом исходном модуле в форме комментария.

[8] Точнее, план хранится в справочнике DB2, который в действительности является расширением каталога, предназначенным только для использования самой системой. С точки зрения пользователя разница между ними состоит в том, что каталог в отличие от справочника имеет форму, позволяющую делать к нему запросы с помощью обычных предложений SQL (см. главу 7).

[9] Кроме того, в качестве имен не могут использоваться ключевые слова языка SQL (CREATE, TABLE, SELECT и т. д.). Первая литера любого имени должна быть буквой (А—Z или одной из специальных литер ^, $, @), а остальные литеры — буквами, цифрами (0-9) или знаком подчеркивания. Имена таблиц и столбцов могут содержать максимум 18 литер, а имена пользователей—максимум 8 литер.

[10] Если n>254, то поле является и «длинным полем», и объектом строгих ограничений. Длинные поля предназначены для того, чтобы иметь дело с данными в свободном формате, такими, как длинные текстовые строки, а не с простыми форматизированными данными, например номер поставщика или объем поставки. По существу, единственной операцией, в которой могут в качестве операндов использоваться такие поля, является операция присваивания базе данных (INSERT или UPDATE) либо из базы данных (SELECT). He допускаются какие-либо операции, которые предполагают сравнение с длинным полем Поэтому, например, длинные поля не могут быть индексированными, на них нельзя ссылаться во фразах WHERE, GROUP BY или ORDER BY и т. п. Две последние фразы рассматриваются в главах 4 и 5.

[11] В связи с этим фактом можно сказать, что реляционные таблицы образуют замкнутую систему относительно операторов выборки данных языка, подобного SQL. Вообще говоря, замкнутая система—это совокупность (возможно, бесконечная) объектов некоторого типа, например OBJS, и соответствующая совокупность операторов, например OPS, таких, что а) операторы из OPS применяются ни к объектам из OBJS и б) результат применения любого такого оператора к любому такому объекту (любым таким объектам) является другим объектом из OBJS. Практический смысл этого соображения (в частности, для случая отношений) заключается в следующем. Поскольку результатом одной операции SELECT является другое отношение, то, по крайней мере, принципиально возможно применить другую операцию SELECT к этому результату, конечно, предусматривая, чтобы он был где-либо сохранен. Это означает, также, опять-таки принципиально, что операции SELECT могут быть вложенными друг в друга. Такая возможность иллюстрируется в разделах 5.2, 6.4 и 8.1.

[12] Все они имеют значение истинности «неизвестно». При наличии неопределенных значений необходимо принять трехзначную логику, значениями истинности в которой являются: истина, ложь и неизвестно. «Неизвестно» в действительности представляет собой, по сути дела, неопределенное значение истинности. Предложение SELECT осуществляет выборку записей, для которых предикат WHERE имеет значение истина, т. е. не ложь и не неизвестно.

[13] Подзапрос может включать также фразы GROUP BY и HAVING. Однако комбинация ORDER BY и UNION недопустима.

[14] Между прочим, этот пример иллюстрирует важный момент, заключающийся в том, что порядок кванторов существен в выражениях, содержащих кванторы обоих типов Выражение FORALLx(EXISTSy (y>x)) истинно. Однако выражение EXISTSy(FORALLx(yx))—«существует действительное у такое, что для всех действительных х справедливо у больше х», т.е. «существует некоторое число, большее всех других чисел», — которое получается из предыдущего выражения просто перестановкой порядка кванторов, является ложным.

[15] EXISTS (существует) также рассматривается как стандартная функция, но она отличается от функций, обсуждаемых в данном разделе, тем, что она возвращает значение истинности, а не арифметическое или строковое значение, т. е это не числовая функция.

[16] Этого результата («группы внутри групп» и т. д.) можно достигнуть, однако, с помощью QMF. См. главу 15.

[17] Каталог не является одинаковым в различных реализациях языка SQL, поскольку он по необходимости содержит для конкретной системы много информации, специфичной для этой системы. В частности, каталоги DB2 и SQL/DS различны.

[18] Не следует, конечно, понимать этот абзац таким образом, что имеется фактически единственное лицо, которое на все время является системным администратором, даже если это лицо, например, покидает компанию. Имеется, скорее, один неизменный идентификатор санкционирования, который рассматривается системой как идентифицирующий системного администратора. Каждый, кто может войти в систему с этим идентификатором (и может выдержать тесты на достоверность), будет считаться системным администратором, пока он или она не выйдет из системы. Эти тесты на достоверность могут и, конечно, должны время от времени изменяться.

[19] На самом деле, внутренняя структура этих наборов данных VSAM значительно отличается во всяком случае от структуры, которая предполагается для VSAM, поскольку управление всем их пространством осуществляется DB2, а не средствами VSAM (см главу 13). Таким образом, попытка понять их содержимое была бы нетривиальной задачей, даже если бы их можно было обработать с помощью обычных обращений к VSAM.

[20] Мы ограничимся при этом лишь обстановкой прикладного программировании. Предложения COMMIT и ROLLBACK могут быть введены и в интерактивном режиме, но делать это на практике не рекомендуется, как будет ясно позднее в этой главе, поскольку это обычно означает, что блокировки будут установлены на нежелательно долгое время.

[21] При определенных условиях, которые здесь детально не обсуждаются, эта блокировка будет сниматься в следующей точке синхронизации, а не при завершении программы. В частности, это будет происходить в случае, если предложение LOCK TABLE вводится через DB2I (что само по себе маловероятно).

[22] Сегментированное пространство может иметь несколько групп памяти для каждого сегмента (см. раздел 13.3).

[23] Интересно отметить, что пространство памяти в 64 гигабайта со страни-1|яМ11 по 4К эквивалентно приблизительно 128 токам, т. е. 32 устройствам пря-Мпго доступа IBM 3380.

[24] Установка системы всегда располагает факультативной возможностью вообще не использовать какую-либо группу памяти для заданного пространства или его сегмента. Если это так, то для определения, расширения и удаления наборов данных необходимым образом следует использовать утилиту обслуживания методов доступа VSAM. Подробное обсуждение этих вопросов выходит за рамки данной книги.

[25] Нельзя отрицать, что сегодня большинство систем, даже систем реляционного типа, тем не менее действительно проявляет весьма зависимое от ситуации и непредсказуемое поведение в некоторых областях. Для примера можно сослаться на обработку обновления представления в системе DB2, при которой действительно обнаруживается в некоторой степени неприятный произвол (см. раздел 8.4). Но такой произвол имеет тенденцию проявиться именно в тех вопросах, где реализация отклонилась от базовой теории. Так, важнейшим компонентом реляционной модели данных является понятие первичного ключа (см. Приложение А). Однако в системе DB2 такие ключи не поддерживаются, и это упущение является непосредственной причиной упоминаемого выше произвола. Конечно, система DB2—не единственный «правонарушитель» в этом отношении; подобная критика относится к большинству других систем, известных в момент написания этой книги, однако DB2 может служить для иллюстрации нежелательных последствий пренебрежения предписаниями модели, положенной в ее основу.

[26] Дополнительным доказательством такого признания может служить тот факт, что Ассоциация по вычислительной технике (The Association for computing Machinery—ACM) присудила Тьюринговскую премию за 1981 год доктору Кодду, первому архитектору реляционной модели, за его работы, посвященные этой модели. Тьюринговская премия присуждается ежегодно за важнейшие работы в области информатики. По всеобщему признанию, она является наиболее престижной наградой во всей информатике.

[27] Такая операция, как ALTER TABLE, в языке.SQL может рассматриваться не как изменение степени отношения с n на n +l, а, скорее, как создание нового отношения степени n +1 из отношения степени п.

[28] ' Под «соединением» здесь понимается либо естественное соединение, либо эквисоединение.

[29] Это предложение включает также комментарий и ключевое слово FIELDS. Ни то ни другое не является частью реального ЯОД системы DB2.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: