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

Вид материалаРуководство

Содержание


Предисловие к русскому изданию
М. Когаловский
Глава 1 обзор возможностей системы db2 введение
1.2. Варианты операционной обстановки системы db2
1.3. Программные продукты, связанные с db2
QMF (Query Management Facility)
DXT (Data Extract)
1.4. Db2: реляционная система
1.5. Язык sql
Ответы к некоторым упражнениям
Глава 2 структура системы 2.1. основные компоненты
Супервизор стадии исполнения
Программа управления хранимыми данными
2.2. Подробное обсуждение логики управления
Генерация кода
Глава 3 определение данных 3.1. введение
3.2. Базовые таблицы
Типы данных
Неопределенное значение
Ответы к некоторым упражнениям
...
Полное содержание
Подобный материал:
  1   2   3   4   5   6   7   8   9   ...   34

A Guide to DB2


A user's guide to the IBM product IBM Database 2 (a relational database management system for the MVS environment) and its companion products QMF and DXT


ADDISON-WESLEY PUBLISHING COMPANY

Reading, Massachusetts • Menlo Park, California • London •

Amsterdam • Don Mills, Ontario • Sydney

К. Дейт

РУКОВОДСТВО ПО РЕЛЯЦИОННОЙ СУБД DB2



Руководство для пользователей программного продукта «IBM Database 2» фирмы IBM (реляционной системы управления базами данных, функционирующей в обстановке операционной системы MVS) и сопутствующих программных продуктов QMF и DXT


ПЕРЕВОД С АНГЛИЙСКОГО М. Р. КОГАЛОВСКОГО




МОСКВА

«ФИНАНСЫ И СТАТИСТИКА»

1988

ББК 32.073

Д27


Дейт К.


Д27 Руководство по реляционной СУБД DB2/ Пер. с англ. и предисл. М. Р. Когаловского— М.: Финансы и статистика, 1988.— 320 с.: ил.

ISBN 5—279—00063—9

Книга американского специалиста в области реляционных баз дачных К. Дейта, автора популярной в СССР монографии «Введение в системы баз данных» (М : Наука, 1981), представляет собой руководство по перспективной СУБД фирмы ИБМ DB2. сочетающей возможности широко известной системы IMS/VS и реляционной СУЬД.

Для специалистов по программному обеспечению информационных систем и студентов вузов


ББК 32.973


ISBN 0-201—11317—1 (США)

ISBN 5—279—00063—9 (СССР)

© 1984 by Addison-Wesley Publishing Company, Inc. © Перевод на русский язык, предисловие, «Финансы и статистика», 1988

ОГЛАВЛЕНИЕ





ОГЛАВЛЕНИЕ 4

ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЮ 11

Предисловие 15

БЛАГОДАРНОСТИ 17

ГЛАВА 1 18

ОБЗОР ВОЗМОЖНОСТЕЙ СИСТЕМЫ DB2 18

1.1.ВВЕДЕНИЕ 18

1.2. ВАРИАНТЫ ОПЕРАЦИОННОЙ ОБСТАНОВКИ СИСТЕМЫ DB2 20

1.3. ПРОГРАММНЫЕ ПРОДУКТЫ, СВЯЗАННЫЕ С DB2 21

1.4. DB2: РЕЛЯЦИОННАЯ СИСТЕМА 22

1.5. ЯЗЫК SQL 26

1.6. РЕЗЮМЕ 31

УПРАЖНЕНИЯ 32

ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ 32

ГЛАВА 2 35

СТРУКТУРА СИСТЕМЫ 35

2.1. ОСНОВНЫЕ КОМПОНЕНТЫ 35

2.2. ПОДРОБНОЕ ОБСУЖДЕНИЕ ЛОГИКИ УПРАВЛЕНИЯ 37

УПРАЖНЕНИЯ 42

ГЛАВА 3 43

ОПРЕДЕЛЕНИЕ ДАННЫХ 43

3.1. ВВЕДЕНИЕ 43

3.2. БАЗОВЫЕ ТАБЛИЦЫ 43

Определение 43

3.3. ИНДЕКСЫ 48

3.4. ОБСУЖДЕНИЕ 49

УПРАЖНЕНИЯ 50

ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ 50

ГЛАВА 4 54

МАНИПУЛИРОВАНИЕ ДАННЫМИ I: 54

ОПЕРАЦИИ ВЫБОРКИ ДАННЫХ 54

4.1. ВВЕДЕНИЕ 54

4.2. ПРИМЕРЫ ЗАПРОСОВ 54

4.2.1. ПРОСТАЯ ВЫБОРКА 55

4.2.2. ВЫБОРКА С ИСКЛЮЧЕНИЕМ ДУБЛИКАТОВ 56

4.2.3. ВЫБОРКА ВЫЧИСЛЯЕМЫХ ЗНАЧЕНИЙ 56

4.2.4. ПРОСТАЯ ВЫБОРКА «SELECT*» 57

4.2.5. ОГРАНИЧЕННАЯ ВЫБОРКА 58

4.2.6. ВЫБОРКА С УПОРЯДОЧЕНИЕМ 58

4.2.7. ВЫБОРКА С ИСПОЛЬЗОВАНИЕМ BETWEEN (между) 59

4.2.8. ВЫБОРКА С ИСПОЛЬЗОВАНИЕМ IN (принадлежит) 60

4.2.9. ВЫБОРКА С ИСПОЛЬЗОВАНИЕМ ПРЕДИКАТА LIKE (похоже на) 60

4.2.10. ВЫБОРКА, ПРИ КОТОРОЙ ВОВЛЕКАЕТСЯ NULL (неопределенное значение) 61

4.3. ЗАПРОСЫ, ИСПОЛЬЗУЮЩИЕ СОЕДИНЕНИЕ 63

