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

РУКОВОДСТВО ПО РЕЛЯЦИОННОЙ СУБД 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

ОБЗОР ВОЗМОЖНОСТЕЙ СИСТЕМЫ 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

СТРУКТУРА СИСТЕМЫ............................................................................................. 34

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

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

УПРАЖНЕНИЯ.......................................................................................................... 41

ГЛАВА 3

ОПРЕДЕЛЕНИЕ ДАННЫХ......................................................................................... 42

3.1. ВВЕДЕНИЕ........................................................................................................... 42

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

Определение................................................................................................................ 42

3.3. ИНДЕКСЫ............................................................................................................ 46

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

УПРАЖНЕНИЯ.......................................................................................................... 49

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

ГЛАВА 4

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

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

4.1. ВВЕДЕНИЕ........................................................................................................... 52

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.4. РЕЗЮМЕ............................................................................................................... 67

УПРАЖНЕНИЯ.......................................................................................................... 67

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

ГЛАВА 5

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

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

return false">ссылка скрыта

5.1. ВВЕДЕНИЕ........................................................................................................... 71

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

УПРАЖНЕНИЯ.......................................................................................................... 91

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

ГЛАВА 6

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

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

6.1. ВВЕДЕНИЕ........................................................................................................... 98

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

УПРАЖНЕНИЯ........................................................................................................ 104

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

ГЛАВА 7

КАТАЛОГ...................................................................................................................... 109

7.1. ВВЕДЕНИЕ......................................................................................................... 109

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

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

7.4. СИНОНИМЫ..................................................................................................... 113

УПРАЖНЕНИЯ........................................................................................................ 113

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

ГЛАВА 8

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

8.1. ВВЕДЕНИЕ......................................................................................................... 115

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

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

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

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

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

УПРАЖНЕНИЯ........................................................................................................ 128

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

ГЛАВА 9

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

9.1. ВВЕДЕНИЕ......................................................................................................... 132

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

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

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

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

упражнения............................................................................................................... 141

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

ГЛАВА 10

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

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

10.1. ВВЕДЕНИЕ....................................................................................................... 145

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

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

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

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

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

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

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

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

УПРАЖНЕНИЯ........................................................................................................ 157

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

ГЛАВА 11

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

ОБРАБОТКА ТРАНЗАКЦИЙ.................................................................................... 162

11.1. ВВЕДЕНИЕ....................................................................................................... 162

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

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

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

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

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

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

11.8. РЕЗЮМЕ........................................................................................................... 177

УПРАЖНЕНИЯ........................................................................................................ 178

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

ГЛАВА 12

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

ДИНАМИЧЕСКИЙ SQL............................................................................................. 180

12.1. ВВЕДЕНИЕ....................................................................................................... 180

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

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

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

ГЛАВА 13

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

13.1. ВВЕДЕНИЕ....................................................................................................... 186

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

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

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

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

13.6. ИНДЕКСЫ........................................................................................................ 193

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

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

ГЛАВА 14

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

14.1. ВВЕДЕНИЕ....................................................................................................... 197

14.2. МЕНЮ SPUFI................................................................................................... 199

14.3. МЕНЮ DCLGEN............................................................................................. 200

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

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

14.6. МЕНЮ RUN..................................................................................................... 201

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

14.8. УТИЛИТЫ........................................................................................................ 202

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

ГЛАВА 15

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

15.1. ВВЕДЕНИЕ....................................................................................................... 203

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

УПРАЖНЕНИЯ........................................................................................................ 215

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

ГЛАВА 16

КРАТКИЕ ИТОГИ И ВЫВОДЫ............................................................................... 219

16.1. ВВЕДЕНИЕ....................................................................................................... 219

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

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

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

ПРИЛОЖЕНИЕ А

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

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

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

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

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

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

ПРИЛОЖЕНИЕ B

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

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

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

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

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

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

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

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

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

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

ПРИЛОЖЕНИЕ С

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

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

С.2. ИМЕНА.............................................................................................................. 255

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

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

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

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

ПРИЛОЖЕНИЕ D

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

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

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

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

БИБЛИОГРАФИЯ.................................................................................................... 259

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

 

 


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

 

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

Эта работа посвящена детальному обсуждению нового программного продукта, созданного крупнейшим в мире производителем средств вычислительной техники и программного обеспечения—американской фирмой 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. Знание системы «изнутри» помогло объективно показать не только ее достоинства, но и слабые места.

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

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