Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (960530), страница 32
Текст из файла (страница 32)
Это пример аномалии редактирования для варианта с неявной избыточностью.Средством исключения избыточности в отношениях и, как следствие, аномалий является нормализация отношений, рассмотрим ее более подробно.5.2. Метод нормальных формПроектирование БД является одним из этапов жизненного цикла информационной системы. Основной задачей, решаемой в процессе проектирования БД, является задача нормализации ее отношений. Рассматриваемый нижеметод нормальных форм является классическим методом проектированияреляционных БД. Этот метод основан на фундаментальном в теории реляционных баз данных понятии зависимости между атрибутами отношений.ЗависимостимеждуатрибутамиРассмотрим основные виды зависимостей между атрибутами отношений:функциональные, транзитивные и многозначные.Понятие функциональной зависимости является базовым, так как на егооснове формулируются определения всех остальных видов зависимостей.Атрибут В функционально зависит от атрибута А, если каждому значению А соответствует в точности одно значение В.
Математически функциональная зависимость В от А обозначается записью А—>В. Это означает, что вовсех кортежах с одинаковым значением атрибута А атрибут В будет иметьтакже одно и то же значение. Отметим, что А и В могут быть составными состоять из двух и более атрибутов.В отношении на рис. 5.4 можно выделить функциональные зависимостимежду атрибутами Ф И О - > К а ф , Ф И О - > Д о л ж н , Д о л ж н - Ю к л а д и другие.Наличие функциональной зависимости в отношении определяется природойвещей, информация о которых представлена кортежами отношения. В отио-5.
Проектирование баз данных155шении на рис, 5.4 ключ является составным и состоит из атрибутов ФИО,Предмет, Группа.Функциональная взаимозависимость.Если существует функциональная зависимость вида А->В и В—>А, то между А и В имеется взаимно однозначное соответствие, или функциональная взаимозависимость. Наличиефункциональной взаимозависимости между атрибутами А и В обозначим какА<->В или В<-»А.Пример. Пусть имеется некоторое отношение, включающее два атрибута,функционально зависящие друг от друга. Это серия и номер паспорта (N) ифамилия, имя и отчество владельца ( Ф И О ) .
Наличие функциональной зависимости поля Ф И О от N означает не только тот факт, что значение поля Nоднозначно определяет значение поля Ф И О , но и то, что одному и тому жезначению поля N соответствует только единственное значение поля Ф И О .Понятно, что в данном случае действует и обратная ФЗ: каждому значениюполя Ф И О соответствует только одно значение поля N. В данном примерепредполагается, что ситуация наличия полного совпадения фамилий, имен иотчеств двух людей исключена.Если отношение находится в 1НФ, то все неключевые атрибуты функционально зависят от ключа с различной степенью зависимости.Частичной зависимостью (частичной функциональнойзависимостью) называется зависимость неключевого атрибута от части составногоключа.
В рассматриваемом отношении атрибут Должн находится в функциональной зависимости от атрибута Ф И О , являющегося частью ключа.Тем самым атрибут Должн находится в частичной зависимости от ключаотношения.Альтернативным вариантом является полная функциональнаязависимость неключевого атрибута от всего составного ключа. В нашем примереатрибут ВидЗан находится в полной функциональной зависимости от составного ключа.Атрибут С зависит от атрибута А транзитивно (существует транзитивная зависимость), если для атрибутов А, В, С выполняются условия А—>В иВ—>С, но обратная зависимость отсутствует.
В отношении на рис. 5.4 транзитивной зависимостью связаны атрибуты:ФИО-»Должн-»ОкладМежду атрибутами может иметь место многозначная зависимость.В отношении R атрибут В многозначно зависит от атрибута А, если каждому значению А соответствует множество значений В, не связанных с другимиатрибутами из R.Многозначные зависимости могут быть «один ко многим» (1:М), «многие кодному» (М:1) или «многие ко многим» (М:М), обозначаемые соответственно:А=>В, А<=В и А о В .Часть 2.
Проектирование и использование БД156Например, пусть преподаватель ведет несколько предметов, а каждыйпредмет может вестись несколькими преподавателями, тогда имеет местозависимость ФИОФФПредмет. Так, из таблицы 7.2, приведенной на рис. 5.1,видно, что преподаватель Иванов И.М. ведет занятия по двум предметам, адисциплина С У Б Д - читается двумя преподавателями: Ивановым И.М. иПетровым М.И.Замечание.
В общем случае между двумя атрибутами одного отношениямогут существовать зависимости: 1:1, 1:М, М:1 иМ:М. Поскольку зависимостьмежду атрибутами является причиной аномалий, стараются расчленить отношения с зависимостями атрибутов на несколько отношений. В результате образуется совокупность связанных отношений (таблиц) со связями вида 1:1,1 :М,М:1 и М:М (подраздел 3.3). Связи между таблицами отражают зависимостимежду атрибутами различных отношений.Взаимно независимые атрибуты. Два или более атрибута называютсявзаимно независимыми, если ни один из этих атрибутов не является функционально зависимым от других атрибутов.В случае двух атрибутов отсутствие зависимости атрибута А от атрибутаВ можно обозначить так: A-i—>В.
Случай, когда А-.->В и B-i->A, можно обозначить А-п=В.ВыявлениезависимостеймеждуатрибутамиВыявление зависимостей между атрибутами необходимо для выполнения проектирования БД методом нормальных форм, рассматриваемого далее.Основной способ определения наличия функциональных зависимостей —внимательный анализ семантики атрибутов. Для каждого отношения существует, но не всегда, определенное множество функциональных зависимостей междуатрибутами. Причем если в некотором отношении существует одна или несколькофункциональных зависимостей, можно вывести другие функциональные зависимости, существующие в этом отношении.Пример. Пусть задано отношение R со схемой R(A1, А2, A3) и числовымизначениями, приведенными в следующей таблице:А1А2A31221341721341124331325311523351422325.
Проектирование баз данных157Априори известно, что в R существуют функциональные зависимости:А1-> А2и А2-> A3.Анализируя это отношение, можно увидеть, что в нем существуют еще зависимости:А1—» A3, А1А2-> A3, Al А2АЗ-> Al А2,А1А2—> А2АЗ и т. п.В то же время в отношении нет других функциональных зависимостей,что во введенных нами обозначениях можно отразить следующим образом:А2—I—>А1, A3-i-»Al и т. д.Отсутствие зависимости А1 от А2 (А2—.—>А1) объясняется тем, что одному и тому же значению атрибута А2 (21) соответствуют разные значения атрибута А1 (12 и 17).
Другими словами, имеет место многозначность, а не функциональность.Перечислив все существующие функциональные зависимости в отношении R, получим полное множество функциональных зависимостей, котороеобозначим F +.Таким образом, для последнего примера исходное множество F = (Al-> А2,A3), а полное множество F + = (Al-> А2, А2-> A3, А1-» A3, А1 А2-> A3,А1А2АЗ-» А1А2, А1А2-* А2АЗ,...).Для построения F + из F необходимо знать ряд правил (или аксиом) вывода одних функциональных зависимостей из других.Существует 8 основных аксиом вывода: рефлексивности, пополнения,транзитивности, расширения, продолжения, псевдотранзитивности, объединения и декомпозиции.
Перечисленные аксиомы обеспечивают получениевсех ФЗ, т. е. их совокупность применительно к процедуре вывода можно считать «функционально полной». Содержание аксиом и соответствующие примеры приведены в Приложении 1.Выявим зависимости между атрибутами отношения ПРЕПОДАВАТЕЛЬ,приведенного на рис. 5.4. При этом учтем следующее условие, которое выполняется в данном отношении: один преподаватель в одной группе можетпроводить один вид занятий (лекции или практические занятия).В результате анализа отношения получаем зависимости между атрибутами, показанные на рис. 5.5.К выделению этих Ф З для рассматриваемого примера приводят следующие соображения.Фамилия, имя и отчество у преподавателей факультета уникальны.
Каждому преподавателю однозначно соответствует его стаж, т. е. имеет место функциональная зависимость ФИО—>Стаж. Обратное утверждение неверно, таккак одинаковый стаж может быть у разных преподавателей.Часть 2. Проектирование и использование БД158а)ФИО ОкладФИО ДолжнФИО СтажФИО Д_СтажФИО КафСтаж Д_СтажДолжн ОкладОклад ДолжнФИО.Предм.Группаб)ВидЗанРис. 5.5. Зависимости между атрибутамиКаждый преподаватель имеет определенную добавку за стаж, т.
е. имеетместо функциональная зависимость ФИО—>Д_Стаж, но обратная функциональная зависимость отсутствует, так как одну и ту же надбавку могут иметьнесколько преподавателей.Каждый преподаватель имеет определенную должность (преп., ст.преп.,доцент, профессор), но одну и ту же должность могут иметь несколько преподавателей, т. е. имеет место функциональная зависимость ФИО—>Должн, аобратная функциональная зависимость отсутствует.Каждый преподаватель является сотрудником одной и только одной кафедры. Поэтому функциональная зависимость ФИО—> Каф имеет место.С другой стороны, на каждой кафедре много преподавателей, поэтому обратной функциональной зависимости нет.Каждому преподавателю соответствует конкретный оклад, который одинаков для всех педагогов с одинаковыми должностями, что учитывается зависимостями Ф И О—Юклад и Должн—Юклад.
Нет одинаковых окладов для разных должностей, поэтому имеет место функциональная зависимость Оклад—>Должн.Один и тот же преподаватель в одной группе по разным предметам может проводить разные виды занятий. Определение вида занятий, которыепроводит преподаватель, невозможно без указания предмета и группы, поэтому имеет место функциональная зависимость Ф И О , Предм, Группа—ВидЗан.
Действительно, Петров М.И. в 256-й группе читает лекции и проводит практические занятия. Но лекции он читает по СУБД, а практику проводит по Паскалю.Нами не были выделены зависимости между атрибутами Ф И О , Предм иГруппа, поскольку они образуют составной ключ и не учитываются в процессе нормализации исходного отношения.После того, как выделены все функциональные зависимости, следует проверить их согласованность с данными исходного отношения ПРЕПОДАВАТ Е Л Ь (рис. 5.4).5.