4.3.1. ПРОСТОЕ ЭКВИСОЕДИНЕНИЕ 63

4.3.2. СОЕДИНЕНИЕ ПО УСЛОВИЮ «БОЛЬШЕ ЧЕМ» 66

4.3.3. СОЕДИНЕНИЕ С ДОПОЛНИТЕЛЬНЫМ УСЛОВИЕМ 67

4.3.4. ВЫБОРКА СПЕЦИФИЦИРОВАННЫХ ИЗ СОЕДИНЕНИЯ 67

4.3.5. СОЕДИНЕНИЕ ТРЕХ ТАБЛИЦ 68

4.3.6. СОЕДИНЕНИЕ ТАБЛИЦЫ С НЕЙ САМОЙ 68

4.4. РЕЗЮМЕ 69

УПРАЖНЕНИЯ 70

ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ 71

ГЛАВА 5 73

МАНИПУЛИРОВАНИЕ ДАННЫМИ II: 73

ДАЛЬНЕЙШИЕ ОПЕРАЦИИ ВЫБОРКИ ДАННЫХ 73

5.1. ВВЕДЕНИЕ 73

5.2. ПОДЗАПРОСЫ 74

5.2.1. ПРОСТОЙ ПОДЗАПРОС 74

5.2.2. ПОДЗАПРОС С НЕСКОЛЬКИМИ УРОВНЯМИ ВЛОЖЕННОСТИ 75

5.2.3. КОРРЕЛИРОВАННЫЙ ПОДЗАПРОС 76

5.2.4. СЛУЧАЙ ИСПОЛЬЗОВАНИЯ ОДНОЙ И ТОЙ ЖЕ ТАБЛИЦЫ В ПОДЗАПРОСЕ И ВНЕШНЕМ ЗАПРОСЕ 77

5.2.5. СЛУЧАЙ, КОГДА В КОРРЕЛИРОВАННОМ И ВНЕШНЕМ ЗАПРОСЕ ИСПОЛЬЗУЕТСЯ ОДНА И ТА ЖЕ ТАБЛИЦА 78

5.2.6. ПОДЗАПРОС С ОПЕРАТОРОМ СРАВНЕНИЯ, ОТЛИЧНЫМ ОТ IN 78

5.3. КВАНТОР СУЩЕСТВОВАНИЯ 79

5.3.1. ЗАПРОС, ИСПОЛЬЗУЮЩИЙ EXISTS 79

5.3.2. ЗАПРОС, ИСПОЛЬЗУЮЩИЙ NOT EXISTS 80

5.3.3. ЗАПРОС, ИСПОЛЬЗУЮЩИЙ NOT EXISTS 81

5.3.4. ЗАПРОС, ИСПОЛЬЗУЮЩИЙ NOT EXISTS 82

5.3.5. ЗАПРОС, В КОТОРОМ ИСПОЛЬЗУЕТСЯ ИМПЛИКАЦИЯ 83

5.4. СТАНДАРТНЫЕ ФУНКЦИИ 85

5.4.1. ФУНКЦИЯ ВО ФРАЗЕ SELECT 86

5.4.2. ФУНКЦИЯ ВО ФРАЗЕ SELECT СО СПЕЦИФИКАЦИЕЙ DISTINCT 86

5.4.3. ФУНКЦИЯ ВО ФРАЗЕ SELECT С ПРЕДИКАТОМ 86

5.4.4. ФУНКЦИЯ ВО ФРАЗЕ SELECT С ПРЕДИКАТОМ 86

5.4.5. ФУНКЦИЯ В ПОДЗАПРОСЕ 86

5.4.6. ФУНКЦИЯ В КОРРЕЛИРОВАННОМ ПОДЗАПРОСЕ 87

5.4.7. ИСПОЛЬЗОВАНИЕ ФРАЗЫ GROUP BY 87

5.4.8. ИСПОЛЬЗОВАНИЕ ФРАЗЫ WHERE с GROUP BY 88

5.4.9. ИСПОЛЬЗОВАНИЕ HAVING 88

5.5. ОБЪЕДИНЕНИЕ 90

5.5.1. ЗАПРОС, ТРЕБУЮЩИЙ ИСПОЛЬЗОВАНИЯ UNION 90

5.6. ЗАКЛЮЧЕНИЕ 92

5.6.1. МНОГОАСПЕКТНЫЙ ПРИМЕР 92

УПРАЖНЕНИЯ 93

ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ 96

ГЛАВА 6 101

МАНИПУЛИРОВАНИЕ ДАННЫМИ III: 101

ОПЕРАЦИИ ОБНОВЛЕНИЯ 101

6.1. ВВЕДЕНИЕ 101

6.2. ПРЕДЛОЖЕНИЕ UPDATE 101

6.2.1. ОБНОВЛЕНИЕ ЕДИНСТВЕННОЙ ЗАПИСИ 101

6.2.2. ОБНОВЛЕНИЕ МНОЖЕСТВА ЗАПИСЕЙ 102

6.2.3. ОБНОВЛЕНИЕ С ПОДЗАПРОСОМ 102

6.2.4. ОБНОВЛЕНИЕ НЕСКОЛЬКИХ ТАБЛИЦ 102

6.3. ПРЕДЛОЖЕНИЕ DELETE 102

6.3.1. УДАЛЕНИЕ ЕДИНСТВЕННОЙ ЗАПИСИ 102

6.3.2. УДАЛЕНИЕ МНОЖЕСТВА ЗАПИСЕЙ 103

6.3.3. УДАЛЕНИЕ МНОЖЕСТВА ЗАПИСЕЙ 103

6.3.4. УДАЛЕНИЕ С ПОДЗАПРОСОМ 103

6.4. ПРЕДЛОЖЕНИЕ INSERT 103

