Функциональные зависимости и реляционные базы данных. Функциональная зависимость и реляционные базы данных

a. При рассмотрении количественной стороны различных процессов мы почти всегда наблюдаем, что переменные величины зависят друг от друга; например, путь проходимый свободно падающим в пустоте телом зависит только от времени, давление в паровом котле зависит только от температуры пара.

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

Высота растущего дерева зависим от многих переменных - от солнечного освещения, от влажности, от количества питательных веществ в почве и т. д.

Мы видим, что некоторые переменные изменяются независимо, они и называются независимыми переменными или аргументами, другие же от них зависят их называют функциями.

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

b. Следует всегда различать, от какого числа независимых переменных зависит функция. Проще всего поддаются изучению функции одной переменной, ими мы будем заниматься в первую очередь. Изучение функций многих переменных сложнее, но так или иначе сводится к изучению функций одной переменной.

c. Если мы желаем записать математически, что переменная у зависит от , то будем употреблять такое обозначение:

Эта запись читается так:

Не; следует думать, что буква умножается на , она является лишь сокращением слова «функция», а вся запись является сокращенной фразой (2).

Точно так же, если функция U зависит от двух аргументов то эта зависимость обозначается следующим образом:

Здесь буквы f, х и у также не являются сомножителями.

Совершенно ясно, как обозначается функция трех четырех и большего числа аргументов.

Вместо буквы употребляют и другие буквы чаще всего .

d. Записи типа (1) и (3) являются самыми общими обовначениями функций, так как под ними можно понимать какие угодно функции, а потому, имея в руках только эти обозначения, мы ничего не сможем узнать о свойствах этих функций.

Для того чтобы иметь возможность изучать функцию нужно ее задать.

e. Имеется много способов задать функцию, но все они сводятся к трем основным типам:

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

2) функцию можно задать графически;

3) функцию можно задать математической формулой.

f. Приведем примеры. Известно, что при вращении махового колеса возникают напряжения, которые стремятся разорвать его обод. Если обод колеса сделан из однородного материала, то напряжения зависят только от скорости вращения. Обозначая скорость через v, а напряжение в ободе через , мы можем записать что

Теория сопротивления материалов дает такую таблицу для значений функции (4), если обод сделан из литой стали:

Здесь v измеряется в метрах в секунду - в ньютонах на квадратный сантиметр.

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

Недостатком является то, что всякая таблица дается не для всех значений аргумента, а через некоторые интервалы, так что, если каких-либо значений функции в таблице нет, то нужно брать более подробную таблицу; если же последней нет, то приходится подбирать нужное число более или менее приблизительног сообразуясь с характером изменения чисел таблицы,

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

h. От первых двух недостатков свободен графический способ задания функции.

Чтобы пояснить графический способ рассмотрим такой пример.

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

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

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

Для мягкой стали мы получим следующую кривую (рис. 31):

k. Как мы видим, действительно графический снособ нагляден и дает значения функции для всех значений аргумента. Но третий недостаток и здесь имеет место. Изучать свойства функции заданной графически, все-таки затруднительно.

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

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

Можно привести еще много примеров функций, заданyых математически, из области различных наук.

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

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

n. Математический способ имеет только один недостаток, а именно, формула не дает наглядного представления об изменении функции. Однако этот недостаток мы всегда можем восполнить, так как всегда математический способ задания можно превратить в графический. Это делается так.

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

p. Все сказанное свидетельствует о том, что математический способ задания функций является наиболее выгодным.

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

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

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

Функциональные зависимости

Функциональная зависимость описывает связь между атрибутами и является одним из основных понятий нормализации. Предположим, что реляционная схема имеет атрибуты (A, B, C,…, Z) и вся база может быть представлена в виде одного универсального отношения R=(A, B, C,…, Z). Следовательно, каждый атрибут в базе имеет уникальное имя.

