Волк В. - Базы данных. Проектирование, программирование, управле. Практикум по проектированию, программированию и администрированию баз данных, включающий примеры и практические задания для самостоятельного выполнения
Скачать 3.21 Mb.
|
САНКТПЕТЕРБУРГ МОСКВА КРАСНОДАР 2020 БАЗЫ ДАННЫХ ПРОЕКТИРОВАНИЕ, ПРОГРАММИРОВАНИЕ, УПРАВЛЕНИЕ И АДМИНИСТРИРОВАНИЕ Учебник В. К. ВОЛК 1 / 24 © Издательство «Лань», 2020 © В. К. Волк, 2020 © Издательство «Лань», художественное оформление, 2020 Îáëîæêà П. И. ПОЛЯКОВА УДК 004.65 ББК 32.973018.2я73 В 67 Волк В. К. Базы данных. Проектирование, программиро вание, управление и администрирование : учебник / В. К. Волк. — СанктПетербург : Лань, 2020. — 244 с. : ил. — (Учебники для вузов. Специальная литература). — Текст : непосредственный. ISBN 9785811441891 Учебник посвящен базам данных — одному из направлений ITинду стрии, в рамках которого традиционно рассматриваются технологии надежного хранения больших объемов информации, ее эффективного поиска и извлечения по запросам потребителей. Материал, представленный в учебнике, охватывает основные фазы жизненного цикла базы данных: последовательно обсуждаются основные концепции и проблематика баз данных, рассматриваются процессы их проектирования, программирования и управления, а также технологии их администрирования с целью достижения высокой производительности доступа к данным и обеспечения требуемого уровня информационной безопасности. База данных рассматри вается как информационная модель предметной области, а ее разработка — как многоэтапный процесс последовательного преобразования концептуаль ной модели в логическую (реляционную) модель данных на стадии проектирования, последующей программной реализации логической модели средствами языка SQL и настройки параметров физической модели в процессе эксплуатации базы данных. Основное внимание в учебнике уделено прикладным аспектам техноло гий баз данных, изложение материала сопровождается многочисленными примерами и листингами программного SQLкода. Учебник содержит практикум по проектированию, программированию и администрированию баз данных, включающий примеры и практические задания для самостоятельного выполнения. Предназначен для студентов ITспециальностей и может быть использо ван преподавателями при подготовке лекционных курсов, проведении практических и лабораторных занятий, курсовом проектировании. УДК 004.65 ББК 32.973018.2я73 2 / 24 3 ПРЕДИСЛОВИЕ Высокая ценность информации признавалась во все времена, но только во второй половине XX в., когда появилась возможность эффективного управле- ния действительно большими объемами информации, она стала важнейшим стратегическим ресурсом, обслуживание которого потребовало создания спе- циализированных программно-технических средств — автоматизированных информационных систем (АИС). АИС обеспечивают надежное хранение и оперативное обновление ин- формации, а также ее поиск, извлечение и аналитическую обработку по запро- сам потребителей. При всем разнообразии архитектур, решаемых задач и усло- вий использования АИС в структуре их программного обеспечения (ПО) явно выделяют два относительно автономных компонента: подсистему хранения данных и подсистему обработки информации. Основу подсистемы хранения составляют база данных (БД) — программно реализованная информационная модель предметной области АИС, управляемая специализированной программ- ной системой (СУБД), и подсистема обработки информации, включающая множество прикладных программ, получающих доступ к СУБД для чтения и/или модификации информации, хранимой в базе данных. АИС относятся к категории социотехнических систем, важнейшим ком- понентом которых, наряду с аппаратным и программным обеспечением, явля- ются пользователи — разработчики, администраторы и конечные пользователи, участвующие в создании или эксплуатации АИС на различных стадиях ее жиз- ненного цикла. Материал, излагаемый в учебнике, охватывает основные стадии жизнен- ного цикла базы данных и в основном соответствует содержанию учебной дис- циплины «Базы данных», изучаемой студентами IT-специальностей. Учебное пособие состоит из пяти относительно автономных частей, каждая из которых ориентирована на определенную категорию пользователей баз данных. 1–3-я части учебника (главы с 1-й по 7-ю) ориентированы на проектиров- щиков и программистов баз данных, обычно выделяемых в отдельную категорию разработчиков программных систем. Здесь рассматриваются: – проблемы и пути достижения автономности системы хранения данных в составе программного обеспечения АИС, вводятся понятия базы данных и си- стемы управления базами данных; – информационные модели, используемые на различных стадиях жизнен- ного цикла баз данных, дается обзор основных свойств иерархической, сетевой, реляционной и объектно-ориентированной логических моделей данных; – реляционная модель данных Кодда: ее структурный, целостностный и манипуляционный компоненты, включая реляционную алгебру и реляционное исчисление кортежей (в объеме, минимально необходимом для понимания ме- тодов нормализации реляционных баз данных и освоения базовых конструкций языка SQL); – процедура проектирования базы данных, включающая разработку кон- цептуальной ER-модели предметной области АИС, преобразование ER-модели 3 / 24 4 в схему реляционной БД и ее последующую нормализацию для улучшения экс- плуатационных характеристик; – программная реализация реляционных БД, рассматриваемая на примере одного из диалектов языка SQL, соответствующего стандарту SQL-89, обсуж- даются также элементы процедурного расширения языка, соответствующие стандарту SQL-92. 5-я и 7-я главы учебника — это проектный практикум и практикум по SQL-программированию. Эти главы могут быть использованы как при прове- дении практических занятий со студентами, так и для самостоятельного освое- ния соответствующих разделов технологий баз данных. 4-я часть учебника (главы с 8-й по 14-ю) посвящена вопросам управления данными и ориентирована на администраторов баз данных — IT-специалистов, обеспечивающих эффективное функционирование БД в процессе их эксплуата- ции. В этой части рассматриваются: – задачи администрирования БД, базовые функции реляционных СУБД и более детально — проблемы многопользовательского доступа к БД и пути их решения средствами управления транзакциями и блокировками; – низкоуровневая («физическая») модель данных, поддерживаемая на файловом уровне одним из коммерческих серверов баз данных, и инструмен- тальные средства управления этой моделью, предоставляемые администрато- рам баз данных; – методы высокопроизводительного доступа к данным, обеспечиваемые индексными структурами, алгоритмы поиска информации, а также инструмен- тальные средства анализа и управления индексами; – процедура трансляции исходного SQL-кода и оптимизации запросов, инструментальные средства визуализации и анализа процедурных планов их исполнения. 5-я часть учебника (главы с 15-й по 17-ю) ориентирована на специалистов по защите информации, часто выделяемых в отдельную категорию администра- торов баз данных. Здесь рассматриваются: – концепции, задачи и методы защиты информации, хранимой в базах данных; – типовая архитектура подсистемы информационной безопасности СУБД; – методы и инструментальные средства разграничения доступа к объек- там БД со стороны пользователей. 14-я и 17-я главы учебника — практикум по администрированию баз дан- ных и управлению информационной безопасностью, содержащий практические задания аналитического и технологического характера, выполнение которых позволит студентам более детально изучить низкоуровневую структуру базы данных, реализованные в СУБД алгоритмы управления данными и методы за- щиты от несанкционированного доступа, а также потребует от них освоения разнообразных технологических инструментов, используемых администрато- рами баз данных в своей профессиональной деятельности. 4 / 24 5 Следует отметить прикладной характер учебника, основное внимание в нем уделено технологическим аспектам проектирования, программирования и администрирования баз данных. Теоретическим вопросам построения баз данных посвящены многочис- ленные публикации [4, 7, 16, 21, 24–33], среди которых можно выделить курс лекций С. Кузнецова [7], в котором, в частности, более детально рассмотрена реляционная модель данных: реляционная алгебра Кодда, алгебра «А» Дэйта и Дарвена, реляционное исчисление кортежей и доменов, теория нормальных форм отношений. Имеются также учебные издания, авторы которых рассмат- ривают технологии проектирования баз данных и их программной реализации, среди которых можно отметить книги Г. Рикарди [9] и Л. Бейли [1]. В то же время (и это вполне объяснимо) вопросы построения СУБД, под- держиваемые ими низкоуровневые структуры данных, методы и алгоритмы управления, а также технологии администрирования баз данных представлены в основном научными и обзорными статьями в специализированных журналах, технической документацией, публикуемой разработчиками СУБД на своих официальных интернет-ресурсах, а также статьями в многочисленных профес- сиональных блогах, поддерживаемых администраторами баз данных. За редким исключением (например, книги С. Бобровского [2] и Е. Мамаева [8]) материалы такого рода трудно отнести к категории учебных изданий, их можно рекомен- довать студентам, изучающим базы данных, лишь в качестве дополнительных информационных источников. Учебник не является практическим руководством по администрированию баз данных и, разумеется, не охватывает весь объем трудовых функций, опре- деленных соответствующими профессиональными стандартами. При его подго- товке основное внимание было уделено вопросам организации физической модели данных, оптимизации выполнения SQL-запросов и разграничения до- ступа к данным, то есть решению наименее рутинных задач администрирова- ния, требующих профессиональной компетентности в вопросах функциониро- вания серверов баз данных, организации хранения данных на файловом уровне и методах поиска информации, основанных на использовании индексных структур данных. При подготовке учебника автор учитывал личный опыт преподавания технологий баз данных студентам старших курсов IT-специальностей Курган- ского государственного университета. Использование учебника предполагает наличие у студентов базовой подготовки в области программной инженерии: программирование, структуры и типовые алгоритмы обработки данных, модели жизненного цикла ПО, основы языка UML. Автор выражает благодарность всем студентам, использовавшим предва- рительный вариант учебника и сделавшим ряд полезных замечаний по его со- держанию. Особая благодарность студентам П. Казакову и Д. Стенникову, про- делавшим большую работу по анализу структуры системных объектов баз дан- ных, и М. Останину, исследовавшему индексные структуры данных и проце- дурные планы выполнения SQL-запросов. 5 / 24 6 6 / 24 7 ЧАСТЬ 1. ОСНОВНЫЕ КОНЦЕПЦИИ 7 / 24 8 ГЛАВА 1. АВТОНОМНОСТЬ БАЗ ДАННЫХ Автономность подсистемы хранения данных, в основу которой положен принцип независимости данных от обрабатывающих их программ, является существенной особенностью АИС, отличающей их от других программных си- стем. Отсутствие взаимозависимости программ и данных позволяет, в частно- сти, использовать БД для решения многих прикладных задач, постепенно наращивая функциональность АИС, а также обеспечивает возможность моди- фикации структуры самой БД в соответствии с изменениями моделируемого сегмента предметной области. На пути к достижению автономности баз данных в составе АИС эти системы прошли ряд этапов в своем эволюционном развитии. В первых ком- пьютерных системах и программный код, и обрабатываемые им данные раз- мещались в едином запоминающем устройстве (вспомним один из базовых принципов фон Неймана, «сегмент кода» и «сегмент данных» в ассемблер- ном программном коде, пример которого приведен на листинге 1.1), и это накладывало серьезные ограничения на объем обрабатываемой информа- ции. format MZ; Исполняемый файл DOS EXE (MZ EXE) entry code_seg:start; Точка входа в программу stack 1000h; Размер стека segment data_seg; Cегмент данных hello_str db 'Hello!',0dh,0ah,'$'; Выделение байт под строку segment code_seg; Сегмент кода start:; Точка входа в программу mov ax,data_seg; Инициализация регистра DS mov ds,ax mov ah,09h mov dx,hello_str int 21h; Вывод строки mov ax,4C00h int 21h; Завершение программы Листинг 1.1 Пример ассемблерного кода программы Оснащение компьютеров быстродействующими дисковыми накопителя- ми большой емкости позволило снять это ограничение, так как стало возмож- ным хранение больших информационных массивов отдельно от программного кода — в файлах на внешних запоминающих устройствах. При этом, однако, описание структур таких файлов по-прежнему оставалось включенным в про- граммный код, что не избавляло систему от (как минимум) одного существен- 8 / 24 9 ного недостатка, препятствующего реализации концепции автономности БД в структуре АИС. Для многих программных приложений объединение описаний структур данных и алгоритмов их обработки вполне естественно и не является их недо- статком, оно поддерживается (а в ряде случаев строго регламентируется) язы- ками программирования высокого уровня. Классическая схема исходного кода прикладной программы (листинг 1.2), написанной на высокоуровневом языке, предполагает наличие декларативной части, включающей описание типов и структур используемых данных, и собственно алгоритмической части, содер- жащей языковое описание алгоритмов их обработки. #include Point (int xi = 0, int yi = 0) {x = xi; y = yi;} }; void Point::display() { cout << «x = » << x; cout << «, y = » << y << «\n»;} void main() { setlocale(LC_ALL,«Rus»); Point A; Point B(5,3); cout << « Точка A: »; A.display(); cout << « Точка B: »; B.display(); system(«pause»);} Листинг 1.2 Пример кода программы на языке высокого уровня Объединение в едином программном коде описания структур данных, называемого метаданными, и описания алгоритмов их обработки неизбежно приводит к взаимозависимости программ и данных. Изменение метаданных (например, в связи с необходимостью корректировки модели предметной обла- сти) или алгоритмов их обработки (например, для реализации нового пользова- тельского запроса к БД) может потребовать модификации как декларативной, так и алгоритмической частей программного кода. Следующим этапом эволюции был отказ от хранения метаданных в программном коде и размещение их во внешнем файле аналогично тому, как это ранее было сделано для основных данных. Теперь при изменении струк- туры данных не требовалось вносить изменения в программный код, доста- точно было модифицировать файл с метаданными, доступный прикладной программе и необходимый ей для интерпретации и последующей обработки основных данных. Правда, такой прием давал лишь частичное решение про- блемы взаимозависимости данных и программ, так как описание структуры 9 / 24 10 самих метаданных все равно приходилось хранить в коде прикладной про- граммы. Было найдено весьма радикальное решение и этой проблемы — приклад- ные программы были лишены возможности прямого доступа к БД и избавлены от необходимости интерпретации структуры как основных данных, так и мета- данных системы. Решение этой задачи, а также всего комплекса задач управле- ния данными возлагалось на специализированную служебную программу, имеющую непосредственный доступ к метаданным БД и обеспечивающую ин- формационную поддержку прикладных программ. Дальнейшее развитие этой концепции привело к созданию систем управления базами данных (СУБД), называемых также серверами баз данных. СУБД является необходимым компонентом подсистемы хранения данных АИС и образует промежуточный слой между файловой системой и приклад- ными программами, входящими в состав системы обработки данных АИС (рис. 1.1). Рис. 1.1 Схема взаимодействия прикладных программ с базой данных Прикладные программы используют специальное представление о струк- туре БД (так называемую логическую модель данных) и отправляют в адрес СУБД запросы, сформулированные на языке этой модели. СУБД, получив такой запрос, обращается к системному каталогу (специальному служебному разделу БД, в котором хранятся метаданные — описание структуры БД), транс- лирует запрос в файловое представление (физическую модель данных), затем 10 / 24 11 исполняет запрос путем прямого доступа к файлам БД и преобразует его ре- зультаты в логическое представление, понятное прикладной программе. Таким образом, прикладная программа получает от СУБД запрашиваемую информа- цию в формате логической модели данных, ничего при этом не зная о формате файлового представления этой информации в БД. Совместное файловое хранение метаданных с основными данными и ис- пользование универсальных программных средств управления данными — это принципиальные свойства БД, обеспечивающие ее автономность в составе АИС и независимость от пользовательских программ обработки информации. Имен- но это отличает базу данных от любой другой системы хранения информации на устройствах внешней памяти. 11 / 24 12 ГЛАВА 2. МОДЕЛИ ДАННЫХ 2.1. Проектирование как процесс преобразования моделей Представление о базе данных как об информационной модели предмет- ной области позволяет рассматривать процесс ее создания как процедуру по- следовательной детализации этой модели — от общего (пользовательского) представления об информационных сервисах, предоставляемых АИС, до схемы размещения соответствующих структур данных на внешних запоминающих устройствах. С другой стороны, представление о базе данных как о сложном программ- но-техническом объекте позволяет применять к процессу ее проектирования весь комплекс методов, инструментов и технологических приемов программ- ной инженерии, основанных на базовых принципах, обеспечивающих эффек- тивное решение проблемы «борьбы со сложностью» проектируемых объектов и повышение производительности процесса разработки. Принцип декомпозиции предписывает рассматривать сложную систему как множество взаимосвязанных компонентов, проектирование которых может выполняться параллельно разными командами разработчиков с последующим объединением полученных ими результатов в единый проект. Примером при- менения этого принципа может служить декомпозиция АИС на две относи- тельно автономные подсистемы — базу данных и подсистему обработки ин- формации, технологии создания которых существенно отличаются и требуют привлечения разработчиков различных специальностей. В соответствии с принципами иерархичности и многоэтапности процесс проектирования базы данных включает ряд последовательных стадий, на каж- дой из которых разрабатываются соответствующие представления (модели) проектируемого объекта, описывающие его с разной степенью детализации. Проектирование БД — это процесс последовательной детализации пользова- тельского представления о предметной области АИС и его преобразования сна- чала в концептуальную модель, описывающую объектную среду моделируемой предметной области, затем в логическую модель, определяющую представление прикладных программ о структуре базы данных, и наконец в физическую мо- дель данных, детально определяющую структуры данных и схему их размеще- ния на устройствах внешней памяти. Основным содержанием начальной стадии проекта АИС является прове- дение детального анализа бизнес-процессов предметной области с целью выяв- ления и согласования с заказчиком требований к проектируемому объекту и оценки их реализуемости. На этой стадии для описания проектируемой базы данных используются так называемые внешние модели — представления об ос- новных функциях и информационных сервисах, предоставляемых АИС по за- просам пользователей. Технологии анализа требований к проектируемым программным систе- мам — это отдельное направление программной инженерии и в данном учеб- нике не рассматриваются. Существует множество методов анализа бизнес- 12 / 24 13 процессов и поддерживающих их CASE-средств, среди которых можно отме- тить, например, UseCase-модель языка UML, позволяющую классифицировать пользователей проектируемой системы, определить состав ее сервисов и опи- сать процесс их взаимодействия в процессе функционирования АИС. UseCase- диаграмма и сценарии вариантов использования проектируемой АИС содержат информацию, необходимую проектировщику БД для разработки концептуаль- ной модели. |