Дейт К. Д27 Руководство по реляционной субд db2/ Пер с англ и предисл. М. Р. Когаловского

Вид материалаРуководство
Предметный указатель
Подобный материал:
1   ...   26   27   28   29   30   31   32   33   34

ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ


B

B-дерево 196

А

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

Администратор базы данных 139, 189

Администратор системный 139

Администратор транзакций 166

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

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

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

Ассоциация 245

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

Атомарность операций 167

Атомарность транзакций 166

Атрибут 26

Б

База данных 189

База данных по умолчанию 198

База данных пользовательская 189

База данных реляционная 22

База данных системная 189

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

Безопасность представления 136

Блок условия 214

Блокирование 172

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

Блокировка совместная 173

В

Вариант CHECK 121

Вариант GRANT 141

Г

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

Генератор планов прикладных задач 36

Генерация кода 39

Граф ожидания 182

Группа памяти 191

Группа памяти по умолчанию 199

Группа повторяющаяся 25

Д

Данные скрытые 131

Домен 235

Е

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

Единица восстановления 169

Ж

Журнал 166

З

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

Зависимость функциональная 254

Запись хранимая 193

Значение неопределенное 46

Значение неопределенное в арифметическом выражении 57

Значение неопределенное в индексе с параметром UNIQUE 48

Значение неопределенное в предложении SELECT DISTINCT 63

Значение неопределенное в предложении UPDATE 101

Значение неопределенное в сравнениях 62

Значение неопределенное во встроенном языке 152

Значение неопределенное во фразе GROUP BY 88

Значение неопределенное во фразе ORDER BY 63

Значение неопределенное при проектировании базы данных 256

И

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

Идентификатор санкционирования доступа 135

Импликация 83

Имя 44

Имя представления 119

Имя уточненное 55

Индекс 141, 190, 191, 193

Индекс кластеризации 193

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

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

К

Каталог 40, 112

Квантор 79

Квантор общности FORALL 81

Квантор существования 79

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

Классификация сущностей 244

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

Кластеризация межтабличная 193

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

Ключ внешний 238

Ключ возможный 237

Команда BIND 204

Команда DISPLAY FORM 207

Команда DISPLAY REPORT 208

Команда DRAW COND 215

Команда FREE 204

Команда PRINT REPORT 208

Команда REBIND 204

Команда RUN QUERY 207

КомандаDRAW 213

Константы 46

Кортеж 235

Курсор 154

Курсор, стабильноcть его 178

М

Макетирование 227

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

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

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

Модуль языка программирования интерфейсный 38

Н

Навигация 31

Навигация автоматическая 225

Навигация ручная 225

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

Независимость данных логическая 226

Независимость данных физическая 41

Нормализация 244, 252

О

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

Область дескрипторов SQLDA 186

Область рабочая FORM 208

Область рабочая временная 207

Область связи SQLCA 186

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

Обновление данных незафиксированное 170

Обновление утраченное 170

Обозначение 245

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

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

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

Оператор сравнения ANY 73

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

Операция деления 241

Операция присваивания реляционная 241

Операция проекции 240

Операция разности 240

Операция соединения 241

Отношение 236

Отношение базовое 238

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

Отчет 207

П

Параметр UNIQUE 48

Параметр динамического SQL 185, 187

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

Переменная индикаторная 152

Переменная системная USER 137

План прикладной задачи 36, 39

Подзапрос 74

Подзапрос коррелированный 76

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

Поле SQLCODE 150

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

Предикат BETWEEN 59

Предикат IN 60

Предикат IN с подзапросами 74

Предикат LIKE 60

Предлжение DELETE CURRENT 156

Предложение INSERT встроенного языка 153

Предложение ALTER TABLE 47

Предложение CLOSE 154

Предложение COMMENT ON 115

Предложение COMMIT 158

Предложение CREATE INDEX 48

Предложение CREATE SYNONYM 116

Предложение CREATE TABLE 44, 47

Предложение CREATE VIEW 118

Предложение DECLARE CURSOR 154

Предложение DECLARE TABLE 149

Предложение DELETE 102

Предложение DELETE встроенного языка 153

Предложение DROP INDEX 49

Предложение DROP SYNONYM 116

Предложение DROP TABLE 47

Предложение DROP VIEW 121

Предложение EXECUTE 185

Предложение FETCH 154

Предложение GRANT 138

Предложение INCLUDE (декларация) 158

Предложение INCLUDE SQLCA 150

Предложение INCLUDE SQLDA 186

Предложение INSERT 103

Предложение LOCK TABLE 177

Предложение OPEN курсор 155

Предложение PREPARE 184

Предложение REVOKE 138

Предложение ROLLBACK 159

Предложение SELECT 55

Предложение SELECT вложенное 74

Предложение SELECT встроенного языка 151

Предложение SELECT единичное 151

Предложение SELECT обработка 92

Предложение SELECT* 57

Предложение UPDATE 101

Предложение UPDATE CURRENT 156

Предложение UPDATE встроенного языка 152

Предложение WHENEVER 158

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

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

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

Прекомпилятор 35

Привилегия 138

Привилегия BCTRL 143

Привилегия DBADM 143

Привилегия DBMAINT 143

Привилегия SYSADM 143

Привилегия SYSOPR 143

Привилегия административная 143

Привилегия требуемая пользователю 143

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

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

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

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

Проверка правильности плана 204

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

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

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

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

Пространство табличное 189

Пространство табличное по умолчанию 192

Пространство табличное простое 192

Пространство табличное сегментированное 193

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

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

Процедура редактирования 194

Процессор SPUFI 202

Псевдоним 68

ПсевдоЯОД 249

Пул буферный 199

Путь доступа 39

Р

Реорганизация 192

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

С

Свойство 244

Связь 244

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

Синоним 116

Система R* 233

Система SQL/DS 233

Система реляционная 242

Ситуация тупиковая 179

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

Спецификация DISTINCT 55

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

Средство программное DXT 22

Средство программное QMF 22

Степень отношения 237

Страница 189

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

Сущность 244

Сущность ассоциативная 244

Сущность стержневая 244

Сущность характеристическая 244

Т

Таблица 43

Таблица базовая 43

Таблица виртуальная 30

Таблица каталога 112

Таблица хранимая 189

Тип данных 45

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

Транзакция 165

У

Умолчание системное 191

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

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

Утилита 205

Ф

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

Фиксация двухфазная 168

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

Форма отчета по умолчанию 207

Фраза FOR UPDATE 155

Фраза GROUP BY 87

Фраза HAVING 88

Фраза NOT NULL 46

Фраза ORDER BY (определение курсора) 155

Фраза ORDER BY (предложение SELECT) 59

Фраза USING (предложения EXECUTE) 185

Фраза USING (предложение FETCH) 187

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

Функция стандартная COUNT (*) 85

Функция стандартная MIN 85

Функция стандартная SUM 85

Функция стандартная МАХ 85

Х

Характеристика 245

Ц

Целостность по ссылкам 102, 238

Целостность по сущностям 238

Ч

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

Чтение повторяемое 178

Э

Эквисоединение 64

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

Я

Язык QBE 213

Язык SQL встроенный 148

Язык SQL динамический 183

Язык SQL интерактивный 200

Язык SQL статический 188




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.