Если A и B – атрибуты некоторого отношения R, и каждое значение А связано с одним и только одним значением В (причем каждый из атрибутов может состоять из одного или нескольких атрибутов), то атрибут В функционально зависим от атрибута А (ВàА).

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

Транзитивная зависимость для атрибутов A, B и C некоторого отношения означает следующее: если АàВ и ВàС, то С транзитивно зависит от атрибута А через атрибут В (при условии, что А функционально не зависит от В или С).

Для исключения избыточности данных, что может привести к потере целостности, необходимо использовать минимально достаточное множество зависимостей.

Проектирование базы данных с помощью нормализации начинают с определения функциональных зависимостей, очевидных с точки зрения семантики, т.е. приведение к первой нормальной форме.

Таблица, находящаяся в первой нормальной форме, должна отвечать следующим требованиям:

1) таблица не должна иметь повторяющихся записей;

2) в таблице должны отсутствовать повторяющиеся группы полей;

3) каждое поле должно быть семантически неделимым.

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

Функциональная зависимость АàВ является полной функциональной зависимостью, если удаление какого либо атрибута из А приводит к утрате этой зависимости. Функциональная зависимость АàВ называется частичной , если в А есть некий атрибут при удалении которого эта зависимость сохраняется.

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

Нормальная форма Бойса-Кода (НФБК) основана на функциональных зависимостях, в которых учитываются все потенциальные ключи отношения, но с более строгими ограничениями.

Детерминантом функциональной зависимости является атрибут (или группа атрибутов), от которого полностью функционально зависит некоторый другой атрибут.

Для проверки принадлежности отношения к НФБК необходимо найти все его детерминанты и убедиться в том, что они являются потенциальными ключами.

Различие между 3НФ и НФБК заключается в том, что функциональная зависимость АàВ допускается в отношении 3НФ, если атрибут В является первичным ключом, а атрибут А не обязательно является потенциальным ключом. В отношении НФБК эта зависимость допускается только тогда, когда атрибут А является потенциальным ключом. Следовательно, НФБК является более строгой версией 3НФ, поскольку каждое отношение НФБК является 3НФ, но не всякое отношение 3НФ является НФБК.

Отношения находятся в НФБК только в том случае, если каждый его детерминант является потенциальным ключом.

Четвертая нормальная форма (4НФ) – отношение в НФБК, которое не содержит нетривиальных многозначных зависимостей.

Многозначная зависимость представляет такую зависимость между атрибутами отношения (например А, В и С), что каждое значение А представляет собой множество значений для В и множество значений для С. Однако множество значений В и С не зависят друг от друга.

Многозначная зависимость может быть дополнительно определена как тривиальная или нетривиальная. Многозначная зависимость АàВ некоторого отношения R определяется как тривиальная, если атрибут В является подмножеством атрибута А или . И наоборот, многозначная зависимость определяется как нетривиальная, если ни то ни другое условие не выполняется. Тривиальная многозначная зависимость не накладывает никаких ограничений на данное отношение, а нетривиальная – накладывает.

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

Пятая нормальная форма (5НФ), которая также называется проективно-соединительной нормальной формой, означает, что отношение в такой форме не имеет зависимостей соединения. Отношение R с подмножеством атрибутов А,В,…,Z удовлетворяет зависимости соединения, если каждое допустимое значение R равно соединению его проекций на подмножества А,В,…,Z.

Метод нормальных форм

Преподаватель

ФИО Долж Оклад Стаж Надб Каф Предм Группа ВидЗан
Иванов И.М. преп СУБД Лабор
Иванов И.М. Преп Информ Лабор
Петров М.И. Ст.преп СУБД Лекция
Петров М.И. Ст.преп Графика Лабор
Сидоров Н.Г. Преп Информ Лекция
Сидоров Н.Г. Преп Графика Лекция
Егоров В.В. Преп ПЭВМ Лекция

Рис. 6.4. Исходное отношение ПРЕПОДАВАТЕЛЬ