6.4.1. ВСТАВКА ЕДИНСТВЕННОЙ ЗАПИСИ 103

6.4.2. ВСТАВКА ЕДИНСТВЕННОЙ ЗАПИСИ С ОПУЩЕННЫМИ ИМЕНАМИ ПОЛЕЙ 104

6.4.3. ВСТАВКА ЕДИНСТВЕННОЙ ЗАПИСИ 104

6.4.4. ВСТАВКА МНОЖЕСТВА ЗАПИСЕЙ 104

6.4.5. ИСПОЛЬЗОВАНИЕ INSERT... SELECT ДЛЯ ПОСТРОЕНИЯ ВНЕШНЕГО СОЕДИНЕНИЯ 105

6.5. ЗАКЛЮЧЕНИЕ 106

УПРАЖНЕНИЯ 107

ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ 108

ГЛАВА 7 112

КАТАЛОГ 112

7.1. ВВЕДЕНИЕ 112

7.2. ЗАПРОСЫ ПО КАТАЛОГУ 113

7.3. ОБНОВЛЕНИЕ КАТАЛОГА 114

7.4. СИНОНИМЫ 116

УПРАЖНЕНИЯ 116

ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ 117

ГЛАВА 8 118

ПРЕДСТАВЛЕНИЯ 118

8.1. ВВЕДЕНИЕ 118

8.2. ОПРЕДЕЛЕНИЕ ПРЕДСТАВЛЕНИЯ 119

8.3. ОПЕРАЦИИ ВЫБОРКИ 121

8.4. ОПЕРАЦИИ ОБНОВЛЕНИЯ 122

8.5. ЛОГИЧЕСКАЯ НЕЗАВИСИМОСТЬ ДАННЫХ 129

8.6. ПРЕИМУЩЕСТВА ПРЕДСТАВЛЕНИЙ 131

УПРАЖНЕНИЯ 131

ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ 133

ГЛАВА 9 135

БЕЗОПАСНОСТЬ И САНКЦИОНИРОВАНИЕ ДОСТУПА 135

9.1. ВВЕДЕНИЕ 135

9.2. ИДЕНТИФИКАЦИЯ ПОЛЬЗОВАТЕЛЕЙ 136

9.3. ПРЕДСТАВЛЕНИЯ И БЕЗОПАСНОСТЬ 136

9.4. ПРЕДЛОЖЕНИЯ GRANT И REVOKE 138

9.5. ЗАКЛЮЧЕНИЕ 143

упражнения 144

ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ 145

ГЛАВА 10 148

ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ I: 148

ВСТРОЕННЫЙ ЯЗЫК SQL 148

10.1. ВВЕДЕНИЕ 148

10.2. ПРЕДВАРИТЕЛЬНЫЕ ЗАМЕЧАНИЯ 148

10.3. ОПЕРАЦИИ, НЕ ТРЕБУЮЩИЕ ИСПОЛЬЗОВАНИЯ КУРСОРОВ 151

10.3.1. ЕДИНИЧНОЕ SELECT 151

10.3.2. ПРЕДЛОЖЕНИЕ UPDATE 152

10.3.3. ПРЕДЛОЖЕНИЕ DELETE 153

10.3.4. ПРЕДЛОЖЕНИЕ INSERT 153

10.4. ОПЕРАЦИИ, ТРЕБУЮЩИЕ ИСПОЛЬЗОВАНИЯ КУРСОРОВ 154

10.5. ИСЧЕРПЫВАЮЩИЙ ПРИМЕР 156

УПРАЖНЕНИЯ 160

ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ 160

ГЛАВА 11 165

ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ II: 165

ОБРАБОТКА ТРАНЗАКЦИЙ 165

11.1. ВВЕДЕНИЕ 165

11.2. ЧТО ТАКОЕ ТРАНЗАКЦИЯ 165

11.3. ПРЕДЛОЖЕНИЯ COMMIT И ROLLBACK 167

11.4. ТРИ ПРОБЛЕМЫ, СВЯЗАННЫЕ С ПАРАЛЛЕЛИЗМОМ 169

11.5. КАК СИСТЕМА DB2 РЕШАЕТ ЭТИ ТРИ ПРОБЛЕМЫ ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ 172

11.6. ВОЗМОЖНОСТИ ЯВНОГО БЛОКИРОВАНИЯ 177

11.7. ТУПИКОВАЯ СИТУАЦИЯ 179

11.8. РЕЗЮМЕ 180

УПРАЖНЕНИЯ 181

ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ 182

ГЛАВА 12 183

ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ III: 183

ДИНАМИЧЕСКИЙ SQL 183

12.1. ВВЕДЕНИЕ 183

12.2. ОБРАБОТКА ПРЕДЛОЖЕНИИ, ОТЛИЧНЫХ ОТ SELECT 184

12.3. ОБРАБОТКА ПРЕДЛОЖЕНИЙ SELECT 185

12.4. ЗАКЛЮЧЕНИЕ 188

ГЛАВА 13 189

СТРУКТУРА ХРАНЕНИЯ ДАННЫХ 189

13.1. ВВЕДЕНИЕ 189

13.2. БАЗЫ ДАННЫХ 191

13.3. ТАБЛИЧНЫЕ ПРОСТРАНСТВА 192

13.4. ХРАНИМЫЕ ТАБЛИЦЫ 193

13.5. ИНДЕКСНЫЕ ПРОСТРАНСТВА 195

13.6. ИНДЕКСЫ 196

13.7. ГРУППЫ ПАМЯТИ 197

13.8. ЗАКЛЮЧИТЕЛЬНЫЕ ЗАМЕЧАНИЯ 198

ГЛАВА 14 200

ИНТЕРАКТИВНЫЙ ИНТЕРФЕЙС DB2I СИСТЕМЫ DB2 200

