Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Базы Данных - Сибилев, 2007

.pdf
Скачиваний:
290
Добавлен:
11.05.2015
Размер:
1.93 Mб
Скачать

Федеральное агентство по образованию

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра автоматизированных систем управления (АСУ)

В.Д. Сибилёв

БАЗЫ ДАННЫХ

Томск 2007

2

Сибилёв В.Д. Базы данных: Учебное пособие /Томский государственный университет систем управления и радиоэлектроники – Томск, 2007. — 265 с.

Учебное пособие содержит часть материала учебных дисциплин «Базы данных» и «Проектирование баз данных», изучаемого студентами кафедры АСУ, получающими специальности 230105 и 080801. Изложены основные сведения о назначении и областях применения систем с базами данных (СБД), об организации СБД, об организации обработки данных и управлении доступом к данным в СБД. Описана реляционная модель данных и входной язык реляционных СУБД SQL.

© В.Д. Сибилёв, 2007

© Каф. АСУ, 2007

3

СОДЕРЖАНИЕ

 

 

Стр.

1 Назначение и области применения систем с базами данных.............................

8

1.1

Пример системы с базами данных ............................................................

8

1.2

Назначение систем с базами данных.......................................................

12

1.3

Типовые операции обработки данных.....................................................

13

1.4

Проблемы организации обработки данных предприятия..........................

14

2 Файловые системы обработки данных ..........................................................

16

2.1

Организация файловых систем обработки данных...................................

16

2.2

Недостатки ФСОД.................................................................................

21

2.2.1 Неконтролируемая избыточность данных. ........................................

21

2.2.2 Зависимость программ от данных.....................................................

22

2.2.3 Разделение и изоляция данных. ........................................................

22

2.2.4 Большое количество автономных программ в системе. ......................

23

2.3

Чем обусловлены недостатки ФСОД ......................................................

24

3 Организация систем с базами данных...........................................................

26

3.1

Концепция системы с базами данных (СБД)............................................

26

3.2

Дополнительные задачи программы-сервера...........................................

32

3.3

Классификация СБД..............................................................................

34

3.4

Основные понятия и термины ................................................................

35

3.4.1 Предметная область ........................................................................

35

3.4.2 Понятие базы данных в информатике ...............................................

35

3.4.3 Определение термина «база данных»................................................

37

3.4.4 Система управления базами данных (СУБД) .....................................

38

3.5

Система баз данных (СБД).....................................................................

39

3.5.1 Компоненты СБД............................................................................

39

3.5.2 Пользователи СБД ..........................................................................

40

3.5.3 Документация.................................................................................

41

3.5.4 Приложения....................................................................................

42

3.6

Основные подсистемы СУБД.................................................................

43

3.6.1 Подсистема проектирования............................................................

43

3.6.2 Подсистема обработки.....................................................................

44

3.6.3 Ядро СУБД.....................................................................................

44

3.7

Аппаратное обеспечение........................................................................

45

3.8

Структурные единицы базы данных .......................................................

48

3.9

Ключи ..................................................................................................

50

3.10 Представление метаданных..................................................................

51

 

4

 

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

52

3.12 Целостность данных и ограничения целостности...................................

54

4 Организация обработки данных в СБД .........................................................

57

4.1

Уровни представления данных (Архитектура ANSI/SPARC) ....................

57

4.1.1 Концептуальный уровень.................................................................

57

4.1.2 Внутренний уровень........................................................................

58

4.1.3 Внешний уровень............................................................................

59

4.1.4 Отображения ..................................................................................

60

4.1.5 Независимость приложений от данных.............................................

61

4.2

Дисциплина доступа приложений к хранимым данным ...........................

63

4.3

Операции обработки данных..................................................................

64

4.4

Дисциплина обменов с внешней памятью ...............................................

65

4.5

Операции обновления и целостность данных. .........................................

66

4.6

Понятие транзакции. .............................................................................

67

4.7

