Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
dbbook(2010.04.15).pdf
Скачиваний:
49
Добавлен:
09.06.2015
Размер:
2.14 Mб
Скачать

САРАТОВСКИЙ ГОСУНИВЕРСИТЕТ

МЕХАНИКО-МАТЕМАТИЧЕСКИЙ ФАКУЛЬТЕТ

Базы данных

Кафедра компьютерной алгебры и теории чисел Подготовил Ковалев А. Д.

Дата последнего обновления 15 апреля 2010 г.

Оглавление

I.

Установочный модуль

9

1.

Введение

 

10

II.

Модуль 1

13

2.

Реляционная алгебра

14

 

2.1.

Отсутствующие данные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

 

2.2.

Пустые значения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

 

2.3.

Неопределенные значения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

 

 

2.3.1.

Интерпретации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

 

 

2.3.2.

Правила вычисления выражений . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

 

 

2.3.3.

Следствия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

 

 

2.3.4.

Проверка условий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

 

2.4.

Реляционные объекты данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

2.4.1.Формальные определения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.4.2.Домены и атрибуты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.4.3.

Схема отношения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

2.4.4.

Именованное значение атрибута . . . . . . . . . . . . . . . . . . . . . . . . . . .

29

2.4.5.

Кортеж . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29

2.4.6.Отношение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.4.7.Схема базы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.4.8.База данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.5.Операции реляционной алгебры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.5.1.Унарные операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.5.2.Бинарные операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.5.3.

Варианты операции соединения . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

2.5.4.

Производные операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

2.6.Пример построения выражения реляционной алгебры . . . . . . . . . . . . . . . . . . . 45

2.7.Понятие базовых и виртуальных отношений . . . . . . . . . . . . . . . . . . . . . . . . 47

2.8.Понятие полноты реляционной алгебры . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.9.Формирование запросов на языке SQL 2.9.1. Металингвистические символы

. . . . . . . . . . . . . . . . . . . . . . . . . . .

49

. . . . . . . . . . . . . . . . . . . . . . . . . . .

50

2.9.2.Реализация операций реляционной алгебры . . . . . . . . . . . . . . . . . . . . 51

2.9.3.Пример использования подзапросов . . . . . . . . . . . . . . . . . . . . . . . . . 60

2.9.4.Группирующие запросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

2.9.5. Упорядочение результатов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

2.10.Вопросы для самоконтроля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

2.11.Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 2.11.1. Построение выражений реляционной алгебры . . . . . . . . . . . . . . . . . . . 70

III. Модуль 2

72

3. Базовые и виртуальные отношения

73

3.1.Типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.1.1. Базовые типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

 

3.1.2.

Типы данных, определяемые пользователем . . . . . . . . . . . . . . . . . . . .

79

3.2.

Первичные и кандидатные ключи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

80

3.3.

Создание базовых отношений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

82

3.4.

Индексы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

86

3.5.

Модификация базовых отношений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

88

 

3.5.1.

Вставка строк . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

88

 

3.5.2.

Обновление строк . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

90

 

3.5.3.

Удаление строк . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

91

3.6.

Целостность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

91

 

3.6.1.

Декларативная поддержка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

92

3.6.2.Пример декларативной поддержки целостности . . . . . . . . . . . . . . . . . . 96

3.6.3.Транзакции и блокировки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

3.6.4. Триггеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

3.7.Виртуальные отношения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

3.8.Вопросы для самоконтроля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

3.9.Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 3.9.1. Декларативная поддержка целостности . . . . . . . . . . . . . . . . . . . . . . . 111

IV. Модуль 3

113

4. Нормальные формы

114