Неявная избыточность проявляется в одинаковых окладах у всех преподавателей и в одинаковых надбавках к окладу за одинаковый стаж. Если оклад изменится с 500 руб. до 510руб., то это значение надо изменить у всех преподавателей. Если при этом будет пропущен Сидоров, то база станет противоречивой. Это пример аномалии редактирования отношения с неявной избыточностью.

Исключение избыточности состоит в нормализации отношений.

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

Атрибут В функционально зависит от атрибута А, если каждому значению А соответствует в точности одно значение В. Математически функциональная зависимость В от А обозначается записью А ® В. Это означает, что во всех кортежах с одинаковым значением атрибута а АТРИБУТ в БУДЕТ ИМЕТЬ ТАКЖЕ ОДНО И ТО ЖЕ ЗНАЧЕНИЕ. Атрибуты А и В могут быть составными – состоять из двух и более атрибутов. В отношении Преподаватель Функциональные зависимости следующие: ФИО ® Каф, ФИО ® Долж, Долж ® Оклад и др.

Функциональная взаимозависимость. Если существует функциональная зависимость вида А ® В и В ® А, то между А и В имеется взаимно однозначное соответствие, или функциональная взаимозависимость. Математически взаимозависимость обозначается как А « В или В « А.

Пример. Атрибут N (серия и номер паспорта) находится в функциональной взаимозависимости с атрибутом ФИО (фамилия, имя и отчество), если предполагается, что ситуация наличия в отношении полного совпадения фамилий, имен и отчеств у двух людей исключена.

Частичной функциональной зависимостью называется зависимость неключевого атрибута от части составного ключа. В отношении Преподаватель ключ является составным и состоит из атрибутов ФИО, Предмет и Группа. Все неключевые атрибуты функционально зависят от ключа с различной степенью зависимости. Например, атрибут Должность находится в функциональной зависимости от атрибута ФИО, являющегося частью ключа, т.е. находится в частичной зависимости от ключа.

Полная функциональная зависимость – зависимость неключевого атрибута от всего составного ключа. Например, атрибут ВидЗан находится в полной функциональной зависимости от составного ключа.

Атрибут С зависит от атрибута А транзитивно (существует транзитивная зависимость ), если для атрибутов А, В, С выполняются условия А ® В и В ® С, но обратная зависимость отсутствует. В примере транзитивной зависимостью связаны атрибуты:

ФИО ® Долж ® Оклад

В отношении R атрибут В многозначно зависит от атрибута А, если каждому значению А соответствует множество значений В, не связанных с другими атрибутами из R. Многозначные зависимости могут быть «один ко многим» (1:М), «многие к одному» (М:1) или «многие ко многим» (М:М), Обозначаемые соответственно: А Þ В, А Ü В и А Û В.

В рассматриваемом примере имеется многозначная зависимость М:М между атрибутами ФИО Û Предмет (один преподаватель может вести несколько предметов и один предмет могут вести несколько преподавателей).

Поскольку зависимость между атрибутами является причиной аномалий, то стараются такие отношения разделить на несколько отношений. В результате образуется совокупность связанных отношений (таблиц) со связями вида 1:1, 1:М, М:1 и М:М. Связи между таблицами отражают зависимости между атрибутами различных отношений.

Взаимно независимые атрибуты. Два или более атрибутов называются взаимно независимыми, если ни один из этих атрибутов не является функционально зависимым от других атрибутов. Математически отсутствие зависимости атрибута А от атрибута В обозначается как А Ø® В. Если имеет место А Ø® В и В Ø® А, то взаимная независимость обозначается А Ø= В.

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

Пример. Пусть задано отношение R со схемой R(А1, А2, А3) вида:

А1 А2 А3

Априори известно, сто существуют функциональные зависимости:

А1®А2 и А2®А3.

Из анализа видно, что в отношении существуют еще зависимости:

А1®А3, А1А2®А3, А1А2А3®А1А2, А1А2®А2А3 и т.п..