14.1. ВВЕДЕНИЕ 200

14.2. МЕНЮ SPUFI 202

14.3. МЕНЮ DCLGEN 203

14.4. МЕНЮ BIND/REBIND/FREE 204

14.5. МЕНЮ ПОДГОТОВКИ ПРОГРАММ 204

14.6. МЕНЮ RUN 204

14.7. КОМАНДЫ ОПЕРАТОРА 205

14.8. УТИЛИТЫ 205

14.9. КАК ОБОЙТИСЬ БЕЗ DB2I 205

ГЛАВА 15 206

СРЕДСТВО ОБРАБОТКИ ЗАПРОСОВ QMF 206

15.1. ВВЕДЕНИЕ 206

15.2. ГЕНЕРАЦИЯ ОТЧЕТОВ 207

15.3. ЯЗЫК QUERY-BY-EXAMPLE 213

15.3.1. ВЫБОРКА С УПОРЯДОЧЕНИЕМ 214

15.3.2. ВЫБОРКА, ТРЕБУЮЩАЯ ИСПОЛЬЗОВАНИЯ СВЯЗКИ OR 214

15.3.3. ВЫБОРКА ПО МНОЖЕСТВУ УСЛОВИЙ, ЗАДАННЫХ ДЛЯ ОДНОГО И ТОГО ЖЕ СТОЛБЦА И ОБЪЕДИНЕННЫХ СВЯЗКОЙ AND 215

15.3.4. ВЫБОРКА ВЫЧИСЛЯЕМЫХ ЗНАЧЕНИЙ И КОНСТАНТ 216

15.3.5. ВЫБОРКА (специфицированных полей из) СОЕДИНЕНИЯ 216

15.3.6. СОЕДИНЕНИЕ ТАБЛИЦЫ С НЕЙ САМОЙ 216

15.3.7. ВЫБОРКА С ИСПОЛЬЗОВАНИЕМ КВАНТОРОВ СУЩЕСТВОВАНИЯ 216

15.3.8. ВЫБОРКА С ИСПОЛЬЗОВАНИЕМ СОЕДИНЕНИЯ 217

15.3.9. ОБНОВЛЕНИЕ ОДНОЙ ЗАПИСИ 217

15.3.10. ОБНОВЛЕНИЕ МНОЖЕСТВА ЗАПИСЕЙ 217

15.3.11. УДАЛЕНИЕ МНОЖЕСТВА ЗАПИСЕЙ 217

15.3.12. ВСТАВКА ОДНОЙ ЗАПИСИ 217

15.4. СРЕДСТВО DATA EXTRACT (DXT) 218

УПРАЖНЕНИЯ 219

ОТВЕТЫ К НЕКОТОРЫМ УПРАЖНЕНИЯМ 219

ГЛАВА 16 222

КРАТКИЕ ИТОГИ И ВЫВОДЫ 222

16.1. ВВЕДЕНИЕ 222

16.2. ПРЕИМУЩЕСТВА РЕЛЯЦИОННЫХ СИСТЕМ 223

16.3. ПРОИЗВОДИТЕЛЬНОСТЬ 228

16.4. БУДУЩИЕ РАЗРАБОТКИ 232

ПРИЛОЖЕНИЕ А 235

РЕЛЯЦИОННАЯ МОДЕЛЬ 235

A.1. ВВЕДЕНИЕ 235

А.2. РЕЛЯЦИОННАЯ СТРУКТУРА ДАННЫХ 235

А.З. ЦЕЛОСТНОСТЬ РЕЛЯЦИОННЫХ ДАННЫХ 237

А.4. МАНИПУЛИРОВАНИЕ РЕЛЯЦИОННЫМИ ДАННЫМИ 238

А.5. РЕЛЯЦИОННЫЕ СИСТЕМЫ 242

ПРИЛОЖЕНИЕ B 244

ПРОЕКТИРОВАНИЕ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ 244

B.1. ВВЕДЕНИЕ 244

В.2. СХЕМА КЛАССИФИКАЦИИ СУЩНОСТЕЙ 244

В.З. ПЕРВИЧНЫЕ И ВНЕШНИЕ КЛЮЧИ 246

В.4. ПРОЦЕДУРА ПРОЕКТИРОВАНИЯ: ПОСЛЕДОВАТЕЛЬНОСТЬ ОСНОВНЫХ ШАГОВ 248

В.5. РЕГИСТРАЦИЯ ПРОЕКТНЫХ РЕШЕНИЙ: ПСЕВДОЯОД 249

В.6. РЕЦЕПТ, КАСАЮЩИЙСЯ ПЕРВИЧНЫХ КЛЮЧЕЙ 251

В.7. РЕЦЕПТ, КАСАЮЩИЙСЯ ВНЕШНИХ КЛЮЧЕЙ 251

В.8. НОРМАЛИЗАЦИЯ 252

В.9. РАЗЛИЧНЫЕ СОВЕТЫ И РЕКОМЕНДАЦИИ 255

ПРИЛОЖЕНИЕ С 259

СИНТАКСИС ОПЕРАЦИЙ МАНИПУЛИРОВАНИЯ ДАННЫМИ ЯЗЫКА SQL 259

C.1. ВВЕДЕНИЕ 259

С.2. ИМЕНА 259

С.З. СКАЛЯРНЫЕ ВЫРАЖЕНИЯ 259

С.4. ВЫРАЖЕНИЯ СЕЛЕКЦИИ 260

С.5. ПРЕДИКАТЫ 260

С.6. ПРЕДЛОЖЕНИЯ МАНИПУЛИРОВАНИЯ ДАННЫМИ 261

ПРИЛОЖЕНИЕ D 262

