
Книга о проектировании и поддержке широкого спектра реляционных и нереляционных баз данных на любой аппаратной платформе и в кроссплатформенных окружениях. Описано, как развёртывать и использовать базы данных на корпоративных серверах и в облаке. Изложены базовые принципы масштабирования, репликации, обеспечения согласованности данных, надёжности и безопасности облачных, корпоративных и гибридных решений. Для прочтения книги не требуются знания конкретных баз данных, книга может применяться как для проектирования базы данных с нуля, так и для доработки унаследованного продукта.
Для разработчиков, администраторов, специалистов по поддержке баз данных
Перед вами обновлённое второе издание классической книги о концепциях различных баз данных и подходах к их внедрению. Прославленный опытный программист и преподаватель Род Стивенс в доступной форме рассказывает об устройстве и реализации традиционных и инновационных решений для работы с большими данными. Книга снабжена обширными примерами рабочего протестированного кода, подсказывающего элегантные решения для всевозможных прикладных задач и разнообразных окружений.
Вы изучите, как лучше всего проектировать надёжные и безопасные базы данных безотносительно той платформы, на которой предполагается работать. Рассказано, как встраивать в систему возможности масштабирования, репликации данных, как добиваться согласованности, надёжности, простоты, гибкости и безопасности новой или унаследованной базы данных.
Книга предназначена для архитекторов и разработчиков баз данных, стремящихся найти универсальное пособие по проектированию и реализации БД в сети предприятия или в облаке. Также книга будет полезна администраторам баз данных и специалистам по управлению данными, особенно при необходимости работать в гибридных средах.
Книга не требует знаний или опыта работы с какой-либо конкретной базой данных, предлагает ясную и полную информацию по следующим темам:
- Цели и движущие факторы эффективного проектирования баз данных
- Основы устройства реляционных баз данных
- Важность трактовки любой базы данных с точки зрения пользователя, понимание его потребностей
- Эффективное моделирование данных
- Понимание бизнес-правил и умение их конкретизировать
Книгу “Основы проектирования баз данных. 2-е издание” можно купить со скидкой в интернет-магазине издательства “БХВ“.
Краткое оглавление…………………………………………………………………………………. 5
Об авторе……………………………………………………………………………………………….. 27
О техническом редакторе английского издания…………………………………….. 28
Благодарности……………………………………………………………………………………….. 28
Предисловие…………………………………………………………………………………………… 29
Для кого эта книга?……………………………………………………………………………………………………………………. 30
О чем рассказывается в книге?…………………………………………………………………………………………………. 30
Что вам потребуется для работы с книгой?…………………………………………………………………………….. 31
Структура книги………………………………………………………………………………………………………………………… 31
Часть I. Введение в базы данных и их проектирование……………………………………………… 32
Часть II. Процесс и методы проектирования баз данных…………………………………………… 32
Часть III. Подробный анализ конкретного примера…………………………………………………… 34
Часть IV. Примеры программ………………………………………………………………………………………… 34
Часть V. Расширенные темы………………………………………………………………………………………….. 35
Приложения…………………………………………………………………………………………………………………….. 36
Как работать с книгой?……………………………………………………………………………………………………………… 36
Примечание для преподавателей…………………………………………………………………………………………….. 38
Примечание для студентов……………………………………………………………………………………………………….. 39
Условные обозначения……………………………………………………………………………………………………………… 39
Исходный код…………………………………………………………………………………………………………………………….. 40
Как связаться с автором?………………………………………………………………………………………………………….. 40
Пояснение…………………………………………………………………………………………………………………………………… 40
ЧАСТЬ I. Введение в базы данных и их проектирование….. 41
Глава 1. Цели проектирования баз данных……………………………………………. 43
Важность проектирования………………………………………………………………………………………………………… 44
Информационные контейнеры………………………………………………………………………………………………….. 46
Достоинства и недостатки информационных контейнеров…………………………………………………… 48
Желательные функции базы данных……………………………………………………………………………………….. 51
CRUD……………………………………………………………………………………………………………………………….. 51
Извлечение………………………………………………………………………………………………………………. 52
Согласованность……………………………………………………………………………………………………. 52
Валидность……………………………………………………………………………………………………………… 53
Простое исправление ошибок……………………………………………………………………………….. 54
Скорость………………………………………………………………………………………………………………….. 55
Атомарные транзакции………………………………………………………………………………………….. 55
ACID………………………………………………………………………………………………………………………………… 56
BASE………………………………………………………………………………………………………………………………… 58
NewSQL……………………………………………………………………………………………………………………………. 59
Постоянство и резервное копирование…………………………………………………………………………. 59
Низкая стоимость и расширяемость……………………………………………………………………………… 61
Простота использования……………………………………………………………………………………………….. 62
Переносимость………………………………………………………………………………………………………………… 62
Безопасность…………………………………………………………………………………………………………………… 63
Совместное использование……………………………………………………………………………………………. 64
Способность выполнять сложные расчеты………………………………………………………………….. 65
Теорема CAP…………………………………………………………………………………………………………………… 65
Несколько мыслей про облачные технологии…………………………………………………………….. 66
Правовые аспекты и вопросы безопасности………………………………………………………………… 67
Последствия качественного и некачественного проектирования………………………………. 69
Резюме…………………………………………………………………………………………………………………………………………. 71
Упражнения………………………………………………………………………………………………………………………….. 71
Глава 2. Обзор реляционных баз данных……………………………………………….. 73
Выбор базы данных…………………………………………………………………………………………………………………… 74
Точки зрения на реляционные базы данных…………………………………………………………………………… 75
Таблица, строки и столбцы………………………………………………………………………………………………………. 76
Отношения, атрибуты и кортежи……………………………………………………………………………………………… 78
Ключи…………………………………………………………………………………………………………………………………………. 79
Индексы………………………………………………………………………………………………………………………………………. 82
Ограничения……………………………………………………………………………………………………………………………….. 82
Доменные ограничения………………………………………………………………………………………………….. 82
Проверочные ограничения…………………………………………………………………………………………….. 83
Ограничения первичного ключа……………………………………………………………………………………. 83
Ограничение уникальности…………………………………………………………………………………………… 84
Ограничения внешних ключей………………………………………………………………………………………. 84
Операции с базами данных………………………………………………………………………………………………………. 86
Популярные реляционные базы данных…………………………………………………………………………………. 88
Электронные таблицы………………………………………………………………………………………………………………. 90
Резюме…………………………………………………………………………………………………………………………………………. 91
Упражнения………………………………………………………………………………………………………………………….. 91
Глава 3. Обзор NoSQL……………………………………………………………………………. 94
Облачная среда………………………………………………………………………………………………………………………….. 94
Выбор базы данных…………………………………………………………………………………………………………………… 97
Философия NoSQL………………………………………………………………………………………………………….. 97
Базы данных NoSQL………………………………………………………………………………………………………. 98
Документные базы данных……………………………………………………………………………………. 98
База данных ключей и значений………………………………………………………………………… 100
Столбцово-ориентированные базы данных………………………………………………………. 100
Графовые базы данных……………………………………………………………………………………….. 102
Уличные сети………………………………………………………………………………………………….. 102
Сети связи………………………………………………………………………………………………………… 103
Приложения для социальных сетей………………………………………………………………. 103
Программы электронной коммерции……………………………………………………………. 104
Алгоритмы………………………………………………………………………………………………………. 104
Иерархические базы данных………………………………………………………………………………. 104
Менее экзотические варианты……………………………………………………………………………………………….. 108
Неструктурированные файлы…………………………………………………………………………………….. 108
XML-файлы…………………………………………………………………………………………………………………… 109
Основы XML…………………………………………………………………………………………………………. 110
Практика работы с XML……………………………………………………………………………………… 114
Выводы об XML…………………………………………………………………………………………………… 116
JSON-файлы…………………………………………………………………………………………………………………… 117
Электронные таблицы…………………………………………………………………………………………………. 119
Более экзотические варианты………………………………………………………………………………………………… 120
Объектные……………………………………………………………………………………………………………………… 120
Дедуктивные…………………………………………………………………………………………………………………. 120
Размерные……………………………………………………………………………………………………………………… 121
Временне…………………………………………………………………………………………………………………….. 121
Плюсы и минусы баз данных………………………………………………………………………………………………….. 122
Реляционные…………………………………………………………………………………………………………………. 123
Общие свойства баз данных NoSQL…………………………………………………………………………… 124
Краткие рекомендации………………………………………………………………………………………………… 126
Резюме………………………………………………………………………………………………………………………………………. 128
Упражнения………………………………………………………………………………………………………………………… 129
ЧАСТЬ II. Процесс и методы проектирования баз данных 131
Глава 4. Понимание потребностей пользователей………………………………… 133
Составьте план………………………………………………………………………………………………………………………… 134
Возьмите с собой список вопросов………………………………………………………………………………………… 135
Функциональные возможности…………………………………………………………………………………… 135
Потребности в данных…………………………………………………………………………………………………. 136
Целостность данных…………………………………………………………………………………………………….. 136
Безопасность…………………………………………………………………………………………………………………. 137
Окружение…………………………………………………………………………………………………………………….. 138
Встретьтесь с клиентами…………………………………………………………………………………………………………. 139
Узнайте, кто есть кто……………………………………………………………………………………………………………….. 140
Определите участников……………………………………………………………………………………………….. 143
Как это сделать?…………………………………………………………………………………………………… 143
Постарайтесь понять, как мыслят клиенты…………………………………………………………………………… 144
Представьте себя на месте клиентов……………………………………………………………………………………… 144
Изучите текущие операции…………………………………………………………………………………………………….. 145
Устройте мозговой штурм………………………………………………………………………………………………………. 146
Думайте о будущем…………………………………………………………………………………………………………………. 147
Поймите логику клиентов……………………………………………………………………………………………………….. 147
Узнайте, что на самом деле нужно клиентам……………………………………………………………………….. 149
Расставьте приоритеты…………………………………………………………………………………………………………… 150
Проверьте свое понимание……………………………………………………………………………………………………… 151
Составьте техническое задание……………………………………………………………………………………………… 153
Подготовьте сценарии использования…………………………………………………………………………………… 154
Примите решение о целесообразности………………………………………………………………………………….. 158
Резюме………………………………………………………………………………………………………………………………………. 159
Упражнения………………………………………………………………………………………………………………………… 160
Глава 5. Перевод потребностей пользователей в модели данных………….. 163
Что такое модели данных?……………………………………………………………………………………………………… 164
Модели пользовательского интерфейса………………………………………………………………………………… 167
Построение модели пользовательского интерфейса…………………………………………………. 170
Как это сделать?…………………………………………………………………………………………………… 171
Семантические объектные модели…………………………………………………………………………………………. 172
Классы и объекты…………………………………………………………………………………………………………. 172
Кардинальность……………………………………………………………………………………………………………. 173
Идентификаторы…………………………………………………………………………………………………………… 174
Соберем все вместе………………………………………………………………………………………………………. 174
Построение семантической объектной модели…………………………………………………………. 176
Как это сделать?…………………………………………………………………………………………………… 176
Семантические представления……………………………………………………………………………………. 176
Типы классов………………………………………………………………………………………………………………… 178
Простые объекты………………………………………………………………………………………………….. 178
Композитные объекты…………………………………………………………………………………………. 178
Составные объекты……………………………………………………………………………………………… 179
Гибридный объект……………………………………………………………………………………………….. 179
Ассоциативные объекты……………………………………………………………………………………… 180
Хитроумные ассоциации…………………………………………………………………………………….. 182
Как это сделать?…………………………………………………………………………………………….. 182
Наследуемые объекты…………………………………………………………………………………………. 182
Комментарии и примечания………………………………………………………………………………………… 184
Модели «сущность-связь»……………………………………………………………………………………………………….. 185
Сущности, атрибуты и идентификаторы……………………………………………………………………. 185
Связи………………………………………………………………………………………………………………………………. 186
Кардинальность……………………………………………………………………………………………………………. 187
Наследование……………………………………………………………………………………………………………….. 189
Построение ER-диаграммы…………………………………………………………………………………………. 190
Как это сделать?…………………………………………………………………………………………………… 190
Дополнительные условные обозначения…………………………………………………………………… 191
Комментарии и примечания………………………………………………………………………………………… 192
Реляционные модели……………………………………………………………………………………………………………….. 193
Преобразование семантических объектных моделей……………………………………………….. 193
Преобразование ER-диаграмм……………………………………………………………………………………. 196
Резюме………………………………………………………………………………………………………………………………………. 197
Упражнения………………………………………………………………………………………………………………………… 198
Глава 6. Извлечение бизнес-правил……………………………………………………… 200
Что такое бизнес-правила?……………………………………………………………………………………………………… 200
Определение ключевых бизнес-правил…………………………………………………………………………………. 202
Поиск бизнес-правил……………………………………………………………………………………………………. 206
Как это сделать?…………………………………………………………………………………………………… 207
Извлечение ключевых бизнес-правил……………………………………………………………………………………. 209
Многоуровневые приложения………………………………………………………………………………………………… 211
Пример реализации многоуровневого приложения………………………………………………….. 214
Как это сделать?…………………………………………………………………………………………………… 214
Резюме………………………………………………………………………………………………………………………………………. 217
Упражнения………………………………………………………………………………………………………………………… 217
Глава 7. Нормализация данных……………………………………………………………. 221
Что такое нормализация?……………………………………………………………………………………………………….. 221
Первая нормальная форма (1НФ)…………………………………………………………………………………………… 223
Организация данных в первой нормальной форме……………………………………………………. 226
Как это сделать?…………………………………………………………………………………………………… 227
Вторая нормальная форма (2НФ)………………………………………………………………………………………….. 232
Организация данных во второй нормальной форме…………………………………………………. 235
Как это сделать?…………………………………………………………………………………………………… 235
Третья нормальная форма (3НФ)…………………………………………………………………………………………… 236
Организация данных в третьей нормальной форме………………………………………………….. 238
Как это сделать?…………………………………………………………………………………………………… 239
Остановка на третьей нормальной форме………………………………………………………………….. 240
Нормальная форма Бойса — Кодда (НФБК)………………………………………………………………………… 241
Организация данных в НФБК……………………………………………………………………………………… 244
Как это сделать?…………………………………………………………………………………………………… 244
Четвертая нормальная форма (4НФ)……………………………………………………………………………………… 245
Организация данных в четвертой нормальной форме………………………………………………. 248
Как это сделать?…………………………………………………………………………………………………… 248
Пятая нормальная форма (5НФ)…………………………………………………………………………………………….. 250
Работа с пятой нормальной формой…………………………………………………………………………… 252
Как это сделать?…………………………………………………………………………………………………… 252
Доменно-ключевая нормальная форма (ДКНФ)…………………………………………………………………… 253
Организация данных в доменно-ключевой нормальной форме……………………………….. 254
Как это сделать?…………………………………………………………………………………………………… 255
Ценная избыточность………………………………………………………………………………………………………………. 255
Оптимальный уровень нормализации……………………………………………………………………………………. 257
Нормализация NoSQL……………………………………………………………………………………………………………… 258
Резюме………………………………………………………………………………………………………………………………………. 259
Упражнения………………………………………………………………………………………………………………………… 260
Глава 8. Проектирование баз данных для поддержки
программного обеспечения…………………………………………………………………… 263
Планируйте наперед……………………………………………………………………………………………………………….. 264
Документируйте всё………………………………………………………………………………………………………………… 264
Учитывайте многоуровневую архитектуру………………………………………………………………………….. 265
Преобразуйте домены в таблицы…………………………………………………………………………………………… 265
Использование справочных таблиц……………………………………………………………………………. 266
Как это сделать?…………………………………………………………………………………………………… 267
Следите, чтобы таблицы оставались специализированными…………………………………………….. 267
Используйте три вида таблиц…………………………………………………………………………………………………. 267
Четко специализированные таблицы…………………………………………………………………………. 268
Как это сделать?…………………………………………………………………………………………………… 269
Придерживайтесь соглашений об именовании…………………………………………………………………….. 270
Допускайте определенную избыточность данных………………………………………………………………. 271
Не втискивайте всё подряд……………………………………………………………………………………………………… 272
Первая нормальная форма…………………………………………………………………………………………… 273
Как это сделать?…………………………………………………………………………………………………… 273
Резюме………………………………………………………………………………………………………………………………………. 273
Упражнения………………………………………………………………………………………………………………………… 274
Глава 9. Использование общих шаблонов проектирования…………………. 276
Ассоциации………………………………………………………………………………………………………………………………. 277
Ассоциации «многие ко многим»…………………………………………………………………………………. 277
Множественные ассоциации «многие ко многим»…………………………………………………….. 277
Построение связей «многие-ко-многим»…………………………………………………………….. 278
Как это сделать?…………………………………………………………………………………………….. 279
Многообъектные ассоциации……………………………………………………………………………………… 279
Построение многообъектных ассоциаций…………………………………………………………. 281
Как это сделать?…………………………………………………………………………………………….. 281
Повторяющиеся ассоциации атрибутов…………………………………………………………………….. 282
Рефлексивные ассоциации…………………………………………………………………………………………… 284
Рефлексивные ассоциации «один к одному»……………………………………………………… 284
Рефлексивные ассоциации «один ко многим»……………………………………………………. 285
Иерархические данные……………………………………………………………………………………………………………. 286
Работа с иерархическими данными……………………………………………………………………………. 287
Как это сделать?…………………………………………………………………………………………………… 288
Иерархические данные с NoSQL…………………………………………………………………………………. 289
Сетевые данные……………………………………………………………………………………………………………………….. 290
Сетевые данные с NoSQL…………………………………………………………………………………………….. 292
Временные данные………………………………………………………………………………………………………………….. 293
Срок действия……………………………………………………………………………………………………………….. 293
Удаленные объекты……………………………………………………………………………………………………… 294
Решаем, какие данные сделать временными……………………………………………………………… 295
Протоколирование и блокировка…………………………………………………………………………………………… 297
Журналы контроля………………………………………………………………………………………………………. 297
Записи под ключ…………………………………………………………………………………………………………… 298
Резюме………………………………………………………………………………………………………………………………………. 299
Упражнения………………………………………………………………………………………………………………………… 300
Глава 10. Предотвращение распространенных ошибок проектирования 302
Низкий уровень подготовки……………………………………………………………………………………………………. 302
Некачественная документация………………………………………………………………………………………………. 303
Неудачные стандарты именования……………………………………………………………………………………….. 303
Недостаточно масштабное мышление………………………………………………………………………………….. 305
Неумение предусматривать изменения…………………………………………………………………………………. 307
Чрезмерная нормализация………………………………………………………………………………………………………. 310
Недостаточная нормализация……………………………………………………………………………………………….. 310
Недостаточно тщательное тестирование……………………………………………………………………………… 311
Тревога из-за производительности………………………………………………………………………………………… 312
Разносортные таблицы……………………………………………………………………………………………………………. 312
Несоблюдение ограничений…………………………………………………………………………………………………… 315
Одержимость идентификацией……………………………………………………………………………………………….. 315
Отмененные идентификаторы……………………………………………………………………………………… 316
Как это сделать?…………………………………………………………………………………………………… 317
Отсутствие заданных естественных ключей…………………………………………………………………………. 319
Резюме………………………………………………………………………………………………………………………………………. 320
Упражнения………………………………………………………………………………………………………………………… 320
ЧАСТЬ III. Подробный анализ конкретного примера………. 323
Глава 11. Определение потребностей и требований пользователей………. 325
Встретьтесь с клиентами…………………………………………………………………………………………………………. 325
Мыслите как заказчики…………………………………………………………………………………………………………… 327
Определите, что должна делать система…………………………………………………………………… 328
Определите, как должен выглядеть проект………………………………………………………………… 330
Выясните, какие данные необходимы для пользовательского интерфейса……………. 331
Определите источник данных……………………………………………………………………………………… 332
Определите взаимосвязи между частями данных……………………………………………………… 333
Где искать данные?……………………………………………………………………………………………… 334
Как это сделать?…………………………………………………………………………………………….. 334
Определите потребности в производительности………………………………………………………. 335
Определите потребности в безопасности…………………………………………………………………… 336
Определите потребности в целостности данных………………………………………………………. 336
Инвентаризация……………………………………………………………………………………………………. 338
Как это сделать?…………………………………………………………………………………………….. 338
Напишите сценарии использования………………………………………………………………………………………. 339
Пример описания для сценария использования………………………………………………… 341
Как это сделать?…………………………………………………………………………………………….. 342
Составьте техническое задание……………………………………………………………………………………………… 343
Затребуйте обратную связь……………………………………………………………………………………………………. 344
Резюме………………………………………………………………………………………………………………………………………. 345
Упражнения………………………………………………………………………………………………………………………… 346
Глава 12. Построение модели данных………………………………………………….. 347
Построение семантических объектных моделей………………………………………………………………….. 347
Построение исходной семантической объектной модели………………………………………… 348
Пример определения класса……………………………………………………………………………….. 349
Как это сделать?…………………………………………………………………………………………….. 349
Совершенствование семантической объектной модели…………………………………………… 350
Моделирование сущностей и связей……………………………………………………………………………………… 353
Построение ER-диаграммы…………………………………………………………………………………………. 353
Сущность Course имеет значение……………………………………………………………………….. 354
Как это сделать?…………………………………………………………………………………………….. 354
Построение комбинированной ER-диаграммы………………………………………………………….. 355
Усовершенствование диаграммы «сущность-связь»…………………………………………………. 356
Разрываем связи……………………………………………………………………………………………………. 357
Как это сделать?…………………………………………………………………………………………….. 358
Построение реляционной модели…………………………………………………………………………………………… 359
Идентификация идентификаторов………………………………………………………………………………. 361
Как это сделать?…………………………………………………………………………………………………… 361
Объединим все вместе……………………………………………………………………………………………………………… 362
Резюме………………………………………………………………………………………………………………………………………. 363
Упражнения………………………………………………………………………………………………………………………… 364
Глава 13. Извлечение бизнес-правил……………………………………………………. 366
Определение бизнес-правил……………………………………………………………………………………………………. 366
Таблица Courses……………………………………………………………………………………………………………. 367
Ограничения адресов…………………………………………………………………………………………… 369
Как это сделать?…………………………………………………………………………………………….. 369
Таблица CustomerCourses……………………………………………………………………………………………. 370
Таблица Customers……………………………………………………………………………………………………….. 370
Таблица Pets………………………………………………………………………………………………………………….. 370
Таблица Employees………………………………………………………………………………………………………. 371
Таблица Orders……………………………………………………………………………………………………………… 371
Таблица OrderItems………………………………………………………………………………………………………. 371
Таблица InventoryItems……………………………………………………………………………………………….. 372
Таблица TimeEntries…………………………………………………………………………………………………….. 372
Таблица Shifts……………………………………………………………………………………………………………….. 373
Таблица Persons……………………………………………………………………………………………………………. 373
Таблица Phones…………………………………………………………………………………………………………….. 373
Таблица Vendors…………………………………………………………………………………………………………… 374
Построение новой реляционной модели……………………………………………………………………………….. 374
Резюме………………………………………………………………………………………………………………………………………. 375
Упражнения………………………………………………………………………………………………………………………… 375
Глава 14. Нормализация и уточнение…………………………………………………… 377
Повышение гибкости……………………………………………………………………………………………………………….. 377
Проверка первой нормальной формы……………………………………………………………………………………. 379
Приведение к первой нормальной форме…………………………………………………………………… 381
Как это сделать?…………………………………………………………………………………………………… 382
Проверка второй нормальной формы……………………………………………………………………………………. 383
Таблица Pets………………………………………………………………………………………………………………….. 383
Таблица OrderItems………………………………………………………………………………………………………. 384
Как это сделать?…………………………………………………………………………………………………… 384
Таблица TimeEntries…………………………………………………………………………………………………….. 385
Проверка третьей нормальной формы…………………………………………………………………………………… 386
Резюме………………………………………………………………………………………………………………………………………. 388
Упражнения………………………………………………………………………………………………………………………… 389
ЧАСТЬ IV. Примеры программ……………………………………………………. 391
Глава 15. Обзор примеров…………………………………………………………………….. 393
Выбор инструментов……………………………………………………………………………………………………………….. 393
Jupyter Notebook………………………………………………………………………………………………………………………. 395
Visual Studio……………………………………………………………………………………………………………………………… 397
Адаптеры баз данных……………………………………………………………………………………………………………… 398
Пакеты в Jupyter Notebook…………………………………………………………………………………………… 399
Пакеты в Visual Studio………………………………………………………………………………………………….. 401
Пароли программ…………………………………………………………………………………………………………………….. 403
Резюме………………………………………………………………………………………………………………………………………. 404
Упражнения………………………………………………………………………………………………………………………… 404
Глава 16. MariaDB на Python………………………………………………………………… 405
Установите MariaDB……………………………………………………………………………………………………………….. 406
Запустите HeidiSQL…………………………………………………………………………………………………………………. 407
Напишите программу……………………………………………………………………………………………………………… 410
Установите модуль pymysql………………………………………………………………………………………… 410
Создайте базу данных…………………………………………………………………………………………………. 410
Определите таблицы……………………………………………………………………………………………………. 413
Добавьте данные………………………………………………………………………………………………………….. 415
Получите данные………………………………………………………………………………………………………….. 417
Резюме………………………………………………………………………………………………………………………………………. 419
Упражнения………………………………………………………………………………………………………………………… 420
Глава 17. MariaDB на C#……………………………………………………………………… 421
Напишите программу……………………………………………………………………………………………………………… 421
Установите MySqlConnector……………………………………………………………………………………….. 422
Создайте базу данных…………………………………………………………………………………………………. 423
Определите таблицы……………………………………………………………………………………………………. 425
Создайте данные………………………………………………………………………………………………………….. 427
Получите данные………………………………………………………………………………………………………….. 431
Резюме………………………………………………………………………………………………………………………………………. 433
Упражнения………………………………………………………………………………………………………………………… 433
Глава 18. PostgreSQL на Python……………………………………………………………. 435
Установите PostgreSQL……………………………………………………………………………………………………………. 436
Запустите pgAdmin………………………………………………………………………………………………………………….. 437
Спроектируйте базу данных……………………………………………………………………………………….. 437
Создайте пользователя………………………………………………………………………………………………… 437
Создайте базу данных…………………………………………………………………………………………………. 439
Определите таблицы……………………………………………………………………………………………………. 440
Определите таблицу customers……………………………………………………………………………. 440
Определите таблицу orders…………………………………………………………………………………. 443
Определите таблицу order_items………………………………………………………………………… 444
Напишите программу……………………………………………………………………………………………………………… 445
Установите Psycopg……………………………………………………………………………………………………… 445
Подключитесь к базе данных………………………………………………………………………………………. 446
Удалите старые данные………………………………………………………………………………………………. 446
Создайте данные о клиентах………………………………………………………………………………………. 447
Создайте данные заказа………………………………………………………………………………………………. 448
Создайте данные элементов заказа……………………………………………………………………………. 450
Закройте соединение……………………………………………………………………………………………………. 451
Выполните запросы……………………………………………………………………………………………………… 451
Резюме………………………………………………………………………………………………………………………………………. 453
Упражнения………………………………………………………………………………………………………………………… 454
Глава 19. PostgreSQL на C#………………………………………………………………….. 456
Напишите программу……………………………………………………………………………………………………………… 456
Установите Npgsql………………………………………………………………………………………………………… 456
Подключитесь к базе данных………………………………………………………………………………………. 457
Удалите старые данные………………………………………………………………………………………………. 458
Создайте данные о клиентах………………………………………………………………………………………. 459
Создайте данные заказа………………………………………………………………………………………………. 460
Создайте данные позиций заказа……………………………………………………………………………….. 462
Отобразите заказы……………………………………………………………………………………………………….. 464
Резюме………………………………………………………………………………………………………………………………………. 467
Упражнения………………………………………………………………………………………………………………………… 467
Глава 20. Neo4j auraDB на Python………………………………………………………… 470
Установите neo4j auraDB……………………………………………………………………………………………………….. 471
Узлы и связи……………………………………………………………………………………………………………………………… 473
Cypher……………………………………………………………………………………………………………………………………….. 473
Напишите программу……………………………………………………………………………………………………………… 474
Установите адаптер базы данных Neo4j……………………………………………………………………. 474
Методы действий………………………………………………………………………………………………………….. 475
Метод delete_all_nodes……………………………………………………………………………………….. 475
Метод make_node…………………………………………………………………………………………………. 476
Метод make_link…………………………………………………………………………………………………… 477
Метод execute_node_query………………………………………………………………………………….. 477
Метод find_path……………………………………………………………………………………………………. 478
Методы схемы организации………………………………………………………………………………………… 479
Метод build_org_chart………………………………………………………………………………………… 479
Метод query_org_chart………………………………………………………………………………………… 480
Основная программа……………………………………………………………………………………………………. 481
Резюме………………………………………………………………………………………………………………………………………. 483
Упражнения………………………………………………………………………………………………………………………… 484
Глава 21. Neo4j auraDB на C#………………………………………………………………. 486
Напишите программу……………………………………………………………………………………………………………… 487
Установите драйвер Neo4j…………………………………………………………………………………………… 487
Методы действий………………………………………………………………………………………………………….. 488
Метод DeleteAllNodes………………………………………………………………………………………….. 489
Метод MakeNode………………………………………………………………………………………………….. 489
Метод MakeLink……………………………………………………………………………………………………. 490
Метод ExecuteNodeQuery…………………………………………………………………………………….. 491
Метод FindPath……………………………………………………………………………………………………. 492
Методы схемы организации………………………………………………………………………………………… 493
Метод BuildOrgChart…………………………………………………………………………………………… 493
Метод QueryOrgChart………………………………………………………………………………………….. 494
Основная программа……………………………………………………………………………………………………. 495
Резюме………………………………………………………………………………………………………………………………………. 497
Упражнения………………………………………………………………………………………………………………………… 498
Глава 22. MongoDB Atlas на Python………………………………………………………. 499
Не нормальная, но и не аномальная………………………………………………………………………………………. 499
XML, JSON и BSON………………………………………………………………………………………………………………….. 500
Установите MongoDB Atlas…………………………………………………………………………………………………….. 502
Найдите код подключения……………………………………………………………………………………………………… 504
Напишите программу……………………………………………………………………………………………………………… 507
Установите адаптер базы данных PyMongo……………………………………………………………… 507
Вспомогательные методы……………………………………………………………………………………………. 508
Метод person_string…………………………………………………………………………………………….. 508
Метод connect_to_db…………………………………………………………………………………………… 509
Метод delete_old_data…………………………………………………………………………………………. 510
Метод create_data………………………………………………………………………………………………… 510
Метод query_data…………………………………………………………………………………………………. 512
Основная программа……………………………………………………………………………………………………. 518
Резюме………………………………………………………………………………………………………………………………………. 518
Упражнения………………………………………………………………………………………………………………………… 519
Глава 23. MongoDB Atlas на C#…………………………………………………………….. 521
Напишите программу……………………………………………………………………………………………………………… 522
Установите адаптер базы данных MongoDB…………………………………………………………….. 522
Вспомогательные методы……………………………………………………………………………………………. 522
Метод PersonString………………………………………………………………………………………………. 523
Метод DeleteOldData…………………………………………………………………………………………… 524
Метод CreateData………………………………………………………………………………………………… 525
Метод QueryData………………………………………………………………………………………………….. 527
Основная программа……………………………………………………………………………………………………. 531
Резюме………………………………………………………………………………………………………………………………………. 534
Упражнения………………………………………………………………………………………………………………………… 534
Глава 24. Apache Ignite на Python…………………………………………………………. 536
Установите Apache Ignite………………………………………………………………………………………………………… 537
Запустите узел…………………………………………………………………………………………………………………………. 537
Без сохранения……………………………………………………………………………………………………………… 538
С сохранением………………………………………………………………………………………………………………. 539
Напишите программу……………………………………………………………………………………………………………… 540
Установите адаптер базы данных pyignite………………………………………………………………… 540
Определите класс Building………………………………………………………………………………………….. 540
Сохраните данные……………………………………………………………………………………………………….. 541
Считайте данные………………………………………………………………………………………………………….. 542
Продемонстрируйте энергозависимые данные…………………………………………………………. 543
Продемонстрируйте энергонезависмые данные……………………………………………………….. 543
Резюме………………………………………………………………………………………………………………………………………. 544
Упражнения………………………………………………………………………………………………………………………… 544
Глава 25. Apache Ignite на C#……………………………………………………………….. 546
Напишите программу……………………………………………………………………………………………………………… 547
Установите адаптер базы данных Ignite……………………………………………………………………. 547
Метод main программы……………………………………………………………………………………………….. 548
Класс Building………………………………………………………………………………………………………………. 549
Метод WriteData…………………………………………………………………………………………………………… 549
Метод ReadData……………………………………………………………………………………………………………. 551
Продемонстрируйте энергозависимые данные…………………………………………………………. 552
Продемонстрируйте энергонезависимые данные……………………………………………………… 553
Резюме………………………………………………………………………………………………………………………………………. 553
Упражнения………………………………………………………………………………………………………………………… 554
ЧАСТЬ V. Темы для углубленного изучения………………………. 555
Глава 26. Введение в SQL…………………………………………………………………….. 557
История…………………………………………………………………………………………………………………………………….. 559
Поиск дополнительной информации……………………………………………………………………………………… 559
Стандарты………………………………………………………………………………………………………………………………… 560
Составные команды………………………………………………………………………………………………………………… 561
Базовый синтаксис…………………………………………………………………………………………………………………… 563
Обзор команд……………………………………………………………………………………………………………………………. 564
Оператор CREATE TABLE……………………………………………………………………………………………………….. 567
Постройте таблицу………………………………………………………………………………………………………. 569
Как это сделать?…………………………………………………………………………………………………… 570
Оператор CREATE INDEX……………………………………………………………………………………………………….. 572
Оператор DROP……………………………………………………………………………………………………………………….. 573
Оператор INSERT…………………………………………………………………………………………………………………….. 573
Оператор SELECT……………………………………………………………………………………………………………………. 575
Выражение SELECT……………………………………………………………………………………………………… 575
Выражение FROM………………………………………………………………………………………………………… 576
Выражение WHERE………………………………………………………………………………………………………. 580
Выражение GROUP BY…………………………………………………………………………………………………. 580
Выражение ORDER BY…………………………………………………………………………………………………. 580
Сделайте свой выбор…………………………………………………………………………………………… 581
Как это сделать?…………………………………………………………………………………………….. 581
Оператор UPDATE…………………………………………………………………………………………………………………… 582
Пробуем обновления на вкус………………………………………………………………………………………. 583
Как это сделать?…………………………………………………………………………………………………… 583
Оператор DELETE……………………………………………………………………………………………………………………. 584
Резюме………………………………………………………………………………………………………………………………………. 584
Упражнения………………………………………………………………………………………………………………………… 584
Глава 27. Создание баз данных с помощью сценариев SQL…………………. 588
Зачем тратить время на сценарии?………………………………………………………………………………………… 588
Категории сценариев………………………………………………………………………………………………………………. 589
Сценарии создания базы данных……………………………………………………………………………….. 589
Основные сценарии инициализации…………………………………………………………………………… 589
Сценарии инициализации данных……………………………………………………………………………… 589
Сценарии очистки………………………………………………………………………………………………………… 590
Сохраняйте сценарии……………………………………………………………………………………………………………… 590
Упорядочивание команд SQL…………………………………………………………………………………………………. 591
Упорядочьте таблицы………………………………………………………………………………………………….. 594
Как это сделать?…………………………………………………………………………………………………… 594
Резюме………………………………………………………………………………………………………………………………………. 600
Упражнения………………………………………………………………………………………………………………………… 601
Глава 28. Обслуживание базы данных…………………………………………………. 602
Резервное копирование……………………………………………………………………………………………………………. 603
Составьте план резервного копирования…………………………………………………………………… 605
Как это сделать?…………………………………………………………………………………………………… 605
Хранение данных…………………………………………………………………………………………………………………….. 607
Восстановление базы данных………………………………………………………………………………………………… 607
Уплотнение базы данных……………………………………………………………………………………………………….. 608
Управление производительностью………………………………………………………………………………………… 608
Ключи к успеху…………………………………………………………………………………………………………….. 610
Как это сделать?…………………………………………………………………………………………………… 610
Резюме………………………………………………………………………………………………………………………………………. 612
Упражнения………………………………………………………………………………………………………………………… 613
Глава 29. Безопасность баз данных……………………………………………………… 614
Необходимый уровень безопасности…………………………………………………………………………………….. 614
Пароли………………………………………………………………………………………………………………………………………. 615
Базы данных с единым паролем…………………………………………………………………………………. 615
Индивидуальные пароли……………………………………………………………………………………………… 616
Пароли операционной системы………………………………………………………………………………….. 616
Надежные пароли………………………………………………………………………………………………………… 616
Привилегии……………………………………………………………………………………………………………………………….. 618
Минимум привилегированных……………………………………………………………………………………. 622
Как это сделать?…………………………………………………………………………………………………… 623
Исходная конфигурация и привилегии………………………………………………………………………………….. 623
Чрезмерная безопасность……………………………………………………………………………………………………….. 624
Физическая безопасность……………………………………………………………………………………………………….. 625
Резюме………………………………………………………………………………………………………………………………………. 627
Упражнения………………………………………………………………………………………………………………………… 627
ПРИЛОЖЕНИЯ…………………………………………………………………………………… 629
Приложение 1. Ответы к упражнениям………………………………………………… 631
Глава 1. Цели проектирования баз данных…………………………………………………………………………… 631
Упражнение 1……………………………………………………………………………………………………………….. 631
Упражнение 2……………………………………………………………………………………………………………….. 633
Упражнение 3……………………………………………………………………………………………………………….. 633
Упражнение 4……………………………………………………………………………………………………………….. 633
Упражнение 5……………………………………………………………………………………………………………….. 635
Упражнение 6……………………………………………………………………………………………………………….. 636
Упражнение 7……………………………………………………………………………………………………………….. 636
Упражнение 8……………………………………………………………………………………………………………….. 637
Упражнение 9……………………………………………………………………………………………………………….. 637
Упражнение 10……………………………………………………………………………………………………………… 638
Глава 2. Обзор реляционных баз данных……………………………………………………………………………… 638
Упражнение 1……………………………………………………………………………………………………………….. 638
Упражнение 2……………………………………………………………………………………………………………….. 638
Упражнение 3……………………………………………………………………………………………………………….. 638
Упражнение 4……………………………………………………………………………………………………………….. 639
Упражнение 5……………………………………………………………………………………………………………….. 639
Упражнение 6……………………………………………………………………………………………………………….. 639
Упражнение 7……………………………………………………………………………………………………………….. 639
Упражнение 8……………………………………………………………………………………………………………….. 640
Упражнение 9……………………………………………………………………………………………………………….. 640
Упражнение 10……………………………………………………………………………………………………………… 640
Глава 3. Обзор NOSQL…………………………………………………………………………………………………………….. 640
Упражнение 1……………………………………………………………………………………………………………….. 640
Упражнение 2……………………………………………………………………………………………………………….. 641
Упражнение 3……………………………………………………………………………………………………………….. 641
Упражнение 4……………………………………………………………………………………………………………….. 642
Упражнение 5……………………………………………………………………………………………………………….. 642
Упражнение 6……………………………………………………………………………………………………………….. 642
Упражнение 7……………………………………………………………………………………………………………….. 642
Упражнение 8……………………………………………………………………………………………………………….. 642
Упражнение 9……………………………………………………………………………………………………………….. 642
Упражнение 10……………………………………………………………………………………………………………… 643
Упражнение 11……………………………………………………………………………………………………………… 643
Упражнение 12……………………………………………………………………………………………………………… 643
Упражнение 13……………………………………………………………………………………………………………… 644
Упражнение 14……………………………………………………………………………………………………………… 644
Глава 4. Понимание потребностей пользователей………………………………………………………………. 645
Упражнение 1……………………………………………………………………………………………………………….. 645
Упражнение 2……………………………………………………………………………………………………………….. 645
Упражнение 3……………………………………………………………………………………………………………….. 646
Упражнение 4……………………………………………………………………………………………………………….. 646
Упражнение 5……………………………………………………………………………………………………………….. 646
Упражнение 6……………………………………………………………………………………………………………….. 646
Упражнение 7……………………………………………………………………………………………………………….. 647
Упражнение 8……………………………………………………………………………………………………………….. 647
Упражнение 9……………………………………………………………………………………………………………….. 648
Упражнение 10……………………………………………………………………………………………………………… 648
Упражнение 11……………………………………………………………………………………………………………… 650
Глава 5. Перевод потребностей пользователей в модели данных……………………………………… 650
Упражнение 1……………………………………………………………………………………………………………….. 650
Упражнение 2……………………………………………………………………………………………………………….. 650
Упражнение 3……………………………………………………………………………………………………………….. 653
Упражнение 4……………………………………………………………………………………………………………….. 654
Упражнение 5……………………………………………………………………………………………………………….. 655
Упражнение 6……………………………………………………………………………………………………………….. 656
Упражнение 7……………………………………………………………………………………………………………….. 657
Упражнение 8……………………………………………………………………………………………………………….. 657
Глава 6. Извлечение бизнес-правил……………………………………………………………………………………….. 658
Упражнение 1……………………………………………………………………………………………………………….. 658
Упражнение 2……………………………………………………………………………………………………………….. 661
Упражнение 3……………………………………………………………………………………………………………….. 663
Упражнение 4……………………………………………………………………………………………………………….. 664
Глава 7. Нормализация данных…………………………………………………………………………………………….. 665
Упражнение 1……………………………………………………………………………………………………………….. 665
Упражнение 2……………………………………………………………………………………………………………….. 667
Упражнение 3……………………………………………………………………………………………………………….. 667
Упражнение 4……………………………………………………………………………………………………………….. 668
Упражнение 5……………………………………………………………………………………………………………….. 669
Упражнение 6……………………………………………………………………………………………………………….. 669
Глава 8. Проектирование баз данных для поддержки программного обеспечения………….. 670
Упражнение 1……………………………………………………………………………………………………………….. 670
Упражнение 2……………………………………………………………………………………………………………….. 671
Упражнение 3……………………………………………………………………………………………………………….. 671
Упражнение 4……………………………………………………………………………………………………………….. 671
Глава 9. Использование общих шаблонов проектирования……………………………………………….. 672
Упражнение 1……………………………………………………………………………………………………………….. 672
Упражнение 2……………………………………………………………………………………………………………….. 672
Упражнение 3……………………………………………………………………………………………………………….. 672
Упражнение 4……………………………………………………………………………………………………………….. 673
Упражнение 5……………………………………………………………………………………………………………….. 673
Упражнение 6……………………………………………………………………………………………………………….. 674
Упражнение 7……………………………………………………………………………………………………………….. 675
Упражнение 8……………………………………………………………………………………………………………….. 675
Упражнение 9……………………………………………………………………………………………………………….. 676
Глава 10. Предотвращение распространенных ошибок проектирования…………………………. 676
Упражнение 1……………………………………………………………………………………………………………….. 676
Упражнение 2……………………………………………………………………………………………………………….. 677
Упражнение 3……………………………………………………………………………………………………………….. 677
Упражнение 4……………………………………………………………………………………………………………….. 678
Глава 11. Определение потребностей и требований пользователей………………………………….. 679
Упражнение 1……………………………………………………………………………………………………………….. 679
Упражнение 2……………………………………………………………………………………………………………….. 680
Упражнение 3……………………………………………………………………………………………………………….. 680
Упражнение 4……………………………………………………………………………………………………………….. 681
Упражнение 5……………………………………………………………………………………………………………….. 682
Упражнение 6……………………………………………………………………………………………………………….. 682
Глава 12. Построение модели данных…………………………………………………………………………………… 683
Упражнение 1……………………………………………………………………………………………………………….. 683
Упражнение 2……………………………………………………………………………………………………………….. 683
Упражнение 3……………………………………………………………………………………………………………….. 683
Упражнение 4……………………………………………………………………………………………………………….. 684
Упражнение 5……………………………………………………………………………………………………………….. 684
Упражнение 6……………………………………………………………………………………………………………….. 684
Упражнение 7……………………………………………………………………………………………………………….. 684
Упражнение 8……………………………………………………………………………………………………………….. 685
Упражнение 9……………………………………………………………………………………………………………….. 685
Упражнение 10……………………………………………………………………………………………………………… 685
Упражнение 11……………………………………………………………………………………………………………… 685
Упражнение 12……………………………………………………………………………………………………………… 686
Глава 13. Извлечение бизнес-правил…………………………………………………………………………………….. 686
Упражнение 1……………………………………………………………………………………………………………….. 686
Упражнение 2……………………………………………………………………………………………………………….. 687
Упражнение 3……………………………………………………………………………………………………………….. 687
Упражнение 4……………………………………………………………………………………………………………….. 688
Упражнение 5……………………………………………………………………………………………………………….. 689
Глава 14. Нормализация и уточнение…………………………………………………………………………………… 689
Упражнение 1……………………………………………………………………………………………………………….. 689
Упражнение 2……………………………………………………………………………………………………………….. 690
Упражнение 3……………………………………………………………………………………………………………….. 691
Упражнение 4……………………………………………………………………………………………………………….. 691
Глава 15. Обзор примеров………………………………………………………………………………………………………. 692
Упражнение 1……………………………………………………………………………………………………………….. 692
Упражнение 2……………………………………………………………………………………………………………….. 692
Упражнение 3……………………………………………………………………………………………………………….. 693
Упражнение 4……………………………………………………………………………………………………………….. 693
Упражнение 5……………………………………………………………………………………………………………….. 693
Упражнение 6……………………………………………………………………………………………………………….. 694
Глава 16. MariaDB на Python…………………………………………………………………………………………………. 694
Упражнение 1……………………………………………………………………………………………………………….. 694
Упражнение 2……………………………………………………………………………………………………………….. 694
Упражнение 3……………………………………………………………………………………………………………….. 694
Упражнение 4……………………………………………………………………………………………………………….. 694
Упражнение 5……………………………………………………………………………………………………………….. 695
Упражнение 6……………………………………………………………………………………………………………….. 696
Глава 17. MariaDB на C#………………………………………………………………………………………………………… 696
Упражнение 1……………………………………………………………………………………………………………….. 696
Упражнение 2……………………………………………………………………………………………………………….. 696
Упражнение 3……………………………………………………………………………………………………………….. 697
Упражнение 4……………………………………………………………………………………………………………….. 697
Упражнение 5……………………………………………………………………………………………………………….. 697
Упражнение 6……………………………………………………………………………………………………………….. 699
Глава 18. PostgreSQL на Python……………………………………………………………………………………………… 699
Упражнение 1……………………………………………………………………………………………………………….. 699
Упражнение 2……………………………………………………………………………………………………………….. 699
Упражнение 3……………………………………………………………………………………………………………….. 700
Упражнение 4……………………………………………………………………………………………………………….. 700
Упражнение 5……………………………………………………………………………………………………………….. 701
Упражнение 6……………………………………………………………………………………………………………….. 701
Упражнение 7……………………………………………………………………………………………………………….. 702
Глава 19. PostgreSQL на C#…………………………………………………………………………………………………….. 702
Упражнение 1……………………………………………………………………………………………………………….. 702
Упражнение 2……………………………………………………………………………………………………………….. 702
Упражнение 3……………………………………………………………………………………………………………….. 705
Упражнение 4……………………………………………………………………………………………………………….. 705
Упражнение 5……………………………………………………………………………………………………………….. 705
Упражнение 6……………………………………………………………………………………………………………….. 706
Упражнение 7……………………………………………………………………………………………………………….. 706
Глава 20. Neo4J AuraDB на Python………………………………………………………………………………………… 707
Упражнение 1……………………………………………………………………………………………………………….. 707
Упражнение 2……………………………………………………………………………………………………………….. 707
Упражнение 3……………………………………………………………………………………………………………….. 707
Упражнение 4……………………………………………………………………………………………………………….. 707
Упражнение 5……………………………………………………………………………………………………………….. 707
Глава 21. Neo4J AuraDB на С#……………………………………………………………………………………………….. 708
Упражнение 1……………………………………………………………………………………………………………….. 708
Упражнение 2……………………………………………………………………………………………………………….. 708
Упражнение 3……………………………………………………………………………………………………………….. 708
Упражнение 4……………………………………………………………………………………………………………….. 708
Упражнение 5……………………………………………………………………………………………………………….. 708
Упражнение 6……………………………………………………………………………………………………………….. 708
Упражнение 7……………………………………………………………………………………………………………….. 708
Глава 22. MongoDB Atlas на Python………………………………………………………………………………………. 709
Упражнение 1……………………………………………………………………………………………………………….. 709
Упражнение 2……………………………………………………………………………………………………………….. 709
Упражнение 3……………………………………………………………………………………………………………….. 709
Упражнение 4……………………………………………………………………………………………………………….. 710
Глава 23. MongoDB Atlas на C#……………………………………………………………………………………………… 710
Упражнение 1……………………………………………………………………………………………………………….. 710
Упражнение 2……………………………………………………………………………………………………………….. 710
Упражнение 3……………………………………………………………………………………………………………….. 710
Упражнение 4……………………………………………………………………………………………………………….. 711
Глава 24. Apache Ignite на Python………………………………………………………………………………………….. 711
Упражнение 1……………………………………………………………………………………………………………….. 711
Упражнение 2……………………………………………………………………………………………………………….. 711
Упражнение 3……………………………………………………………………………………………………………….. 712
Упражнение 4……………………………………………………………………………………………………………….. 712
Глава 25. Apache Ignite на C#…………………………………………………………………………………………………. 713
Упражнение 1……………………………………………………………………………………………………………….. 713
Упражнение 2……………………………………………………………………………………………………………….. 714
Упражнение 3……………………………………………………………………………………………………………….. 714
Упражнение 4……………………………………………………………………………………………………………….. 715
Глава 26. Введение в SQL……………………………………………………………………………………………………….. 715
Упражнение 1……………………………………………………………………………………………………………….. 715
Упражнение 2……………………………………………………………………………………………………………….. 716
Упражнение 3……………………………………………………………………………………………………………….. 717
Упражнение 4……………………………………………………………………………………………………………….. 717
Упражнение 5……………………………………………………………………………………………………………….. 718
Глава 27. Создание баз данных с помощью сценариев SQL……………………………………………….. 718
Упражнение 1……………………………………………………………………………………………………………….. 718
Упражнение 2……………………………………………………………………………………………………………….. 718
Глава 28. Обслуживание базы данных………………………………………………………………………………….. 721
Упражнение 1……………………………………………………………………………………………………………….. 721
Упражнение 2……………………………………………………………………………………………………………….. 721
Упражнение 3……………………………………………………………………………………………………………….. 722
Глава 29. Безопасность баз данных………………………………………………………………………………………. 722
Упражнение 1……………………………………………………………………………………………………………….. 722
Упражнение 2……………………………………………………………………………………………………………….. 724
Упражнение 3……………………………………………………………………………………………………………….. 725
Приложение 2. Примеры реляционных проектных решений……………….. 727
Книги…………………………………………………………………………………………………………………………………………. 729
Фильмы……………………………………………………………………………………………………………………………………… 731
Музыка……………………………………………………………………………………………………………………………………… 732
Управление документами……………………………………………………………………………………………………….. 734
Заказы клиентов………………………………………………………………………………………………………………………. 735
Смены и табели учета рабочего времени……………………………………………………………………………… 735
Сотрудники, проекты и отделы………………………………………………………………………………………………. 736
Навыки и квалификация сотрудников……………………………………………………………………………………. 737
Аренда одинаковых объектов………………………………………………………………………………………………… 738
Аренда уникальных объектов………………………………………………………………………………………………… 739
Студенты, учебные курсы и оценки……………………………………………………………………………………….. 740
Команды…………………………………………………………………………………………………………………………………… 742
Индивидуальные виды спорта……………………………………………………………………………………………….. 743
Автопарки…………………………………………………………………………………………………………………………………. 743
Контакты………………………………………………………………………………………………………………………………….. 746
Пассажиры……………………………………………………………………………………………………………………………….. 747
Рецепты…………………………………………………………………………………………………………………………………….. 749
Приложение 3. Описание файлового архива………………………………………… 751
Глоссарий…………………………………………………………………………………………….. 752
Предметный указатель…………………………………………………………………………. 766

Род Стивенс (Rod Stephens)— программист и преподаватель, широко известный автор 37 технических книг и более 250 статей о языках программирования C#, Java и других. Его читательская аудитория насчитывает миллионы человек, постоянно пользующихся предложенными им решениями, приёмами и образцами кода.