Свойства транзакции. ............................................................................

68

4.8

Управление доступом к данным.............................................................

69

4.8.1 Принципы ограничения доступа.......................................................

69

4.8.2 Авторизация пользователей. ............................................................

70

4.8.3 Аутентификация. ............................................................................

71

4.8.4 Привилегии доступа........................................................................

71

4.8.5 Подсхемы .......................................................................................

72

4.8.6 Сеанс..............................................................................................

73

4.9

Управление параллелизмом ...................................................................

73

4.9.1 Необходимость управления параллелизмом......................................

73

4.9.2 Изолированность транзакций...........................................................

76

4.9.3 Двухфазный протокол блокировки...................................................

77

4.10 Восстановление БД..............................................................................

79

4.10.1 Необходимость восстановления......................................................

79

4.10.2 Системный журнал........................................................................

80

4.10.3 Индивидуальный откат транзакции.................................................

82

4.10.4 Восстановление после мягкого сбоя................................................

83

4.10.5 Восстановление после жесткого сбоя..............................................

86

4.11 Функции СУБД ...................................................................................

86

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

89

5.1

Общая характеристика модели...............................................................

89

5.2

Структуры ............................................................................................

91

5.2.1 Основные понятия...........................................................................

91

5

 

5.2.2 Свойства отношений .......................................................................

94

5.2.3 Интуитивная основа РМД................................................................

95

5.2.4 Семантика конструкций РМД ..........................................................

96

5.3 Реляционная целостность.......................................................................

98

5.3.1 Возможные ключи отношения .........................................................

98

5.3.2 Первичный и альтернативные ключи..............................................

100

5.3.3 Связи отношений и внешние ключи ...............................................

102

5.3.4 Внутренние ограничения целостности РМД....................................

105

5.3.5 Правила внешних ключей..............................................................

107

5.4 Неопределённые значения и ограничения целостности данных..............

109

5.4.1 Проблема представления незнания.................................................

109

5.4.2 NULL-значения и целостность атрибута .........................................

111

5.4.3 Идентификация кортежей и NULL-значения...................................

112

5.4.4 Ссылочная целостность и NULL-значения......................................

113

5.5 Реляционный язык определения данных ...............................................

114

5.5.1 Объявление домена .......................................................................

114

5.5.2 Объявление отношения..................................................................

116

6 Манипуляционная часть РМД....................................................................

120

6.1 Общая характеристика.........................................................................

120

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

121

6.2.1 Основные операции.......................................................................

121

6.2.2 Синтаксис реляционных выражений...............................................

130

6.2.3 Примеры запросов на языке РА. .....................................................

131

6.2.4 Дополнительные реляционные операции. .......................................

133

6.2.5 Операторы обновления данных. .....................................................

136

6.2.6 Резюме. ........................................................................................

138

6.3 Реляционное исчисление .....................................................................

139

6.3.1 Алгебра и исчисление....................................................................

139

6.3.2 РИ с переменными-кортежами.......................................................

140

6.3.3 Реляционное исчисление с переменными на доменах ......................

146

6.3.4 Резюме .........................................................................................

148

7 ЯЗЫК ДАННЫХ SQL................................................................................

149

7.1 Обзор основных понятий SQL..............................................................

149

7.1.1 Назначение и этапы развития.........................................................

149

7.1.2 Реализации ...................................................................................

150

7.1.3 Категории операторов ...................................................................

151

7.1.4 Объект..........................................................................................

152

6

 

7.1.5 Идентификатор авторизации..........................................................

152

7.1.6 Сеанс............................................................................................

153

7.1.7 Тип данных...................................................................................

153

7.1.8 Домен...........................................................................................

154

7.1.9 Таблица........................................................................................

155

7.1.10 Представление ............................................................................

157

7.1.11 Утверждение...............................................................................

158

7.1.12 Другие типы объектов .................................................................

158

7.1.13 Системный каталог, информационная схема .................................

159