ТРЕБОВАНИЯ СИСТЕМЫ К ОБОРУДОВАНИЮ И ОПЕРАЦИОННОЙ ОБСТАНОВКЕ 262

D.1. ТРЕБОВАНИЯ DB2 262

D.2. ТРЕБОВАНИЯ QMF 263

D.3. ТРЕБОВАНИЯ DXT 263

БИБЛИОГРАФИЯ 263

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



ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЮ



Предлагаемая монография принадлежит перу известного специалиста в области баз данных, одного из пионеров технологии реляционных баз данных— К. Дейта.

Эта работа посвящена детальному обсуждению нового программного продукта, созданного крупнейшим в мире производителем средств вычислительной техники и программного обеспечения—американской фирмой International Business Machines Corporation (IBM), в которой автор сотрудничал в течение многих лет. Речь идет о реляционной СУБД DB2, поставляемой фирмой с 1983 года. Появление на рынке программного обеспечения такого крупного программного продукта — весьма значительное событие. В немалой степени это связано и с тем, что он относится к такой сложной и перспективной области, как реляционные базы данных.

Прежде чем предоставить читателю возможность начать знакомство с системой, целесообразно кратко охарактеризовать предысторию ее создания. Это поможет лучше осознать проблемы, связанные с разработкой систем такого класса, объективно оценить научно-технический уровень системы DB2, понять, почему именно фирма IBM смогла создать такой сложный программный продукт.

Подход, основанный на реляционной модели данных, занял важное место в развитии технологии баз данных. Нет необходимости подробно обсуждать здесь его достоинства, как, впрочем, и трудности, связанные с его реализацией и использованием — они достаточно хорошо известны. Системами реляционного типа оснащены сегодня многие серийно выпускаемые модели ЭВМ, от мощных вычислительных комплексов до персональных компьютеров. Реляционный инструментарий предполагается использовать в качестве основного средства управления базами данных и базами знаний в разрабатываемых проектах ЭВМ нового поколения.

Значительный вклад в разработку теории реляционных баз данных и создание СУБД этого класса внесла фирма IBM. Еще в конце 60-х годов в ряде ее научных центров начали активно проводить теоретические исследования и экспериментальные разработки новых нетрадиционных подходов к управлению данными, базирующихся на строгом математическом понятии отношения. Необходимо было при этом решить целый ряд задач — определить целесообразную архитектуру СУБД нового типа, разработать новую модель данных, адекватные ей методы доступа и технологию обработки запросов, создать языковые средства, ориентированные на теоретико-множественный характер структур данных и операций над ними, предложить пути реализации программных систем такого типа, обеспечивающие достаточно высокую их производительность, создать прототипы будущих коммерческих СУБД, обладающих указанными возможностями, и экспериментально оценить их характеристики на ЭВМ.

Разработки, связанные с системами нового типа, получившими название «реляционных», проводились и многими другими группами специалистов. Однако именно результаты, полученные в этой области сотрудниками IBM, оказали определяющее влияние на формирование новой ветви в технологии баз данных.

В этой связи следует назвать прежде всего новаторские работы Э. Кодда, посвященные реляционной модели данных и ее математическим основам: исследования в области реляционной алгебры и реляционного исчисления, разработка алгоритма редукции (интерпретации выражений реляционного исчисления в реляционной алгебре), создание одного из первых реляционных языков, формулировка концепции реляционной полноты языка, разработка основ теории нормализации отношений. До сих пор повсеместно цитируется известная статья Кодда, опубликованная еще в 1970 году в журнале Communications of the ACM. Не здесь ли был впервые введен термин «реляционная модель данных»? Позднее, в 1979 году, Кодд опубликовал фундаментальную работу, в которой систематизируются и обобщаются результаты исследований ряда авторов, направленных на повышение семантического уровня моделей данных. В работе Кодда предлагается ввести в базовую реляционную модель новые механизмы, обеспечивающие более развитые возможности для формулировки ограничений целостности, или, иначе говоря, для выражения семантики предметной области. Тем самым были преодолены значительные трудности, связанные с использованием реляционной модели данных. Расширенная таким образом модель была названа автором RM/T.

Исследования Кодда в области реляционных баз данных получили широкое признание. В 1981 г. он был удостоен весьма престижной Тьюринговской премии, присуждаемой Ассоциацией по вычислительной технике США (ACM) за выдающийся вклад в развитие информатики.

Заслуживает внимания другой весьма интересный комплекс исследований, выполненный М. Сенко и руководимой им группой. Был предложен и конструктивно, вплоть до языковых спецификаций, проработан оригинальный подход к построению СУБД, в котором используется частный случай реляционной модели данных—модель бинарных отношений. Основная цель этого подхода, получившего название Data Independent Access Method (DIAM),—развитие концепций многоуровневой архитектуры СУБД, обеспечивающих высокую степень независимости данных. В публикациях группы Сенко, а впоследствии в большой серии принадлежащих ему лично статей и Докладов детально специфицированы все уровни архитектуры СУБД, реализующей предлагаемый подход. В частности, рассмотрены специальные методы доступа, организация среды хранения и способы представления хранимых данных, сформулированы ключевые идеи модели бинарных отношений и предложен синтаксис пользовательского языка FORAL (для версии DIAM II). Идеи СУБД с многоуровневой архитектурой были высказаны в этих работах за несколько лет до публикации известного отчета ANSI/SPARC (1975 г.), на который обычно ссылаются по этому поводу. В рамках DIAM специально изучались также возможности использования дисплея со световым пером для оперирования графическим представлением схемы базы данных. Эту работу можно рассматривать как одну из ранних попыток создания инструментария автоматизированного проектирования баз данных. К сожалению, подход DIAM не был практически реализован в какой-либо коммерческой системе. Весьма вероятно, что причиной этому явилась скоропостижная кончина М. Сенко.