В отношении отсутствует функциональная зависимость атрибута А1 от атрибута А2 и от атрибута А3, т.е.

А2 Ø® А1, А3 Ø® А1.

Отсутствие зависимости А1 от А2 объясняется тем, что одному и тому же значению атрибута А2 (21) соответствуют разные значения атрибута А1 (12 и 17).

Все существующие функциональные зависимости в отношении составляют полное множество функциональных зависимостей , которое обозначим F + . Полное множество функциональных зависимостей может быть выведено на основе 8 аксиом вывода: рефлективности, пополнения, транзитивности, расширения, продолжения, псевдотранзитивности, объединения и декомпозиции.

В отношении Преподаватель можно вывести следующие функциональные зависимости:

ФИО ® Оклад

ФИО ® Долж

ФИО ® Стаж

ФИО ® Надб

ФИО ® Каф

Стаж ® Надб

Долж ® Оклад

Оклад ® Долж

ФИО. Предм. Группа ® Оклад

Рис. 6.5. Зависимости между атрибутами.

Предполагается, что один преподаватель в одной группе может проводить один вид занятий (лекции или лабораторные работы). ФИО – уникальны. Имеется зависимость ФИО ® Стаж, а обратное утверждение не верно, т.к. одинаковый стаж имеют несколько преподавателей. Относительно других зависимостей рассуждения аналогичны. Между должностью и окладом устанавливается взаимно однозначная зависимость.

Один преподаватель в одной группе по разным предметам может проводить разные виды занятий. Определение ВидаЗанятий связано с указанием ФИО, Предмета и Группы. Действительно, Петров М.И. в 256-й группе читает лекции и проводит лабораторные занятия, но лекции читает по СУБД, а лабораторные работы по Графике.

Зависимости между атрибутами ФИО, Предмет и Группа не выведены, т.к. они образуют составной ключ и не учитываются в процессе нормализации отношения (таблицы).

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

Выделяют следующую последовательность нормальных форм:

° Первая нормальная форма (1НФ);

° Вторая нормальная форма (2НФ);

° Третья нормальная форма (3НФ);

° Усиленная третья нормальная форма, или нормальная форма Бойса-Кодда (БКНФ);

° Четвертая нормальная форма (4НФ);

° Пятая нормальная форма (5НФ).

Первая нормальная форма Отношение находится в 1НФ, если все его атрибуты являются простыми (имеют единственное значение). Исходное отношение строится таким образом, чтобы оно было в 1НФ.

Перевод отношения в следующую нормальную форму осуществляется методом «декомпозиции без потерь», т.е. запросы (выборка данных по условию) к исходному отношению и к отношениям, полученным в результате декомпозиции, должны дать одинаковый результат.

Основной операцией метода декомпозиции является операция проекции.

Пример. Пусть в отношении R(A,B,C,D,E,…) имеется функциональная зависимость С ® D. Декомпозиция отношения R на два новых отношения R1(A, B,C,E,…) и R2(C,D) устранит функциональную зависимость атрибутов и переведет отношение R в следующую нормальную форму. Отношение R2 является проекцией отношения R на атрибуты C и D.

Исходное отношение Преподаватель имеет составной ключ ФИО, Предм, Группа и находится в 1НФ. Атрибуты Стаж, Надб, Каф, Долж, Оклад находятся в функциональной зависимости от части составного ключа – атрибута ФИО . Эта частичная зависимость приводит к явной и неявной избыточности данных, что создает проблемы их редактирования. Часть избыточности устраняется при переводе отношения во 2НФ.

Вторая нормальная форма. Отношение находится во 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от первичного ключа (составного).

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

° Построить проекцию без атрибутов, находящихся в частичной зависимости от первичного ключа;

° Построить проекции на части составного первичного ключа и атрибуты, зависящие от этих частей.

Переведем отношение Преподаватель во 2НФ. В результате получим два отношения R1 и R2.

