Дата логическое проектирование

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

Этап дата логического проектирования не заканчивается проектированием схемы отношений. В общем случае в результате выполнения этого этапа должны быть получены следующие результирующие документы:

· Описание концептуальной схемы БД в терминах выбранной СУБД.

· Описание внешних моделей в терминах выбранной СУБД.

· Описание декларативных правил поддержки целостности базы данных.

· Обработка процедур поддержки семантической целостности базы данных.

Однако перед тем как описывать построенную схему в терминах выбранной СУБД, нам надо выстроить эту схему. Мы должны построить корректную схему БД, ориентируясь на реляционную модель данных.

Корректной назовем схему БД, в которой отсутствуют нежелательные зависимости меж­ду атрибутами отношений.

Процесс разработки корректной схемы реляционной БД называется логическим проекти­рованием БД.

Проектирование схемы БД может быть выполнено двумя путями:

1. Путем декомпозиции (разбиения), когда исходное множество отношений, вхо­дящих в схему БД заменяется другим множеством отношений (число их при этом возрастает), являющихся проекциями исходных отношений;

2 Путем синтеза, то есть путем компоновки из заданных исходных элементар­ных зависимостей между объектами предметной области схемы БД.

Классическая технология проектирования реляционных баз данных связана с тео­рией нормализации, основанной на анализе функциональных зависимостей ме­жду атрибутами отношений.

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

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

· первая нормальная форма (1NF);

· вторая нормальная форма (2NF);

· третья нормальная форма (3NF);

· нормальная форма Бойса—Кодда (BCNF);

· четвертая нормальная форма (4NF);

· пятая нормальная форма, или форма проекции-соединения (5NF или PJNF).

Основные свойства нормальных форм:

1.1 каждая следующая нормальная форма в некотором смысле улучшает свойст­ва предыдущей;

1.2 при переходе к следующей нормальной форме свойства предыдущих нор­мальных форм сохраняются.

В основе классического процесса проектирования лежит последовательность пере­ходов от предыдущей нормальной формы к последующей. Однако в процессе декомпозиции мы сталкиваемся с проблемой обратимости, то есть возможно­сти восстановления исходной схемы. Таким образом, декомпозиция должна со­хранять эквивалентность схем БД при замене одной схемы на другую.

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

При выполнении эквивалентных преобразований сохраняется множество исход­ных функциональных зависимостей между атрибутами отно­шений.

Функциональные зависимости определяют не текущее состояние БД, а все воз­можные ее состояния, то есть они отражают те связи между атрибутами, кото­рые присущи реальному объекту, который моделируется с помощью БД.

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

Приведем ряд основных определений.

Функциональной зависимостью набора атрибутов В отношения R от набора ат­рибутов А того же отношения, обозначаемой как R.A -> R.B или А -> В называется такое соотношение проекций R[A] и R[B], при котором в каждый мо­мент времени любому элементу проекции R[A] соответствует только один эле­мент проекции R[B] , входящий вместе с ним в какой-либо кортеж отношения R.

Функциональная зависимость R.A -> R.B называется полной, если набор атри­бутов В функционально зависит от А и не зависит функционально от любого подмножества А, то есть

R.A -> R.B называется полной, если:

" А1 сАÎ R. A -/-> R.B, что читается следующим образом:

для любого А1, являющегося подмножеством А, R.B функционально не зависит от R.A, в противном случае зависимость R.A -> R.B называется непол­ной.

Функциональная зависимость R.A -> R.B называется транзитивной, если суще­ствует набор атрибутов С такой, что:

1. С не является подмножеством А.

2. С не включает в себя В.

3. Существует функциональная зависимость R.A->R.C.

4. Не существует функциональной зависимости R.C -> R.A.

5. Существует функциональная зависимость R.C -> R.B.

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

А может ли быть ситуация, когда отношение не имеет возможного ключа? Да­вайте вспомним определение отношения:

Отношение - это подмножество декар­това произведения множества доменов.

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

Среди всех возможных ключей отношения обычно выбирают один, который счи­тается главным и который называют первичным ключом отношения.

Неключевым атрибутом называется любой атрибут отношения,не входящий в состав ни одного возможного ключа отношения.

Взаимно-независимые атрибуты — это такие атрибуты, которые не зависят функ­ционально один от другого.

Если в отношении существует несколько функциональных зависимостей, то каж­дый атрибут или набор атрибутов, от которого зависит другой атрибут, называ­ется детерминантом отношения.

Для функциональных зависимостей как фундаментальной основы проекта БД были проведены исследования, позволяющие избежать избыточного их пред­ставления, Ряд зависимостей могут быть выведены из других путем примене­ния правил, названных аксиомами Армстронга, по имени исследователя, впер­вые сформулировавшего их. Это три основных аксиомы:

1. Рефлексивность: если В является подмножеством А, то А->В

2. Дополнение: если А->В , то АС->ВС

3. Транзитивность: спи Л В и В->Г то А->С.