Особое внимание в исследованиях IBM уделялось разработке языковых средств реляционных систем баз данных. Важное место при этом отводилось изучению психологических аспектов применения таких языков, с тем чтобы минимизировать потенциальную возможность пользовательских ошибок.

Наиболее заметными в этом направлении являются работы Д. Чемберлина, Р. Бойса и их соавторов по созданию реляционного языка, упоминаемого в литературе как SEQUEL или SQL (в процессе эволюции языка было создано несколько его версий). Благодаря большой популярности и тщательности отработки SEQUEL приобрел статус стандарта де-факто. Его описание можно найти в каждой более или менее серьезной монографии или учебном пособии по реляционным базам данных. И не случайно Комитет по разработке стандартов в области баз данных Американского национального института стандартов принял SEQUEL в качестве отправной точки в своей деятельности по созданию стандарта реляционного языка.

Наряду с SEQUEL следует указать здесь и другое направление работ IBM в области реляционных языков, связанное с именем М. Злуфа. Цель заключалась в создании более «дружественного» по сравнению с SEQUEL реляционного интерфейса, которым можно было бы воспользоваться, не обладая специальной профессиональной подготовкой в области баз данных. Исследования Злуфа увенчались созданием получившего широкую известность языка Query-By-Example (QBE). В отличие от SEQUEL, близкого по стилю к языкам программирования, QBE является «графически-ориентированным» языком и предназначен специально для интерактивной работы. Пользователь оперирует на экране дисплея формами таблиц, составляющих базу данных, и продуцируемых из них таблиц. Для спецификации запроса задаются образцы заполнения строк этих таблиц, ограничения, которым удовлетворяют их элементы, и требуемые операции над строками таблиц. В более сложных случаях применяются также другие средства языка. Интерфейс QBE поддерживается в ряде программных продуктов. Об одном из них идет речь в этой книге.

Нужно сказать, наконец, о разработках, направленных на создание собственно программного инструментария для реляционных баз данных, в основу которых были положены рассмотренные теоретические исследования. Понимая все трудности, связанные с созданием эффективной реляционной СУБД на существующем оборудовании, фирма не спешила с созданием коммерческого продукта, предназначенного для массового применения. Чтобы не дискредитировать идею с самого начала, нужна была известная осторожность.

Первым «пробным шаром» фирмы в этой области, вызвавшим большой интерес, явилась экспериментальная реляционная СУБД System R, в которой реализован язык SEQUEL. Работы над системой проводились в 1975—1979 гг. и дали возможность определить рациональные пути реализации систем подобного типа.

Развитие System R осуществлялось в двух направлениях. Одно из них — создание системы управления распределенными базами данных. Результатом этих работ стала система R*, которой посвящены многочисленные публикации. Другое направление — создание на основе System R коммерческой реляционной СУБД. Эта задача была решена к 1981 г., когда фирма начала поставку своего первого коммерческого реляционного продукта — системы SQL/DS. Спустя два года был сделан еще один шаг в этом направлении — IBM начала поставлять новую систему DB2, которой и посвящена предлагаемая монография К. Дейта.

Можно без преувеличения сказать, что система DB2 интегрирует весь арсенал современных достижений в технологии реляционных баз данных. Как видно из сказанного, ее разработке предшествовала многолетняя подготовительная работа — проведение разносторонних научных исследований, создание экспериментальных реализации и прототипов будущих программных продуктов, изучение их характеристик.

При создании системы DB2 особое внимание уделялось проблеме повышения ее производительности. В частности, DB2 реализована с этой целью по принципу компиляции запросов, тогда как в большинстве других существующих систем осуществляется их интерпретация. Связанное с этим решением определенное отступление в отношении независимости данных компенсируется в некоторой степени за счет принятия специальных мер. Тщательно продумана организация среды хранения данных, предусмотрен ряд механизмов, служащих для оптимизации обработки запросов, на самом современном уровне решены вопросы управления параллельным исполнением транзакций.

В качестве пользовательского языка в системе реализована новая версия все того же SEQUEL (называемого здесь SQL). На его основе строится как интерфейс включающего языка для прикладных программ («встроенный SQL»), так и интерактивный интерфейс для пользователя. Особый интерес представляет «динамический SQL»—интерфейс, позволяющий обрабатывать системными средствами запросы (SQL-тексты), задаваемые в прикладной программе как значения переменных типа литерной строки. Это позволяет легко создавать на основе DB2 различные интерактивные прикладные системы, причем отображение пользовательского языка в SQL осуществляется прикладной программой с помощью «динамического SQL».

Для системы DB2 предусмотрены различные варианты операционной обстановки, и пользователь может выбрать для себя наиболее подходящий. Совместно с системой могут использоваться такие полезные программные продукты, как QMF и DXT. QMF — это генератор отчетов, функционирующий по отношению к DB2 как периферийный компонент. Он позволяет специфицировать запросы не только на языке SQL, но и на QBE. В свою очередь, DXT дает возможность обрабатывать с помощью DB2 данные, хранимые в базах данных системы IMS или в наборах данных VSAM.

Совместимость системы DB2 и DXT имеет важное значение для расширения сферы ее потенциального применения. Благодаря этому новой системе открываются двери в те области, которые уже «обжиты» другой СУБД, созданной фирмой IBM,— системой IMS. За два десятилетия, прошедшие с момента начала ее поставки, система IMS получила массовое распространение — сфера ее действия стала весьма широкой. Поэтому забота о совместимости DB2 и DXT не лишена оснований.

На этом можно завершить обзор разработок фирмы IBM в области реляционных баз данных, поскольку читатель уже получил достаточно полное представление о предыстории создания системы DB2, и пора сказать несколько слов о самой книге.