7.1.14 Схема, каталог, кластер................................................................

160

7.1.15 Элементы синтаксических диаграмм ............................................

161

7.2 Язык манипулирования данными .........................................................

163

7.2.1 Назначение операторов..................................................................

163

7.2.2 Оператор выборки данных.............................................................

163

7.2.3 Обработка оператора SELECT .......................................................

165

7.2.4 Предложение SELECT...................................................................

168

7.2.5 Предложение FROM......................................................................

169

7.2.6 Предикаты SQL.............................................................................

173

7.2.7 Предложение WHERE ...................................................................

180

7.2.8 Соединения таблиц .......................................................................

182

7.2.9 Запросы с соединениями таблиц.....................................................

190

7.2.10 Предложение GROUP BY и агрегатные функции SQL ...................

195

7.2.11 Предложение HAVING ................................................................

200

7.2.12 Вложение запросов......................................................................

201

7.2.13 Предложение ORDER BY ............................................................

211

7.2.14 Предложение ORDER BY используется для сортировки выходной

таблицы запроса. Оно всегда обрабатывается последним. ................................

211

7.2.15 Операторы UNION, INTERSECT и EXCEPT .................................

211

7.2.16 Операторы обновления данных ....................................................

216

7.3 Язык определения данных (DDL) .........................................................

221

7.3.1 Назначение и структура операторов DDL .......................................

221

7.3.2 Оператор определения домена .......................................................

223

7.3.3 Оператор уничтожения домена ......................................................

225

7.3.4 Оператор изменения домена ..........................................................

225

7.3.5 Оператор определения таблицы .....................................................

226

7.3.6 Оператор изменения таблицы ........................................................

233

7.3.7 Оператор удаления таблицы ..........................................................

235

7.3.8 Оператор определения представления ............................................

235

7

 

7.3.9 Оператор определения утверждения...............................................

237

7.3.10 Оператор определения схемы.......................................................

238

7.4 Работа с представлениями....................................................................

241

7.4.1 Роль механизма представлений ......................................................

241

7.4.2 Выборка данных из представления.................................................

245

7.4.3 Обновление представления............................................................

250

7.5 Операторы управления доступом .........................................................

256

7.5.1 Основные принципы .....................................................................

256

7.5.2 Оператор предоставления привилегий............................................

257

7.5.3 Оператор REVOKE .......................................................................

259

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

261

7.6.1 Модель транзакции .......................................................................

261

7.6.2 Оператор SET TRANSACTION ......................................................

263

7.6.3 Операторы COMMIT и ROLLBACK...............................................

264

8

1 Назначение и области применения систем с базами данных

1.1 Пример системы с базами данных

Компьютерные системы обработки данных (СОД) широко распро-

странены в современном мире. Существуют различные разновидности та-

ких систем. Нас в рамках нашего курса будет интересовать только одна — системы с базами данных (СБД). Пока оставим в стороне вопрос о том, по-

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

Пример такой системы, с которым вы сталкиваетесь очень часто — СБД магазина. У развитой системы много различных функций. Вы видите результаты работы только одной из них — функции обработки данных о покупке. Вспомним, что вы видите.

— Продавец выбирает из корзины покупателя очередной товар, считы-

вает сканером штрих-код и вводит с клавиатуры число единиц товара. На эк-

ране дисплея отображается текущая стоимость покупки. Эта процедура по-

вторяется до опустошения корзины.

— Продавец считывает с экрана сумму, которую должен уплатить по-

купатель, принимает деньги, вводит с клавиатуры принятую сумму. На экра-

не дисплея отображается сумма сдачи, причитающейся покупателю.

— Продавец нажимает какую-то клавишу, принтер печатает чек, про-

давец вручает покупателю чек и сдачу и переходит к обработке следующей покупки.

Любая бабушка с гуманитарным образованием догадается, что прода-

вец работает с какой-то программой. Вы, почти готовые системные аналити-