4.1.Функциональные зависимости (ФЗ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

4.1.1.Правила вывода Армстронга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

4.1.2.Производные правила вывода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

4.1.3.

Независимость правил Армстронга . . . . . . . . . . . . . . . . . . . . . . . . .

121

4.1.4.

Полнота системы правил Армстронга . . . . . . . . . . . . . . . . . . . . . . . .

123

4.2. Нормальные формы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

124

4.2.1.

Первая нормальная форма (1NF) . . . . . . . . . . . . . . . . . . . . . . . . . .

126

4.2.2.Вторая нормальная форма (2NF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

4.2.3.Третья нормальная форма (3NF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

4.2.4.Нормальная форма Бойса-Кодда (Boyce, Codd; NFBC) . . . . . . . . . . . . . . 135

4.2.5.Пример построения нормализованных схем отношений . . . . . . . . . . . . . . 139

4.3.Вопросы для самоконтроля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

V.

Модуль 4

144

5.

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

145

 

5.1.

Уровни логической модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

147

 

5.2.

Миграция ключей и виды связей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

149

 

5.3.

Классификация кластеров . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

156

 

5.4.

Иерархическая рекурсия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

157

5.4.1.Абстрактная схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

5.4.2.Обобщения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

5.4.3.Пример реализации иерархической рекурсии . . . . . . . . . . . . . . . . . . . . 161

5.5. Сетевая рекурсия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

5.5.1.Абстрактная схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

5.5.2.Сетевая реализация иерархической рекурсии . . . . . . . . . . . . . . . . . . . . 168

5.5.3.Обобщения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

5.5.4.Пример реализации сетевой рекурсии . . . . . . . . . . . . . . . . . . . . . . . . 170

5.6.Ассоциация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

5.6.1.Детализация связей многие-ко-многим . . . . . . . . . . . . . . . . . . . . . . . 174

5.6.2.Обобщения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

5.6.3.Пример реализации ассоциации . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

5.7.Обобщение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

5.7.1.Абстрактная схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

5.7.2. Пример реализации обобщения . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

5.8.Композиция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

5.8.1.Абстрактная схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

5.8.2.Пример реализации композиции . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

5.9.Агрегация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

5.9.1.Абстрактная схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

5.9.2.Пример реализации агрегации . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

5.10. Унификация атрибутов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

5.11.Вопросы для самоконтроля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

5.12.Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

5.12.1.

Иерархическая рекурсия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

209

5.12.2.

Сетевая рекурсия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

210

5.12.3.Ассоциация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

5.12.4.Обобщение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

5.12.5.Композиция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

5.12.6.Агрегация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

VI. Дополнительные главы

215

6. Технологии баз данных

216

6.1.

Информационные системы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

216

 

6.1.1.

Жизненный цикл ИС . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

217

 

6.1.2.

СУБД и БД . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

222

 

6.1.3.

Жизненный цикл БД и средства проектирования . . . . . . . . . . . . . . . . .

223

6.2.

Модели данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

226

6.2.1.Иерархическая модель данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

6.2.2.Сетевая модель данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

6.2.3.Реляционная модель данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

6.2.4.

Постреляционная модель данных . . . . . . . . . . . . . . . . . . . . . . . . . .

234

6.2.5.

Объектно-ориентированные модели данных . . . . . . . . . . . . . . . . . . . .

234

6.2.6.XML как модель данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

6.2.7.Многомерная модель данных (OLAP) . . . . . . . . . . . . . . . . . . . . . . . . 237

6.3. Основные функции СУБД . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

6.3.1.Управление данными во внешней памяти . . . . . . . . . . . . . . . . . . . . . . 242

6.3.2.Управление буферами оперативной памяти . . . . . . . . . . . . . . . . . . . . . 242

6.3.3. Управление транзакциями . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

6.3.4.Журнализация и восстановление БД после сбоев . . . . . . . . . . . . . . . . . 243

6.3.5.Поддержка языков баз данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

6.4.

Типовая организация СУБД . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

247

6.5.

Модели взаимодействия с БД . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

249

 

6.5.1.

Модель с централизованной архитектурой . . . . . . . . . . . . . . . . . . . . .

249

 

6.5.2.

Модель с автономными персональными компьютерами . . . . . . . . . . . . . .

250

 

6.5.3.

Архитектура «файл-сервер» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

251

 

6.5.4.

Архитектура «клиент-сервер» . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

251

 

6.5.5.

Архитектура «клиент-сервер» трехзвенная . . . . . . . . . . . . . . . . . . . . .

253

 

6.5.6.

Распределенные базы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . .

254

6.5.7. Технология тиражирования данных . . . . . . . . . . . . . . . . . . . . . . . . . 255

6.6.Фрактальные методы сжатия BLOB [11] . . . . . . . . . . . . . . . . . . . . . . . . . . 256

6.6.1.

Понятие «фрактал» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

257

6.6.2.

Геометрические фракталы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

258

6.6.3.

Алгебраические фракталы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

260

6.6.4.

Стохастические фракталы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

263

6.6.5. Системы итерируемых функций . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

6.7.Вопросы для самоконтроля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

Литература

269

Список иллюстраций

271

Список таблиц

274

Часть I.

Установочный модуль

1. Введение

Традиционная тема курса – модели данных – рассматривается с той или иной степенью детализации в широком диапазоне: модели иерархическая, сетевая, реляционная, постреляционная, объектноориентированая, XML, OLAP.

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

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

Далее рассматриваются теоретические вопросы обоснования теории реляционных БД (РБД) и технологические вопросы разработки РБД.

Вводится реляционная алгебра. Анализируется проблема неопределенных значений и ее влияние на методы обработки данных. Формализуется понятие базы данных на наиболее абстрактном уровне. Вводятся реляционные операции и их варианты, анализируется независимость операций. На алгебраическом уровне водятся понятия базовых и виртуальных отношений. Описывается реализация операций реляционной алгебры на языке баз данных SQL. Демонстрируется техника использования SQL-подзапросов.

Рассматривается внутреннее устройство базовых и виртуальных отношений. Определяются базовые типы данных и типы данных, определяемые пользователем. Описывается техника индексирования. Описываются SQL-конструкции для создания и модификации отношений.

Анализируются декларативные и процедурные методы поддержания целостности БД с использование механизма транзакций и триггеров.

Излагается теория нормализации (до NFBC включительно). Вводится понятие функциональных зависимостей, и обосновываются правила вывода Армстронга. Определяются и анализируются 1NF, 2NF, 3NF, NFBC.

Описывается методология проектирования схем баз данных в стиле UML. Вводятся понятия диаграмм, связей и их элементов. Методология проектирования демонстрируется на таких кластерах, как иерархическая и сетевая рекурсии, ассоциация, обобщение, композиция, агрегация. Рассматривается назначение унификации атрибутов.

В заключительной обсуждаются фрактальные методы сжатия BLOB – крупных двоичных объектов, что актуально для мультимедийных БД.

О контрольных работах (лабораторном практикуме). К пособию прилагается задания на выполнение лабораторных работ с примерами ее выполнения.

Цель работы – приобретение практических навыков анализа и моделирования предметной области; ознакомление с работой специализированных CASE-средств; изучение подхода к обработке данных на основе применения языка SQL; при наличии возможностей – ознакомление с архитектурой «клиент-сервер».

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

К разделам пособия прилагаются вопросы для самоконтроля, тестовые задания (где целесообразно) и списки рекомендуемой литературы.

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

Содержание пособия соответствует требованиям ГОС ВПО и, как можно ожидать, пособие не потеряет актуальности и при переходе на новую систему образования.

Пособие может быть рекомендовано студентам специальности прикладная информатика всех форм обучения и преподавателям.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]