R1

ФИО Предм Группа ВидЗан
Иванов И.М. СУБД Лабор
Иванов И.М. Информ Лабор
Петров М.И. СУБД Лекция
Петров М.И. Графика Лабор
Сидоров Н.Г. Информ Лекция
Сидоров Н.Г. Графика Лекция
Егоров В.В. ПЭВМ Лекция

Рис. 6.6. Отношения базы данных ПРЕПОДАВАТЕЛЬ во 2 НФ

В отношении R1 первичный ключ составной ФИО, Предм, Группа , в отношении R2 ключ – ФИО. В результате исключена явная избыточность данных о преподавателях. В R2 по-прежнему имеет место неявное дублирование данных.

Для дальнейшего совершенствования переведем отношения в 3НФ.

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

· каждый поставщик имеет только один адрес,

· каждый поставщик поставляет товар по определенной цене,

· товары, поставленные разными поставщиками, могут быть распределены по разным складам, но товар одного наименования, поставляемый одним поставщиком, должен храниться только на одном складе,

· каждый склад имеет свой объем.

Эти ограничения являются зависимостями, которые можно сформулировать следующим образом:

· адрес функционально зависит от поставщика,

· цена функционально зависит от товара и поставщика,

· номер склада функционально зависит от товара и поставщика,

· объем функционально зависит от номера склада.

Функциональная зависимость имеет место, когда значения кортежа на одном множестве атрибутов однозначно определяют значения кортежа на другом множестве атрибутов (или на одном атрибуте).

Пусть отношение r имеет схему R , X и Y – подмножества R . Отношение r удовлетворяет функциональной зависимости X→Y , если π Y (σ X=x (r)) имеет не более чем один кортеж для каждого значения xÎX , т. е. значения атрибутов X однозначно определяют значения атрибутов Y.

Функциональную зависимость будем обозначать следующим образом:

· Поставщик → Адрес,

· {Товар, Поставщик}→ Цена,

· {Товар, Поставщик}→ Склад,

· Склад → Объем.

А читаются они так:

· Поставщик определяет Адрес,

· Товар и Поставщик определяют Цену,

· Товар и Поставщик определяют Склад,

· Склад определяет Объем.

На языке функциональных зависимостей ключ для схемы R – это подмножество KÍR , такое, что K R , и никакое собственное подмножество K¢ÍK этим свойством не обладает.

Нормальные формы

Сформулируем правила, по которым следует проводить де­компо­­зицию отношения. Этот процесс называется нормализацией, т. е. при­­ведением отношения к нормальной форме.

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

Схема отношения R находится в первой нормальной форме (1НФ ), если значения всех атрибутов являются атомарными (не составными), т. е. значение каждого атрибута не является ни списком, ни множеством значений.

Например, атрибут ФИО является составным, состоит из трех данных: фамилии, имени и отчества.

Чтобы привести схему в 1НФ, нужно все составные атрибуты заменить простыми.

Чтобы избавиться от избыточности информации, хранящейся в базе данных, существуют вторая и третья нормальные формы.

Схема отношения R находится во второй нормальной форме (2НФ ), если она находится в первой нормальной форме, и каждый непервичный атрибут функционально полно зависит от первичного ключа.

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

Например, в отношении Поставка первичными атрибутами являются Товар и Поставщик . Атрибут Цена функционально полно зависит от ключа, а атрибут Адрес зависит от части ключа, т. е. только от атрибута Поставщик , это неполная функциональная зависимость. Значит, схема Поставки не находится во 2НФ.

Чтобы привести схему, находящуюся в 1НФ, ко 2НФ, нужно разбить ее на несколько схем:

· выполнить проекцию схемы R на первичные атрибуты и атрибуты, функционально полно зависящие от ключа, т. е. исключить непервичные атрибуты, которые неполно зависят от ключа,

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

В примере с отношением Поставки в результате приведения схемы ко 2НФ получатся два отношения:

Поставки_1 (Товар , Поставщик , Цена, Склад, Объем ),

Поставки_2 (Поставщик , Адрес ).

Однако информация об объеме склада продолжает дублироваться. Для устранения этого недостатка схемы существует третья нормальная форма.

Схема отношения R находится в третьей нормальной форме (3НФ ), если она находится во второй нормальной форме и в ней отсутствуют транзитивные зависимости непервичных атрибутов от ключа.

Что такое транзитивные зависимости? Транзитивная зависимость имеет место, если какой-либо непервичный атрибут функционально зависит от другого непервичного атрибута, а тот в свою очередь функционально зависит от ключа.

Схема отношения Поставки_1 (Товар , Поставщик , Цена, Склад, Объем ) не находится в 3НФ, так как в ней присутствует транзитивная зависимость:

{Товар, Поставщик } → Склад , Склад Объем .

Чтобы привести схему, находящуюся во 2НФ, в 3НФ, нужно:

· выполнить проекцию схемы R на первичные атрибуты и атрибуты, транзитивно не зависящие от ключа, т. е. исключить непервичные атрибуты, которые транзитивно зависят от ключа,

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

В примере с отношением Поставки_1 в результате приведения схемы к 3НФ получатся два отношения:

Поставки_1_1 (Товар , Поставщик , Цена, Склад ),

Поставки_1_2 (Склад , Объем ).

Таким образом, последовательно выполняя разделение исходной схемы отношения на несколько других схем согласно рассмотренным правилам, получаем схему в 3НФ, свободную от аномалий обновления и дублирования информации, о чем говорилось в начале раздела.

Процесс разделения схемы отношения на несколько других схем называется декомпозицией схемы отношения. Декомпозиция, приводящая отношение к одной из нормальных форм, называется нормализацией .

В рассмотренном примере в результате декомпозиции вместо одного отношения Поставки мы получили три новых отношения:

Поставки_1_1 (Товар , Поставщик , Цена, Склад ),

Поставки_1_2 (Склад , Объем ),

Поставки_2 (Поставщик , Адрес ).

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

Как вы заметили, схема в 3НФ избавляет базу данных от дублирования информации и аномалий обновления, но не всегда.

Рассмотрим отношение Лекции (Студент , Предмет , Преподаватель ), которое хранит информацию о том, какие предметы изучают студенты и кто ведет эти предметы. Предметная область накладывает следующие ограничения:

· каждый студент, изучающий данный предмет, обучается только одним преподавателем,

· каждый преподаватель ведет только один предмет, но каждый предмет может вести несколько преподавателей.

Из этих ограничений вытекают следующие функциональные зависимости:

· {Студент, Предмет} → Преподаватель;

· Преподаватель → Предмет.

Из функциональных зависимостей вытекает, что ключом отношения Лекции будет набор атрибутов {Студент , Предмет }.

Отношение Лекции находится в 3НФ. Но оно страдает аномалиями обновления. Если требуется удалить информацию о том, что Петров изучает Физику, то утратится информация о том, что профессор Серов преподает Физику. В то же время информация о том, что профессор Белый ведет Алгебру, дублируется.

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

Отношение находится в нормальной форме Бойса–Кодда (НФБК) , если оно находится в 3НФ и в нем отсутствуют зависимости первичных атрибутов от непервичных. Эквивалентное определение требует, чтобы все левые части функциональных зависимостей были потенциальными ключами.

Приведя отношение к НФБК, мы получим два отношения: Лекции_1 (Студент, Преподаватель ) и Лекции_2 (Преподаватель, Предмет ).

Многозначные зависимости

Атрибут X многозначно определяет атрибут Y в R (или Y многозначно зависит от X ), если каждому значению атрибута X соответствует множество (возможно, пустое) значений атрибута Y , никак не связанных с другими атрибутами R . То есть для наличия в отношении многозначной зависимости необходимо иметь как минимум три атрибута.

