Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Технологии проектирования баз данных

Покупка
Артикул: 746802.02.99
Доступ онлайн
690 ₽
В корзину
Книга основана на материалах лекций и практических занятий, подготовленных автором и объединяет теоретические основы и практический аспект разработки современных баз данных (БД). Основная задача издания — предоставить читателю профессиональную методику проектирования БД. Страницы книги проведут читателя по всем этапам жизненного цикла проекта баз данных от момента возникновения идеи разработки программного обеспечения до этапа ввода готового продукта в эксплуатацию, подробно объясняя каждый шаг. Издание отличает глубина и ясность изложения материала, поэтому издание окажется полезным как для студентов и преподавателей ИТ-специальностей, так и для разработчиков баз данных и программистов, стремящихся самостоятельно освоить технологические приемы проектирования современных БД.
Осипов, Д. Л. Технологии проектирования баз данных : практическое руководство / Д. Л. Осипов. - Москва : ДМК Пресс, 2019. - 498 с. - ISBN 978-5-97060-737-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/2083418 (дата обращения: 28.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Осипов Д. Л. 

Технологии 
проектирования 
баз данных

Москва, 2019
УДК   004.65
ББК   32.972.134
О74

О74   Осипов Д. Л. 
Технологии проектирования баз данных. – М.: ДМК Пресс, 2019. – 
498 с.: ил.

            ISBN 978-5-97060-737-4

Книга основана на материалах лекций и практических занятий, подготовленных 
автором и объединяет теоретические основы и практический аспект разработки 
современных баз данных (БД).
Основная задача издания — предоставить читателю профессиональную методику 
проектирования БД. Страницы книги проведут читателя по всем этапам 
жизненного цикла проекта баз данных от момента возникновения идеи разработки 
программного обеспечения до этапа ввода готового продукта в эксплуатацию, 
подробно объясняя каждый шаг.
Издание отличает глубина и ясность изложения материала, поэтому издание 
окажется полезным как для студентов и преподавателей ИТ-специальностей, так 
и для разработчиков баз данных и программистов, стремящихся самостоятельно 
освоить технологические приемы проектирования современных БД.

                                                                                                    УДК  004.65
                                                                                                    ББК  32.972.134

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

                                                                         © Осипов Д. Л., 2019
ISBN 978-5-97060-737-4                                   © Оформление, издание ДМК Пресс, 2019
Оглавление

Введение ...............................................................................................................................12

Соглашения .........................................................................................................................................13

Глава 1. Эволюция баз данных ..........................................................................................14

Электронные картотеки .................................................................................................................16

Принцип построения систем файлов ..............................................................................................17
Недостатки систем файлов .................................................................................................................18
Пути устранения недостатков систем файлов .............................................................................22

Что такое база данных? .................................................................................................................23
Эволюция моделей БД ...................................................................................................................24

Необходимость моделирования .......................................................................................................26
Иерархическая модель .........................................................................................................................27
Сетевая модель .........................................................................................................................................30
Попытки разработки стандарта БД ..................................................................................................32
Реляционная модель ..............................................................................................................................34
Объектно-ориентированная модель ...............................................................................................36
Слабоструктурированные данные ...................................................................................................38
Документ-ориентированная модель ...............................................................................................38

Резюме ..................................................................................................................................................39

Вопросы для самопроверки ...............................................................................................................39

Глава 2. Система управления базами данных .................................................................41

Функционал СУБД ............................................................................................................................42
Компоненты СУБД ............................................................................................................................45

Системный каталог .................................................................................................................................48

Архитектурные решения доступа к БД ...................................................................................48

Файл-сервер ..............................................................................................................................................49
Клиент-сервер ..........................................................................................................................................50
Распределенная система ......................................................................................................................54

Резюме ..................................................................................................................................................55

Вопросы для самопроверки ...............................................................................................................56

Глава 3. Персонал и пользователи БД ..............................................................................57

Администратор данных .................................................................................................................59
Администратор базы данных ......................................................................................................60
Разработчики баз данных.............................................................................................................61
Прикладные программисты .........................................................................................................61
 Оглавление

Конечные пользователи ................................................................................................................62
Резюме ..................................................................................................................................................63

Вопросы для самопроверки ...............................................................................................................63

Глава 4. Реляционная модель ............................................................................................65

Сущность и атрибуты ......................................................................................................................66
Тип данных и домен ........................................................................................................................69
Связь ......................................................................................................................................................71
Отношение ..........................................................................................................................................73
Ключи ....................................................................................................................................................76
Целостность данных ........................................................................................................................77

Целостность доменов ............................................................................................................................78
Целостность сущностей .........................................................................................................................79
Ссылочная целостность .........................................................................................................................80
Корпоративная целостность ...............................................................................................................80

Реляционная алгебра .....................................................................................................................81
Резюме ..................................................................................................................................................87

Вопросы для самопроверки ...............................................................................................................88

Глава 5. Технология разработки БД ..................................................................................89

Роль БД на предприятии ...............................................................................................................90
Жизненный цикл базы данных ..................................................................................................94

Этап планирования разработки БД .................................................................................................96
Этап определения и анализа требований к системе ...............................................................96
Этап проектирования БД .................................................................................................................. 100
Этап выбора СУБД ............................................................................................................................... 104
Этап создания клиентского программного обеспечения .................................................... 105
Этап тестирования и отладки .......................................................................................................... 107
Этап реализации ................................................................................................................................... 109
Этап эксплуатации и сопровождения .......................................................................................... 110

Резюме ...............................................................................................................................................111

Вопросы для самопроверки ............................................................................................................ 111

Глава 6. Концептуальное проектирование и ER-модель .............................................112

Концептуальная модель БД ......................................................................................................113
ER-модель .........................................................................................................................................113

Типы сущностей и атрибуты............................................................................................................. 114
Связи в ER-модели ............................................................................................................................... 119

Вариации ER-моделей................................................................................................................. 127
Резюме ...............................................................................................................................................129

Вопросы для самопроверки ............................................................................................................ 130
Оглавление  5

Глава 7. Логическое проектирование и нормализация ...............................................131

Первая нормальная форма .......................................................................................................134
Функциональная зависимость атрибутов ........................................................................... 137
Порядок определения первичного ключа ..........................................................................139
Вторая нормальная форма ........................................................................................................141
Третья нормальная форма.........................................................................................................142
Нормальная форма Бойса-Кодда ...........................................................................................145
Четвертая нормальная форма .................................................................................................145
Пятая нормальная форма .......................................................................................................... 147
Финал «гонки» нормальных форм .........................................................................................149
Резюме ...............................................................................................................................................149

Вопросы для самопроверки ............................................................................................................ 150

Глава 8. Физическое представление данных ................................................................151

Двухуровневая модель хранения данных ..........................................................................151
Представление реляционных данных ..................................................................................153

Поля   ......................................................................................................................................................... 154
Записи ....................................................................................................................................................... 156
Блоки ......................................................................................................................................................... 157
Файл  ......................................................................................................................................................... 157

Модификация записей ................................................................................................................158
Особенности представления объектов ................................................................................158
Журнальная информация ..........................................................................................................159
Резюме ...............................................................................................................................................160

Вопросы для самопроверки ............................................................................................................ 160

Глава 9. Индексирование ..................................................................................................162

Индексы на основе хеширования ..........................................................................................164
Индексы на основе B-деревьев ..............................................................................................168
Битовые индексы ..........................................................................................................................171
Правила назначения пользовательских индексов ..........................................................172
Избирательность индекса ..........................................................................................................173
Резюме ...............................................................................................................................................175

Вопросы для самопроверки ............................................................................................................ 175

Глава 10. Безопасность данных .......................................................................................176

Откуда исходят угрозы? ..............................................................................................................178
Политика безопасности ..............................................................................................................181
Правила защиты БД .....................................................................................................................182
 Оглавление

Идентификация, аутентификация и авторизация ................................................................... 184
Криптографическая защита ............................................................................................................. 185
Резервное копирование и восстановление .............................................................................. 188
Аудит событий безопасности .......................................................................................................... 189
Модернизация программного обеспечения ............................................................................. 191
Безопасный доступ к данным ......................................................................................................... 191
Экономическая оправданность ...................................................................................................... 192

Резюме ...............................................................................................................................................192

Вопросы для самопроверки ............................................................................................................ 193

Глава 11. Знакомимся с SQL .............................................................................................194

Возможности SQL .......................................................................................................................... 197
Типы данных SQL ..........................................................................................................................198

Предопределенные типы .................................................................................................................. 199
Непредопределенные типы ............................................................................................................. 206

Константы .........................................................................................................................................209
Преобразование данных ...........................................................................................................210
Операторы .......................................................................................................................................212

Операция присваивания ................................................................................................................... 213
Арифметические операторы ........................................................................................................... 213
Логические операторы ...................................................................................................................... 214
Операторы сравнения ........................................................................................................................ 215
Проверка на неопределенность NULL ........................................................................................ 215
Конкатенация строк ............................................................................................................................ 216

Встроенные функции ...................................................................................................................216
Резюме ............................................................................................................................................... 217

Вопросы для самопроверки ............................................................................................................ 217

Глава 12. Манипулирование данными SQL ...................................................................219

Запрос, инструкция SELECT.......................................................................................................219

Псевдонимы имен столбцов и таблиц ......................................................................................... 222
Порядок сортировки, ORDER BY .................................................................................................... 223
Условие отбора данных, предложение WHERE ....................................................................... 224
Агрегирующие функции .................................................................................................................... 232
Группировка данных GROUP BY ..................................................................................................... 233
Соединение таблиц в запросе SELECT ........................................................................................ 234

Вставка, инструкция INSERT ......................................................................................................244
Модификация, инструкция UPDATE .......................................................................................246
Удаление, инструкция DELETE .................................................................................................248
Слияние данных, инструкция MERGE ....................................................................................249
Резюме ...............................................................................................................................................250

Вопросы для самопроверки ............................................................................................................ 251
Оглавление  7

Глава 13. Определение данных средствами SQL .........................................................252

Базы данных (схемы) ...................................................................................................................252
Домены ..............................................................................................................................................255
Таблицы .............................................................................................................................................256

Внешние ключи и связи между таблицами ............................................................................... 258
Ограничения на значения столбцов ............................................................................................. 260
Столбец-перечисление ...................................................................................................................... 261
Столбец-множество ............................................................................................................................. 262
Временные таблицы ........................................................................................................................... 263
Модификация таблицы ...................................................................................................................... 264
Клонирование и копирование таблиц ........................................................................................ 265

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

Изменение индекса............................................................................................................................. 267
Удаление индекса ................................................................................................................................ 268

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

Изменение представления ............................................................................................................... 272
Удаление представления................................................................................................................... 273
Модифицируемые представления ................................................................................................ 273

Резюме ...............................................................................................................................................274

Вопросы для самопроверки ............................................................................................................ 275

Глава 14. Процедурный SQL .............................................................................................276

Элементы процедурного SQL ...................................................................................................278

Переменные ........................................................................................................................................... 278
Составной оператор BEGIN..END ................................................................................................... 281
Условные операторы .......................................................................................................................... 281
Циклы ........................................................................................................................................................ 284

Хранимые процедуры и функции ..........................................................................................288

Вызов хранимой процедуры ........................................................................................................... 291
Особенности работы с функциями ............................................................................................... 292
Изменение процедур и функций ................................................................................................... 294
Удаление процедур и функций ....................................................................................................... 294

Триггеры ............................................................................................................................................294

Контекстные переменные ................................................................................................................. 297
Примеры триггеров ............................................................................................................................. 297

Курсоры .............................................................................................................................................302

Примеры курсоров .............................................................................................................................. 305

Резюме ...............................................................................................................................................309

Вопросы для самопроверки ............................................................................................................ 310

Глава 15. Регулярные выражения в запросах ...............................................................311

Операторы для регулярных выражений .............................................................................311
 Оглавление

Основы синтаксиса .......................................................................................................................312
Регулярные выражения в запросах .......................................................................................319
Резюме ...............................................................................................................................................320

Вопросы для самопроверки ............................................................................................................ 320

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

Требования к транзакции ..........................................................................................................323
Состояние транзакции .................................................................................................................324
Проблемы совместного доступа к данным ........................................................................325
Управление параллельными транзакциями .......................................................................326

Пессимистический подход ............................................................................................................... 327
Оптимистический подход ................................................................................................................. 330

Детализация уровня блокировок ...........................................................................................333
Требования стандарта SQL ........................................................................................................334
Явное управление транзакцией ..............................................................................................335

Точки сохранения ................................................................................................................................. 338

Резюме ...............................................................................................................................................338

Вопросы для самопроверки ............................................................................................................ 339

Глава 17. Определение прав пользователей .................................................................340

Идентификатор авторизации ...................................................................................................341
Объекты защиты ............................................................................................................................342
Управление наборами привилегий .......................................................................................343

Предоставление привилегий .......................................................................................................... 344
Лишение привилегий ......................................................................................................................... 347

Резюме ...............................................................................................................................................349

Вопросы для самопроверки ............................................................................................................ 349

Глава 18. Интерактивная аналитическая обработка OLAP .........................................350

Требования к OLAP-инструментам ........................................................................................351
Хранилище данных ......................................................................................................................353
OLAP-куб ...........................................................................................................................................355
Язык многомерных выражений MDX ....................................................................................356
Резюме ...............................................................................................................................................358

Вопросы для самопроверки ............................................................................................................ 358

Глава 19. Расширяемый язык разметки XML ................................................................360

Корректность документа XML ..................................................................................................361
Построение документа XML .....................................................................................................361

Элементы документа .......................................................................................................................... 362
Атрибуты .................................................................................................................................................. 363
Оглавление  9

Пространство имен.............................................................................................................................. 364

Определение типа документа DTD ........................................................................................ 367
XML Schemas ...................................................................................................................................373

Элементы схемы ................................................................................................................................... 376
Атрибуты схемы .................................................................................................................................... 385
Подключение XML-схемы к документу ....................................................................................... 386

Поддержка XML в СУБД .............................................................................................................386
Резюме ............................................................................................................................................... 387

Вопросы для самопроверки ............................................................................................................ 388

Глава 20. Клиент-серверные БД ......................................................................................389

Модель взаимодействия открытых систем .........................................................................389
Клиент-серверные СУБД ............................................................................................................393
Модели распределения функций ...........................................................................................393
Резюме ...............................................................................................................................................396

Вопросы для самопроверки ............................................................................................................ 397

Глава 21. Особенности разработки клиента БД ............................................................398

Выбор языка программирования ...........................................................................................398

Технология доступа к данным ODBC ............................................................................................ 399
Технология доступа к данным ADO .NET .................................................................................... 400
Технология доступа к данным FireDAC........................................................................................ 402
Технология JDBC ................................................................................................................................... 404

Интерфейс клиента ......................................................................................................................405

Сколько людей, столько и мнений ................................................................................................ 406
Пользовательские критерии качества интерфейса ............................................................... 407

Рекомендации по проектированию ......................................................................................408
Резюме ...............................................................................................................................................410

Вопросы для самопроверки ............................................................................................................ 411

Глава 22. Распределенные БД .........................................................................................412

Предпосылки децентрализации .............................................................................................412

Система управления распределенной базой данных ........................................................... 414

Правила распределенных БД от Криса Дейта ..................................................................415
Аспекты проектирования распределенных БД ................................................................416

Фрагментация ........................................................................................................................................ 417
Распределение ...................................................................................................................................... 419
Репликация ............................................................................................................................................. 419

Особенности управления системным каталогом .............................................................420
Распределенные транзакции ...................................................................................................420
Преимущества распределенных БД ......................................................................................421
 Оглавление

Недостатки распределенных БД .............................................................................................422
Резюме ...............................................................................................................................................423

Вопросы для самопроверки ............................................................................................................ 424

Глава 23. Объектно-ориентированная модель данных...............................................425

Предпосылки появления модели ...........................................................................................425
Преимущества ООБД ................................................................................................................... 427
Объектно-ориентированная терминология .......................................................................428

Абстрагирование .................................................................................................................................. 430
Инкапсуляция......................................................................................................................................... 430
Модульность ........................................................................................................................................... 431
Наследование ........................................................................................................................................ 432
Идентификатор объекта .................................................................................................................... 432

Манифест объектно-ориентированных СУБД ...................................................................433
Стандарт ODMG .............................................................................................................................. 437
Что было сделано на практике? .............................................................................................. 437

Postgres .................................................................................................................................................... 437
UniSQL ....................................................................................................................................................... 438
Cache ......................................................................................................................................................... 439
Versant Object Database ..................................................................................................................... 439
ObjectStore .............................................................................................................................................. 440

Что пошло не так? .........................................................................................................................440

Недостатки ООБД ................................................................................................................................. 441

Объектно-реляционные СУБД ..................................................................................................443
Резюме ...............................................................................................................................................444

Вопросы для самопроверки ............................................................................................................ 445

Глава 24. Документ-ориентированные БД ....................................................................446

Чем плоха нормализация? ........................................................................................................446
БД ключ-значение ........................................................................................................................ 447
Документ-ориентированные БД .............................................................................................448

NoSQL ........................................................................................................................................................ 449
Распределенная обработка MapReduce ..................................................................................... 452
Сегментирование ................................................................................................................................. 453
Репликация ............................................................................................................................................. 455

Когда следует использовать документ-ориентированную модель? ........................456
Резюме ...............................................................................................................................................456

Вопросы для самопроверки ............................................................................................................ 457

Глава 25. Большие данные ...............................................................................................458

Что такое «большие данные»?.................................................................................................459
Оглавление  11

Принципы работы с большими данными ...........................................................................461
Лямбда-архитектура ....................................................................................................................461

Apache Hadoop ...................................................................................................................................... 463
Apache Storm .......................................................................................................................................... 465
Apache Impala ........................................................................................................................................ 466
Apache Kafka .......................................................................................................................................... 466

NewSQL ............................................................................................................................................. 467
Добыча данных ..............................................................................................................................468
Резюме ...............................................................................................................................................469

Вопросы для самопроверки ............................................................................................................ 470

Глава 26. Составление программной документации ...................................................471

Виды программных документов .............................................................................................472

Техническое задание .......................................................................................................................... 473
Пояснительная записка ..................................................................................................................... 475

Эксплуатационные документы ................................................................................................476

Руководство системного программиста ..................................................................................... 477
Руководство оператора ..................................................................................................................... 478

Документация в тексте программы .......................................................................................479
Резюме ...............................................................................................................................................480

Вопросы для самопроверки ............................................................................................................ 481

Приложение 1. Модель БД «Склад» ...............................................................................482

Приложение 2. Пример XML-схемы ...............................................................................483

Приложение 3. Стандарты по единой системе программной документации .........487

Список литературы ............................................................................................................489

Предметный указатель .....................................................................................................493
Введение

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

Создать эффективную базу данных весьма непросто, даже если она 
предназначена для обслуживания незначительных объемов данных и 
подлежит эксплуатации на домашнем компьютере. Сложность проекта 
возрастает на порядок, когда возникает задача разработать жизнеспособный 
коммерческий продукт, с которым смогут одновременно 
работать десятки пользователей. Именно поэтому главная задача книги – 
вооружить читателя знаниями о технологии проектирования баз 
данных. Здесь вы подчерпнете всю необходимую информацию о:

 
 задачах, решаемых с помощью БД;

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

 
 реляционной, объектно-ориентированной, документ-ориентированной (
и ряде других) моделях данных;
 
 жизненном цикле проектов БД, этапах концептуального, логичес-

кого и физического проектирования БД;
 
 особенностях физического хранения и правилах индексирования 
данных;
Соглашения  13

 
 многопользовательском доступе к данным и управлении транз-

акциями;
 
 особенностях организации доступа к БД и обеспечении безопасности 
данных;
 
 структурированном языке запросов SQL;

 
 применении в SQL регулярных выражений;

 
 расширяемом языке разметки XML;

 
 многомерном анализе данных;

 
 централизованных и распределенных БД;

 
 правилах разработки клиентских приложений БД;

 
 особенностях документирования проектов БД.

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

Соглашения

Для акцентирования внимания читателя на ключевых частях излагаемого 
материала такой текст отмечен особым форматированием:

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

Кроме того:

 
 впервые встречающиеся термины и определения выделены по-
лужирным шрифтом;
 
 впервые встречающиеся аббревиатуры комментируются;

 
 код примеров, синтаксические конструкции даны моноширинным 
шрифтом; 
 
 помимо содержания, книга включает подробный предметный 
указатель, позволяющий найти в тексте интересующую читателя 
информацию.
Глава 1

Эволюция баз данных 

Очень сложно привести пример какой-либо области науки и техники, 
сделавшей за последние полстолетия столь же значимый рывок в своем 
развитии, как современная микроэлектроника и идущие с ней рука 
об руку информационные технологии (ИТ). Более того, ИТ развиваются 
столь динамично, что даже специалистам в этой области приходится 
едва ли не каждые 5–6 лет кардинально переучиваться, дабы успеть попасть 
в последний вагон улетающего вдаль с космической скоростью 
экспресса технологий разработки программного обеспечения.
Как человек сумел за столь короткий срок совершить столь большие 
шаги в области ИТ? Чтобы ответить на этот вопрос, стоит разобраться с 
тем, что происходило в те «старозаветные» времена, в которых компьютер 
упоминался лишь в произведениях писателей-фантастов. Для этого 
нам предстоит отмотать временную ленту всего на несколько десятилетий 
назад и попасть в эпоху, когда на смену механическому арифмометру 
стали приходить первые вычислительные машины. Именно этот 
момент времени мы и станем считать началом всех начал для современных 
информационных технологий в целом и зарождающихся баз 
данных (БД) в частности.
Для полного погружения в эпоху нарисуем картину научно-вычислительной 
лаборатории 50-х годов XX века. Посреди огромного зала всеми 
цветами радуги переливается огромный ламповый монстр – электронно-
вычислительная машина. А вокруг нее вьется рой инженеров, математиков 
и программистов. Инженеры меняют радиодетали, математики 
выдумывают формулы, а программисты замыкают круг – на основе 
предложенных математиками формул закладывают в ЭВМ программы, 
чтобы последние жгли электронные лампы. Огромное количество обслуживающего 
персонала, трудящегося во благо научно-технического 
прогресса, в некоторой степени роднило обслуживание ЭВМ с ходом 
Эволюция баз данных   15

возведения Вавилонской башни (как с точки зрения процесса, так и по 
результату). 
Технология разработки прикладного программного обеспечения тех 
времен был достойна кисти Сальвадора Дали. Наивный заказчик расчетов 
приходил к математику и просил, чтобы машина ответила – сколько, 
на ее взгляд, будет равняться 2 + 2. Математик-алгоритмист в глубокой 
задумчивости рисовал алгоритм и передавал его программисту, перекладывающему 
алгоритм на низкоуровневый язык машинных команд. 
Для того чтобы ЭВМ смогла усвоить программу, последняя набивалась 
техниками на перфоленту или на перфокарты. Данные полдня загружались 
в память машины, затем она пару-другую раз зависала, шипела, 
кряхтела и, наконец, к всеобщей радости, выдавала распечатку. К этому 
времени результат уже никого не интересовал… Но согласитесь – сколь 
увлекателен сам процесс!
К 60-м годам прошлого века ЭВМ подверглись усовершенствованию 
настолько, что уже были способны не только воодушевлять писателей-
фантастов и согревать воздух, но и производить некоторые полезные 
операции, в первую очередь связанные с утомительными математическими 
расчетами. Вас интересует таблица синусов с точностью до 
18 знаков после запятой? Теперь уже не надо напрягать свой мозг – обращаемся 
за помощью в научно-вычислительную лабораторию, и всего 
лишь через час распечатка у вас в кармане. И не важно, что вместо синусов 
вам посчитали косинусы: главное – никаких умственных затрат, 
да и точность соблюдена!
Повысилась не только производительность процессоров, но и на качественно 
другой уровень перешли периферийные устройства. Теперь 
почти пропала необходимость вставки между пользователем и машиной 
гильдии разношерстных посредников. Человек, имеющий некоторое 
представление о способах общения с машиной, просто садился за 
терминал и получал возможность самостоятельно, без какой-либо посторонней 
помощи вгонять ЭВМ в ступор. Пользователи – люди разные, 
и далеко не всех интересовали расчеты траекторий баллистических ракет. 
Огромный пласт людей искал применения для машин в другой не 
менее важной области – области хранения и обработки больших массивов 
данных. Судите сами: XX век – век информации, в офисах корпораций, 
в правительственных учреждениях, в архивах и библиотеках 
хранились миллионы тонн бумаги с данными о чем угодно, начиная 
с роста поголовья пингвинов в Антарктике и заканчивая налоговыми 
декларациями от горячо любимых сограждан. Все это необходимо не 
просто хранить, а еще и максимально быстро обработать с возможно-
 Глава 1. Эволюция баз данных 

стью получения аналитических выводов, графиков и статистики. До сих 
пор все эти попытки систематизации колоссальных объемов данных, 
представленных на бумажных носителях, были в некотором родстве с 
сизифовым трудом. И вдруг, о чудо, наконец у человечества появился 
шанс вкатить камень на вершину горы! 
Именно с этого момента в сферу обязанностей вычислительных машин, 
кроме проведения расчетов, вменили еще одну задачу – хранение 
и обработку больших объемов данных. Тем более что на смену перфолентам 
и стримерам с магнитной пленкой стали приходить жесткие диски. 

Определение
Данные (data) – информация, представленная в формализованном виде, пригодном 
для передачи, интерпретации или обработки с участием человека или автоматическими средствами.

Только бесконечно наивный пользователь (метко называемый в народе 
чайником) может предположить, что ЭВМ сразу же подставила 
человечеству свое плечо и в мановение ока все бумажные архивы превратились 
в во всех отношениях совершенные базы данных. Не тут-то 
было! Вычислительные машины – это лишь инструмент, который работает 
ровно так, как его научат программисты. Поэтому примерно на 
стыке 50-х и 60-х годов XX века перед программистами была поставлена 
задача научить машины обслуживать большие объемы данных.

Электронные картотеки

Мы с вами все учились сами, а некоторые из нас даже пытались учить 
других. Любой участник образовательного процесса, находящийся 
в здравом уме и доброй памяти, понимает, что научить можно только 
тому, что в совершенстве знаешь сам. А теперь ответьте на вопрос: 
«Что в начале 60-х программисты знали о хранении больших данных?» 
Прав окажется тот, кто скажет – практически ничего! Так что нет ничего 
удивительного в том, что на первых этапах становления такой области 
знаний, как базы данных, все пошли по особому пути, который получил 
название систем, основанных на файлах (file-based system), или 
просто системы файлов. К чему столько скепсиса? Поймете через пару 
страниц, а пока рассмотрим историю болезни прототипов современных 
БД – систем файлов.
Особенность человеческого образа мышления заключается в том, 
что при поиске решений сложных проблем в первую очередь мы пыта-
Электронные картотеки  17

емся применить уже известные методики. Примеров такого подхода в 
истории предостаточно. Например, разработчики первых летательных 
аппаратов весьма настойчиво пытались обучить их махать крыльями – 
ведь именно так делали птицы. Эффективность подобного решения новаторы 
обычно проверяли сами, поэтому долго не жили. В большинстве 
своем программисты – также народ прямолинейный. Создатели прообразов 
баз данных при поиске решения огляделись вокруг и увидели, что 
везде, где есть бумажные архивы, данные хранятся в картотеках. Возьмем 
обычную городскую библиотеку тех лет. Здесь каждой книге соответствует 
отдельная бумажная карточка, в которой отражены данные об 
авторе, названии книги, годе издания, месте хранения и т. д. Карточки 
систематизированы по областям знаний и упорядочены по алфавиту. 
Любой грамотный посетитель, придя в библиотеку, за пару-тройку часов (
перелопатив с тысячу карточек) выяснял, что интересующей его 
книги там нет, и с гордо поднятой головой уходил восвояси... Плохо это 
или хорошо, но на тот момент времени другого, более рационального 
решения проблемы архивного дела не существовало. Поэтому воодушевленные 
программисты, не теряя ни одной секунды на «лишние» 
размышления, самоотверженно приступили к обучению самолетов 
махать крыльями – взялись за лобовое проектирование электронных 
анало гов бумажных картотек.

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

Принцип построения систем файлов

Рассмотрим в общих чертах идею построения систем, основанных 
на файлах. Допустим, что мы планируем создать программу, хранящую 
сведения о сотрудниках предприятия. Получивший столь ответственное 
задание программист поступает следующим образом.
Во-первых, он готовит структуру, подходящую для хранения данных. 
Для этого программист просматривает список персонала и выясняет 
максимальное число символов в фамилии, имени и отчестве (допустим, 
это значения: 20–15–15 байт). Затем программист выделяет ка-
 Глава 1. Эволюция баз данных 

кое-то число байтов для хранения названия должности, даты рождения 
и остальных подлежащих учету элементов структуры. Узнав все необходимые 
размерности, разработчик описывает структуру непосредственно 
в коде программы (рис. 1.1).

Рис. 1.1. Структура для хранения одной записи в файле

Во-вторых, программистом разрабатываются процедуры, осуществ-

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

Недостатки систем файлов

Поначалу у разработчиков систем, основанных на файлах, дела шли 
весьма неплохо. Пользователям очень нравилось, что работа с электронными 
картотеками была схожа с работой с бумажными архивами. 
В свою очередь, программистам нравилось то, что они сравнительно 
легко зарабатывают себе на жизнь. 
Идиллия продолжалась недолго. Очень скоро, казалось на безоблачном 
горизонте, забрезжили грозовые тучи – стали проявляться отрицательные 
стороны лобового подхода разработчиков первых прототипов 
баз данных. Из всего сонма недостатков особо выделяются пять проблем [
25]:
Электронные картотеки  19

1) зависимость от данных;
2) разделение и изоляция данных;
3) избыточность данных;
4) несовместимость файлов;
5) разрастание количества приложений.