Она представляет собой профессионально написанное руководство по системе DB2. В ней содержатся необходимые сведения об операционной обстановке системы, ее организации и архитектуре, принципах функционирования, порядке взаимодействия с программными продуктами QMF и DXT. Центральное место отводится детальному обсуждению функций языка SQL и особенностей его использования для всех предусмотренных пользовательских интерфейсов. В заключительной главе сжато характеризуются общие возможности системы DB2, рассматривается проблема производительности реляционных систем вообще и применительно к DB2, намечаются перспективы развития функциональных возможностей этой системы.

Читателю будет полезен и материал приложений. Здесь приведены строгие определения основных понятий реляционной модели данных, излагается точка зрения на вопрос о том, какая система имеет право называться «реляционной», рассматриваются важные методологические аспекты логического проектирования баз данных. Приводятся также требования системы DB2 и сопутствующих ей программных продуктов к операционной обстановке и оборудованию ЭВМ. Для справочных целей включена сводка синтаксических спецификаций предложений манипулирования данными языка SQL.

Новая работа К. Дейта не только будет интересна специалистам по программному обеспечению информационных систем, но и с успехом может быть использована как учебное пособие по реляционным СУБД. Для этого в книге при всей ее лаконичности имеется все необходимое — от концепций реляционной модели данных и методологии проектирования реляционных баз данных до систематического рассмотрения архитектуры, пользовательских интерфейсов и технологии функционирования самой современной СУБД такого класса, от теоретического материала до технических спецификаций и проверенных на ЭВМ многочисленных практических упражнений и ответов к ним. Книга хорошо скомпонована, написана четким и ясным языком. Умело подобран иллюстративный материал.

В заключение коротко об авторе. С начала 70-х годов К. Дейт занимается реляционными базами данных и стал одним из ведущих специалистов в этой области. В течение многих лет он тесно сотрудничал с Э. Коддом, которому в знак признательности он посвящает эту книгу. К. Дейт — один из руководителей и непосредственный участник разработки системы DB2. Знание системы «изнутри» помогло объективно показать не только ее достоинства, но и слабые места.

Можно не сомневаться в том, что советский читатель получил полезную и нужную книгу.

М. Когаловский

Предисловие



Предмет обсуждения этой книги, система DB2, представляет собой программный продукт фирмы IBM, функционирующий в обстановке операционной системы MVS, а точнее — реляционную систему управления базами данных для MVS. Это означает, что рассматриваемый программный продукт позволяет пользователю (как конечному пользователю, так и прикладному программисту) в такой операционной обстановке запоминать данные в базах данных и осуществлять их выборку, воспринимая при этом базу данных как совокупность отношений или таблиц. DB2 обеспечивает доступ к таким базам данных посредством реляционного языка, называемого SQL («Structured Query Language» — Структуризованный язык запросов).

Вряд ли можно сказать, что название «DB2» вносит какую-либо ясность — оно мало что говорит о природе этого программного продукта. Ненамного лучше и полное его название — «IBM Database 2» («База данных 2 фирмы IBM»). В частности, из него, не ясно, что речь идет о реляционном программном продукте, или что он поддерживает язык SQL, или, наконец, что он функционирует в обстановке MVS. Более того, такое название даже и не совсем корректно, поскольку это вовсе не база данных, а система управления базами данных. Столь неблагоприятное начало не может, однако, затушевать того факта, что DB2 является исключительно важным продуктом. Его объявление в июне 1983 г. было значительным событием: оно окончательно наложило печать одобрения IBM на то, что стало называться реляционным подходом к. управлению базами данных. Этот подход, впервые предложенный в 1969—70-х годах Э. Ф. Коддом из Научно-исследовательской лаборатории фирмы IBM в Сан-Хосе, с тех пор медленно, но уверенно получал признание в самой фирме IBM и вне ее. DB2 занимает в настоящее время ведущее место среди основных программных продуктов IBM. Все они—реляционные, поддерживают язык SQL и функционируют в обстановке одной из главных операционных систем IBM: DB2 — в обстановке MVS, SQL/DS — DOS/VSE и SQL/DS Release 2 — VM/CMS.

Как только что упоминалось, реляционный подход был впервые предложен в 1969—70-х годах. Язык SQL был разработан в 1974 году, а основная реализация — прототип этого языка под названием System R — была создана и исследована IBM в течение приблизительно пятилетнего периода — в 1975—79 годах. Разработанная в рамках этого прототипа технология была далее использована в SQL/DS", первое полностью поддерживаемом реляционном программном продукте IBM, объявленном для DOS/ VSE в 1981 году, а для VM/CMS — в 1983 году. Впоследствии. она была использована и в DB2, объявленной для MVS в 1983 году. Все эти продукты — System R, SQL/DS и DB2 — внешне очень похожи. В частности, во всех трех системах очень похож язык SQL. Поэтому, несмотря на то что данная книга посвящена системе DB2, большинство сказанного в ней относится с небольшими изменениями также к System R и SQL/DS. Однако, начиная с этого места и далее, ссылка на «язык SQL», если не оговаривается иное, должна относиться специально к диалекту этого языка, поддерживаемому DB2.