ки, могли бы даже объяснить в общих чертах, что именно при этом происхо-

дит. Могли бы иллюстрировать свои объяснения такой картинкой.

 

9

 

 

Сканер

Клавиатура

 

 

Штрих-код

Число единиц товара,

 

принятая сумма

 

товара

 

 

 

 

 

Программа

 

Внешняя

 

Seller

 

 

 

память

Стоимость покупки,

Сведения

Сведения

о товарах

о продажах

 

принятая сумма,

 

 

 

сдача

Чек

 

 

 

 

 

Дисплей

Принтер

 

 

Рис. 1.1 Регистрация продаж товаров в магазине.

Программу, реализующую эту функцию, назовём для удобства

Seller. Она работает с данными о товарах и продажах. Эти данные хранят-

ся в файлах внешней памяти в виде записей, например, таких форматов:

ТОВАР (КодТов, Наимен, ЕдИзмер, Цена, Остаток).

ПРОДАЖА (Дата, Касса, Смена, КодТов, КолПродЕд).

Заметим, что эта программа работает одновременно со всеми вклю-

ченными кассами магазина. Вот как она обрабатывает сигналы одной кас-

сы.

Продавец

Программа Seller

 

 

Считывает

Определяет номер кассы и принимает считанное сканером

сканером

значение кода товара.

код товара.

Считывает из файла ТОВАР в рабочий буфер запись, содер-

 

жащую принятое значение кода.

 

Находит во внешней памяти (по значениям кода товара, номе-

 

ра кассы, номера смены и текущей даты) запись файла

 

ПРОДАЖА и считывает её в рабочий буфер. Если таковой не

 

существует, то создаёт её в буфере.

 

Отображает на экране дисплея текущее значение поля

 

ТОВАР.цена.

 

Ждёт ввода числа N единиц товара в текущей покупке.

 

 

Вводит с

Уменьшает на N текущее значение поля ТОВАР.Остаток.

 

 

10

клавиату-

Увеличивает

на

N

текущее

значение

поля

ры

число

ПРОДАЖА.КолПродЕд.

 

 

 

N.

 

Умножает число N на текущее значение поля ТОВАР.Цена.

 

 

Складывает результат с накопленной стоимостью покупки

 

 

Sтек.

 

 

 

 

 

 

 

Отображает на экране значение Sтек.

 

 

 

 

Ждёт очередного сигнала сканера или ввода значения S

 

 

принятой от покупателя суммы денег.

 

 

 

 

Вводит с

Вычитает из принятого значения S накопленное значение

клавиату-

Sтек.

 

 

 

 

 

ры

значе-

Отображает на экране значение разности (сдачи).

 

ние S.

Печатает чек покупки (отчёт).

 

 

 

 

 

Выталкивает из рабочего буфера во внешнюю память об-

 

 

новлённые записи файлов ТОВАР и ПРОДАЖА.

 

 

 

Ждёт очередного сигнала сканера.

 

 

 

 

 

 

Это, пожалуй, всё, что приходится делать программе Seller при об-

работке покупки в "штатной" ситуации. Однако мы люди предусмотри-

тельные, и понимаем, что могут возникать и "нештатные". Например, по-

купатель не может оплатить покупку. Кассир принимает только рубли, а у него одни перуанские эскудо. Или в кармане вдруг открылась дыра, в ко-

торую утекли все кровные. Или он передумал покупать вот эти чипсы.

Вспомнил, что они вредные. Да мало ли что… Ясно, что продавец должен иметь возможность полностью или частично отменить изменения, вне-

сённые в файлы ТОВАР и ПРОДАЖА. И возможность эту должна ему обеспечить программа Seller.

По окончании смены продавцы должны сдать отчёты по своим кас-

сам. Допустим, отчёт выглядит так.

Дата 04.06.06 Касса 1 Смена 3 Продавец Тюшкина Р.Г.

Получено на

Пятьсот сорок рублей 00 коп

540.00

начало смены