Зависимость от данных. Уже первая проблема, с которой столкнулись 
разработчики файловых систем, не предвещала ничего хорошего. 
Допустим, что нам требуется осуществить элементарную операцию – 
увеличить на один символ размер поля, отвечающего за хранение 
фамилии. Оказалось, что даже незначительное усовершенствование 
структуры влечет за собой ком дополнительных трудностей. Судите 
сами, изменение размера или состава полей структуры вынуждает нас 
не только переписать исполняемый файл, но и сочинить одноразовую 
программу-конвертор, которая должна преобразовать старые данные к 
новому формату.
Разделение и изоляция данных. Системы, основанные на файлах, 
объединяют в себе десятки отдельных файлов с данными. В одном файле 
хранятся данные о сотрудниках фирмы, в другом – сведения о клиентах, 
в третьем – перечень предоставляемых услуг, в четвертом – список 
заказов и т. д. Для извлечения логически связанных данных (допустим, 
о клиентах и их заказах) программисту приходилось выдумывать замысловатые 
алгоритмы синхронного чтения из двух файлов. С увеличением 
количества файлов, вовлекаемых в итоговый отчет, сложность 
возрастает в арифметической прогрессии. Задача извлечения взаимоувязанных 
данных из десятка файлов могла стать непосильной не 
только для программиста, но и для вычислительных машин тех времен. 
Масло в огонь подливало еще то, что данные могли быть разделены 
между отделами и службами предприятия – в отделе кадров находились 
данные о сотрудниках, в отделе продаж – о заказах и т. п. В 1960-х годах 
удельный вес предприятий, чьи машины были объединены локальными 
вычислительными сетями, стремился к нулю, посему данные были 
еще и изолированы друг от друга. А теперь представьте себе программиста 
тех времен, мечущегося по организации в надежде объединить 
разделенные данные в единое целое…
Избыточность (дублирование) данных. С появлением первой мик-

ропроцессорной техники многие руководители предприятий стали отказываться 
от покупок больших ЭВМ и начали отдавать свои предпочтения 
более дешевым мини-ЭВМ, расставляя их по отделам и службам 
Доступ онлайн
690 ₽
В корзину