СУБД 4. Основы проектирования баз данных
Этапы жизненного цикла базы данных 1 Этапы проектирования : 1.Системный анализ и словесное описание информационных объектов предметной области. 2.Проектирование инфологической модели предметной области частично формализованное описание объектов предметной области в терминах некоторой семантической модели, например, в терминах ER-модели. 3.Даталогичеcкое или логическое проектирование БД, то есть описание БД в терминах принятой даталогической модели данных. 4.Физическое проектирование БД, то есть выбор эффективного размещения БД на внешних носителях для обеспечения наиболее эффективной работы приложения
Системный анализ предметной области Два подхода к выбору состава и структуры предметной области: Функциональный подход (заранее известны функции некоторой группы лиц и комплексов задач ) Предметный подход (в описание предметной области включаются такие объекты и взаимосвязи, которые наиболее характерны и наиболее существенны для нее ) 2
Пример описания предметной области Каждая книга, хранящаяся в библиотеке, характеризуется следующими параметрами: уникальный шифр; название; фамилии авторов (могут отсутствовать); место издания (город); издательство; год издания; количество страниц; стоимость книги; количество экземпляров книги в библиотеке. На каждого читателя в картотеку заносятся следующие сведения: фамилия, имя, отчество; домашний адрес; телефон (будем считать, что у нас два телефона рабочий и домашний); дата рождения. Каждому читателю присваивается уникальный номер читательского билета. Каждый экземпляр книги имеет следующие характеристики: уникальный инвентарный номер; шифр книги, который совпадает с уникальным шифром из описания книг; место размещения в библиотеке. Сведения о выдаче книг: номер билета читателя, который взял книгу; дата выдачи книги; дата возврата. 3
Ограничения на информации в системе: Книга может не иметь ни одного автора. В библиотеке должны быть записаны читатели не моложе 17 лет. В библиотеке присутствуют книги, изданные начиная с 1960 по текущий год. Каждый читатель может держать на руках не более 5 книг. Каждый читатель при регистрации в библиотеке должен дать телефон для связи: он может быть рабочим или домашним. Каждая область знаний может содержать ссылки на множество книг, но каждая книга может относиться к различным областям знаний. группы пользователей: библиотекари; читатели; администрация библиотеки. 4
Библиотекарь должен иметь возможность решать следующие задачи: Принимать новые книги и регистрировать их в библиотеке. Относить книги к одной или к нескольким областям знаний. Проводить каталогизацию книг, то есть назначение новых инвентарных номеров вновь принятым книгам, и, помещая их на полки библиотеки, запоминать место размещения каждого экземпляра. Проводить дополнительную каталогизацию, если поступило несколько экземпляров книги, которая уже есть в библиотеке, Проводить списание старых и не пользующихся спросом книг. Вести учет выданных книг читателям, при этом предполагается два режима работы: выдача книг читателю и прием от него возвращаемых им книг обратно в библиотеку. Проводить списание утерянных читателем книг по специальному акту списания или замены, подписанному администрацией библиотеки. Проводить закрытие абонемента читателя, то есть уничтожение данных о нем, если читатель хочет выписаться из библиотеки и не является ее должником, то есть за ним не числится ни одной библиотечной книги. Читатель должен иметь возможность решать следующие задачи: Просматривать системный каталог, то есть перечень всех областей знаний, книги по которым есть в библиотеке. По выбранной области знаний получить полный перечень книг, которые числятся в библиотеке. Для выбранной книги получить инвентарный номер свободного экземпляра книги или сообщение о том, что свободных экземпляров книги нет. Для выбранного автора получить список книг, которые числятся в библиотеке. 5
Даталогическое проектирование В реляционных БД даталогическое или логическое проектирование приводит к разработке схемы БД, то есть совокупности схем отношений, которые адекватно моделируют абстрактные объекты предметной области и семантические связи между этими объектами. В результате выполнения этого этапа должны быть получены следующие результирующие документы: Описание концептуальной схемы БД в терминах выбранной СУБД. Описание внешних моделей в терминах выбранной СУБД. Описание декларативных правил поддержки целостности базы данных. Описание процедур поддержки семантической целостности базы данных. 6
Логическое проектирование Корректной назовем схему БД, в которой отсутствуют нежелательные зависимости между атрибутами отношений. Логическое проектирование БД - процесс разработки корректной схемы реляционной БД. Проектирование схемы БД может быть выполнено двумя путями: путем декомпозиции (разбиения), когда исходное множество отношений, входящих в схему БД заменяется другим множеством отношений (число их при этом возрастает), являющихся проекциями исходных отношений; путем синтеза, то есть путем компоновки из заданных исходных элементарных зависимостей между объектами предметной области схемы БД. Классическая технология проектирования реляционных баз данных связана с теорией нормализации, основанной на анализе функциональных зависимостей между атрибутами отношений. 7
Нормализация схем отношений Процесс проектирования с использованием декомпозиции представляет собой процесс последовательной нормализации схем отношений. Последовательность нормальных форм: первая нормальная форма (1NF); вторая нормальная форма (2NF); третья нормальная форма (3NF); нормальная форма БойсаКодда (BCNF); четвертая нормальная форма (4NF); пятая нормальная форма, или форма проекции-соединения (5NF или PJNF). Схемы БД называются эквивалентными, если содержание исходной БД может быть получено путем естественного соединения отношений, входящих в результирующую схему, и при этом не появляется новых кортежей в исходной БД. 8
Определения Функциональной зависимостью набора атрибутов В отношения R от набора атрибутов A того же отношения, обозначаемой как R.A -> R.B или A->B называется такое соотношение проекций R[A] и R[B], при котором в каждый момент времени любому элементу проекции R[A] соответствует только один элемент проекции R[B], входящий вместе с ним в какой-либо кортеж отношения R. Функциональная зависимость R.A -> R.B называется полной, если набор атрибутов B функционально зависит от A и не зависит функционально от любого подмножества A, то есть R.A -> R.B называется полной, если: для любого A1, являющегося подмножеством А, R.B функционально не зависит от R.A1, в противном случае зависимость R.A-> R.B называется неполной. Функциональная зависимость R.A -> R.B называется транзитивной, если существует набор атрибутов С такой, что: С не является подмножеством А. С не включает в себя B. Существует функциональная зависимость R.A-> R.C. Не существует функциональной зависимости R.C-> R.A. Существует функциональная зависимость R.C -> R.B. Возможным ключом отношения называется набор атрибутов отношения, который полностью и однозначно (функционально полно) определяет значения всех остальных атрибутов отношения. Взаимно-независимые атрибуты это такие атрибуты, которые не зависят функционально один от другого. Если в отношении существует несколько функциональных зависимостей, то каждый атрибут или набор атрибутов, от которого зависит другой атрибут, называется детерминантом отношения. Три основных аксиомы Армстронга : Рефлексивность: если В является подмножеством А, то А -> B Дополнение: если А->B, то A.C -> B.C Транзитивность: если A -> B и B->C, то A->C. 9
Отношение находится в первой нормальной форме тогда и только тогда, когда на пересечении каждого столбца и каждой строки находятся только элементарные значения атрибутов. 10 Отношения, находящиеся в первой нормальной форме, часто называют просто нормализованными отношениями. Первая нормальная форма
Вторая нормальная форма Отношение находится во второй нормальной форме тогда и только тогда, когда оно находится в первой нормальной форме и не содержит неполных функциональных зависимостей непервичных атрибутов от атрибутов первичного ключа. 1 Отношение, моделирующее сдачу студентами текущей сессии (ФИО, Номер зач.кн., Группа, Дисциплина, Оценка) первичным ключом отношения может быть (Номер. зач.кн., Дисциплина) Такими проекциями могут быть два отношения: (ФИО, Номер.зач.кн., Группа) (Номер зач.кн., Дисциплина, Оценка)
Третья нормальная форма Отношение находится в третьей нормальной форме тогда и только тогда, когда оно находится во второй нормальной форме и не содержит транзитивных зависимостей. Рассмотрим отношение, связывающее студентов с группами, факультетами и специальностями, на которых он учится. (ФИО, Номер зач.кн., Группа, Факультет, Специальность, Выпускающая кафедра) есть следующие функциональные зависимости: Номер зач.кн. -> ФИО Номер зач.кн. -> Группа Номер зач.кн. -> Факультет Номер зач.кн. -> Специальность Номер зач.кн. -> Выпускающая кафедра Группа -> Факультет Группа -> Специальность Группа -> Выпускающая кафедра Выпускающая кафедра -> Факультет Для того чтобы избежать транзитивности, мы можем предложить следующий набор отношений: (Номер.зач.кн., ФИО, Специальность, Группа) (Группа, Выпускающая кафедра) (Выпускащая кафедра, Факультет) 1212
Нормальная форма Бойса Кодда Отношение находится в нормальной форме БойсаКодда, если оно находится в третьей нормальной форме и каждый детерминант отношения является возможным ключом отношения. Отношение, которое моделирует сдачу текущей сессии, имеет следующую структуру: (Номер зач.кн., Идентификатор_студента, Дисциплина, Дата, Оценка) Возможными ключами отношения являются Номер_зач.кн, Дисциплина, Дата и Иден-тификатор_студента, Дисциплина, Дата. функциональные зависимости: Номер_зач.кн, Дисциплина, Дата -> Оценка; Идентификатор_студента, Дисциплина, Дата -> Оценка; Номер зач.кн. -> Идентификатор_студента; Идентификатор_студента -> Номер зач.кн. Для приведения отношения к нормальной форме БойсаКодда надо разделить отношение, например, на два со следующими схемами: (Идентификатор_студента, Дисциплина, Дата, Оценка) (Номер зач.кн., Идентификатор_студента) или наоборот: (Номер зач.кн., Дисциплина, Дата, Оценка) (Номер зач.кн., Идентификатор_студента) 1313
Четвертая нормальная форма В отношении R (A, B, C) существует многозначная зависимость (multi valid dependence, MVD) R.A ->> R.B в том и только в том случае, если множество значений B, соответствующее паре значений A и C, зависит только от A и не зависит от С. В отношении «Сдача экзаменов» (Номер зач.кн., Группа, Дисциплина) Есть две многозначные зависимости: Группа ->> Дисциплина Группа ->> Номер зач.кн. Отношение R находится в четвертой нормальной форме (4NF) в том и только в том случае, если в случае существования многозначной зависимости A ->> B все остальные атрибуты R функционально зависят от A. Декомпозиция исходного отношения в два отношения: (Номер зач.кн., Группа) (Группа, Дисциплина) 1414
Пятая нормальная форма Отношение R (X, Y,…, Z) удовлетворяет зависимости соединения (X, Y,…, Z) в том и только в том случае, когда R восстанавливается без потерь путем соединения своих проекций на X, Y, …, Z. Здесь X, Y, …, Z наборы атрибутов отношения R. Отношение R находится в пятой нормальной форме (нормальной форме проекции-соединения PJ/NF) в том и только в том случае, когда любая зависимость соединения в R следует из существования некоторого возможного ключа в R. R1(Преподаватель, Кафедра, Дисциплина) Наборы атрибутов: ПК (Преподаватель, Кафедра) ПД (Преподаватель, Дисциплина) КД (Кафедра, Дисциплина) Для того чтобы привести это отношение к NF/PJ, его надо представить в виде трех отношений: R2 (Преподаватель, Кафедра) R3 (Преподаватель, Дисциплина) R4 (Кафедра, Дисциплина) 1515