Многозначная зависимость обозначается двойной стрелкой: X→→Y .

Рассмотрим отношение Преподаватель (Номер , Имя_ребенка , Предмет , Должность ). Предметная область накладывает следующие ограничения:

· каждый преподаватель может иметь несколько детей,

· каждый преподаватель может вести несколько предметов,

· каждый преподаватель может занимать только одну должность,

· каждый предмет могут вести несколько преподавателей.

Тогда отношение Преподаватель имеет две многозначные зависимости и одну функциональную:

· Номер→→Имя_ребенка,

· Номер→→Предмет,

· Номер→Должность.

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

Для избавления от этих аномалий необходимо привести отношение к четвертой нормальной форме.

Отношение находится в четвертой нармальной форме (4НФ ), если оно находится в нормальной форме Бойса–Кодда и в нем отсутствуют многозначные зависимости, которые не являются функциональными.

После приведения отношения Преподаватель к 4НФ мы получим три отношения:

Преподаватель_1 (Номер , Должность ),

Преподаватель_2 (Номер , Имя_ребенка ),

Преподаватель_3 (Номер , Предмет ).

Свойства декомпозиции

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


Существует несколько способов задания функции: 1.С помощью таблицы. 2.Графический. 3.С помощью формулы. Графиком функции называется множество всех точек координатной плоскости, абсциссы которых равны значениям аргумента, а ординаты - соответствующим значениям функции.



Линейной функцией называется функция, которую можно задать формулой вида y=kx+b, где x – независимая переменная, k и b – заданные числа. Для построения графика линейной функции достаточно найти координаты двух точек графика, отметить эти точки в координатной плоскости и провести через них прямую. Прямая пропорциональность – функция вида у=кх, где х – независимая переменная, к – не равное нулю число. Графиком прямой пропорциональности является прямая, проходящая через начало координат.


Построение графика линейной функции Для построения графика линейной функции необходимо: - выбрать любые два значения переменной х (аргумента), например 0 и 1; - вычислить соответствующие значения переменной y (функции). Полученные результаты удобно записывать в таблицу x01 y - полученные точки А и В изображаем в системе координат; - соединяем по линейке точки А и В. Пример. Построим график линейной функции y = -3·x+6. x01 y63


Обратной пропорциональностью называется функция, которую можно задать формулой вида у=k/х, где х - независимая переменная и k - не равное нулю число. Областью определения такой функции является множество всех чисел, отличных от нуля. Если величины x и y обратно пропорциональны, то функциональная зависимость между ними выражается уравнением y = k / x, где k есть некоторая постоянная величина. График обратной пропорциональности есть кривая линия, состоящая из двух ветвей. Этот график называют гиперболой. В зависимости от знака k ветви гиперболы расположены либо в 1 и 3 координатных четвертях (k положительно), либо во 2 и 4 координатных четвертях (k отрицательно). На рисунке изображен график функции y = k/х, где k – отрицательное число.



ЧАСТНЫЕ СЛУЧАИ ЛИНЕЙНОЙ ФУНКЦИИ. y=kx, k0, b=0 - прямая пропорциональность,. График - прямая, проходящая через начало координат; y=b, k=0, b0. (b>0, выше оси OX; b 0, выше оси OX; b"> 0, выше оси OX; b"> 0, выше оси OX; b" title="ЧАСТНЫЕ СЛУЧАИ ЛИНЕЙНОЙ ФУНКЦИИ. y=kx, k0, b=0 - прямая пропорциональность,. График - прямая, проходящая через начало координат; y=b, k=0, b0. (b>0, выше оси OX; b"> title="ЧАСТНЫЕ СЛУЧАИ ЛИНЕЙНОЙ ФУНКЦИИ. y=kx, k0, b=0 - прямая пропорциональность,. График - прямая, проходящая через начало координат; y=b, k=0, b0. (b>0, выше оси OX; b">