Основная задача этой книги—дать подробное описание продукта DB2, не лишенное, однако, некоторых критических замечаний: что он собой представляет и чего не представляет, для чего он предназначен и как он может быть использован. Книга ориентирована на специалистов по управлению обработкой данных, по организации работы конечных пользователей, на специалистов в области баз данных, в том числе администраторов баз данных, системных администраторов, проектировщиков баз данных и прикладных программистов, работающих в обстановке баз данных. Она рассчитана также на студентов, специализирующихся в области обработки данных, на преподавателей этих дисциплин, на конечных пользователей и профессиональных специалистов по обработке данных, желающих расширить свои знания в области баз данных путем изучения системы, воплощающей современный уровень развития технологии баз данных. На протяжении всей книги при этом основное внимание уделяется пользователю, где под «пользователем» мы понимаем, главным образом, конечного пользователя либо прикладного программиста. Дается достаточно основательная интерпретация материала, ориентированного на пользователя, например материала, связанного с языком SQL. Наоборот, подробности, представляющие интерес только для системных программистов или операторов, связанные, например, с системными командами, вообще опущены или, в лучшем случае, обсуждаются только в общих чертах. Предполагается, что читатели имеют по крайней мере некоторое представление об общей структуре, концепциях и назначении систем баз данных. Однако от них не требуется, по существу, каких-либо знаний в области реляционных систем.

Книга имеет следующую структуру. В главах 1 и 2 приводится обзор возможностей системы DB2, показывающий, каким образом она соотносится с ее обстановкой и, в общих чертах, как она функционирует. Глава 3 посвящена определению данных, а главы 4—6 — манипулированию данными. В главе 7 обсуждается системный каталог. В главе 8 описываются специальные реляционные возможности, называемые механизмом представлений. В главе 9 обсуждается подсистема безопасности данных DB2, в частности показывается, как представления, о которых идет речь в предыдущей главе, могут использоваться для обеспечения безопасности. Главы 10—12 имеют дело с прикладным программированием. Наряду с другими вопросами в них обсуждается использование языка SQL для написания прикладных программ, довольно подробно освещаются вопросы обработки транзакций, в том числе соображения, касающиеся восстановления целостности данных и параллелизма. В главе 13 рассматриваются структуры хранения данных системы DB2. В главе 14 описывается интерактивный интерфейс DB2I, а в главе 15—периферийный программный продукт QMF (Query Management Facility), позволяющий запрашивать данные из базы данных и генерировать отчеты. Наконец, в главе 16 подытоживаются достоинства системы типа DB2, обсуждаются некоторые соображения о производительности, высказываются предположения о будущем реляционных систем. В книге содержится значительное число проверенных на ЭВМ примеров и в большинстве глав — множество упражнений вместе с ответами к ним.

В книгу включено также несколько приложений, одно из которых посвящено вопросу о том, что такое реляционная система. В другом, довольно длинном, приложении дается практический подход к проблеме проектирования реляционных баз данных.

Некоторым читателям известно, что мною уже опубликовано несколько других книг по технологии баз данных:

1. An Introduction to Database Systems: Volume I, Third Edition. Addison-Wesley, 1981 (далее упоминается как «Том I»). Есть русский перевод второго издания: Введение в системы баз данных.—М.: Наука, 1980.

2. An Introduction to Database Systems: Volume IL Addison-Wesley, 1983 (далее упоминается как «Том II»).

3. Database: A Primer. Addison-Wesley, 1983 (далее упоминается как «Вводный курс»).

Читатели, хорошо знакомые с какой-либо из этих трёх книг, заметят некоторое сходство между ними и данной книгой. Тем не менее, им не следует впадать в заблуждение, считая, что материал предлагаемой книги не нов. Действительно, некоторые части предлагаемой книги на самом деле заимствованы из этих ранее изданных книг. Однако в этом нет ничего неразумного, поскольку основные разделы этих книг были посвящены технологии System R, на которой, главным образом, основана система DB2. Во всяком случае, заимствованный материал был обновлен, расширен, либо в значительной мере переработан. Чтобы быть конкретным:
  • Главы 3–7 являются существенно расширенным и пересмотренным вариантом глав 6 и 7 из тома I; в главу 7 включен, в частности, некоторый материал из главы 7 «Вводного курса».
  • Глава 8 представляет собой в значительной мере обновленный вариант главы 9 из тома I.
  • Глава 9 является существенно расширенным и пересмотренным вариантом небольшого фрагмента раздела 4.4 из тома II.
  • Главы 10–12 основаны на главе 8 из тома I и небольшой части материала из главы 3 тома II. Некоторые части приложения В основаны на главах 17 и 18 из «Вводного курса».



БЛАГОДАРНОСТИ



Во-первых, мне доставляет удовольствие поблагодарить Тэда Кодда за дружбу и поддержку, оказываемую им не только во время написания этой книги, но и во всей моей профессиональной деятельности на протяжении последних нескольких лет. Подобно многим другим людям, работающим в этой области, своими успехами и материальным благополучием я обязан той работе, которую первоначально выполнил Тэд в конце шестидесятых — начале семидесятых годов, и я счастлив возможностью публично признать здесь этот долг. Эта книга, несомненно, должна быть посвящена ему.

Во-вторых, хотелось бы поблагодарить моих друзей и коллег — Джнана Даша, Уолта Розберри, Фила Шоу и особенно Шарона Вейнберга — за их помощь и поддержку в ходе всего второго проекта, а также за их конструктивную критику начальных вариантов рукописи.

В-третьих, хотелось бы выразить благодарность моим бывшим коллегам по проекту DB2 и группе разработчиков за их терпение при разбирательстве моих многочисленных технических вопросов. Есть еще довольно много людей, достойных того, чтобы их всех здесь назвать, но мне особенно хотелось бы упомянуть моих сотрудников из отдела технического планирования DB2: Сэнди Эвеленда, Пола Хиггинботема, Роджера Рейнша, Дэна Вордмена и Джорджа Загелоу. Наконец, мне очень приятно высказать благодарность за ту тяжелую работу, которая проведена в издательстве Addison-Wesley и других местах многими людьми, непосредственно участвующими в издании этой книги. Я надеюсь, что результат воздаст должное их усилиям.

К. Д. Дейт

Саратога, Калифорния Сентябрь 1983 г.