Теория и практика построения баз данных (1088289), страница 38
Текст из файла (страница 38)
Отношение ПРОЖИВАНИЕ можно разделить на два отношения в третьей нормальной форме. На рис. 5,7, б мы видим два отношения, получившиеся в результате этой операции: СТУДЕНТ-ПРО)КИВАНИЕ (НомерСтудента, Общежитие) и ОБЩЕЖИТИЕ- ПЛАТА (Общежитие, Плата). Отношение СЕКЦИЯ на рис. 5.3 также содержит транзитивную зависимость.
В этом отношении НомерСтудента определяет атрибут Секция, а Секция определяет атрибут Плата, Поэтому отношение СЕКЦИЯ не находится в третьей нормальной форме, Разбиение данного отношения на отношения СТУДЕНТ-СЕКЦИЯ (НомерСтудента, Секция) и СЕКЦИЯ-ПЛАТА (Секция, Плата) устраняет аномалии. Нормальная форма Бойса — Кодда (НФБК) К сожалению, даже отношения в третьей нормальной форме могут иметь аномалии. Рассмотрим отношение КОНСУЛЬТАНТ (рис. 5.8, а). Пусть требования к этому отношеникз таковы: 1. Студент может иметь одну или несколько специальностей. 2.
Консультантами по одному и тому же предмету могут быть несколько преподавателей. 3. Каждый преподаватель может быть консультантом только по одной специальности. Будем также предполагать, что у преподавателей не может быть одинаковых фамилий. КОНСУЛЬТАНТ (НомерСтудентв, Специальность, Преподеветепь) Ключ (первичный): (Номерстудентв, Специальность) Ключ (вторичный): (НомерСтудентв, Преподвввтепь) Функциональные зависимости: Преподаватель -+ Специепьность НомерСтудентв Специальность Преподаватель е СТУДЕНТ-КОНСУЛЬТАНТ (НомерСтуденте, Преподаватель) Ключ, НомерСтуденте, Преподаватель НомерСтуденте Преподаватель т КОНСУЛЬТАНТ-ПРЕДМЕТ Ключ: Преподаватель Консультант Предмет Рис.
Б.В. Нормальное форма Бойсе-Кодде: е — отношение, находящееся в ЗНФ, но не в НФБК; б — две отношения, находящиеся в НФБК Поскольку студенты могут специализироваться в нескольких областях, атрибут НомерСтудента не определяет атрибут Специальность. Более того, так как студент может иметь несколько консультантов, НомерСтудента не определяет и атрибут Преподаватель. Таким образом, НомерСтудента сам по себе не может быть ключом. Комбинация (НомерСтудента, Специальность) определяет атрибут Преподаватель, а комбинация (НомерСтудента, Преподаватель) определяет атрибут Специальность.
Следовательно, любая из этих комбинаций может быть ключом. Два или более атрибута или группы атрибутов, которые могут быть ключом, называются ключами-кандидатами (сапдЫаге )геуз). Тот из ключей-кандидатов, который выбирается в качестве ключа, называется первичным кпочом (рг(шагу )геу). Кроме ключей-кандидатов, есть еше одна функциональная зависимость, которую следует рассмотрегтс атрибут Преподаватель определяет атрибут Специальность (любой из преподавателей является консультантом толька по одному предмету; следовательно, зная имя преподавателя, мы можем определить специальность).
Таким образом, Преподаватель является детерминантам. 180 Глава Б. Реляционная модель и нормализация Нормальные формы от первой до пятой 181 По определению, отношение КОНСУЛЬТАНТ находится в первой нормальной форме. Оно также находится во второй нормальной форме, поскольку не имеет неклктчевых атрибутов (каждый из атрибутов является частью минимум одного ключа). Наконец, это отношение находится в третьей нормальной форме, так как це имеет транзитивных зависимостей. Тем не менее, несмотря на все это, отношение имеет аномалии модификации. Пусть студент с номером 300 отчисляется из университета. Если мы удалим строку с информацией о студенте с номером 300, мы потеряем тот факт, что Перле является консультантом па психологии. Это аномалия удаления.
Далее, как мы можем записать в базу тот факт, что Кейнс является консультантом по экономике? Никак, пока не появится хотя бы один студент, специализирующийся на экономике. Это аномалия удаления. Ситуации, подобные только что описанной, приводят нас к определению нормальной форлгы Бойса — Кодда (Воусе-СаЫ поппа1 (огш, ВК/ХР): отношение находится в НФБК, если каждый детерминант является ключом-кандидатом.
Отношение КОНСУЛЬТАНТ не находится в НФБК, поскольку детерминант Преподаватель не является ключом-кандидатом. Как и в других примерах, отношение КОНСУЛЬТАНТ можно разбить на два отношения, не имеющие аномалий. Например, отношения СТУДЕНТ-КОНСУЛЬТАНТ (НомерСтудента, Преподаватель) и КОНСУЛЬТАНТ-ПРЕДМЕТ (Преподаватель, Специальность) не имеют аналгалий, Отношения в НФБК не имея>т аномалий, относящихся к функциональным зависимостям, и некогда казалось, что вопрос с аномалиями модификации на этом исчерпан. Однако вскоре обнаружилось, что аномалиц могут быть обусловлены и иными причинами, нежели функциональные зависимости.
Четвертая нормальная форма ((4НФ) Рассмотрим отношение СТУДЕНТ на рис. 5.9, которое отображает связи между студентами, специальностями и секциями. Предположим, что студенты могут иметь несколько специальностей и заниматься в нескольких различных секциях. В таком случае единственным ключом является комбинация (НомерСтудеита, Специальность, Секция). Например, студентка с номером 100 специализируется на музыке и бухгалтерском учете и, кроме того, посещает секции плавания и тенниса, а студент с номером 150 специализируется только на математике и занимается бегом. Какова связь между атрибутами НомерСтудента и Специальность? Это не функциональная зависимость, поскольку у студента может оыть несколько специальностей. Одному и тому же значению атрибута НоиерСтудента может соответствовать много значений атрибута Специальность.
Помимо того, одному н тому же значению атрибута НомерСп(дента может соответствовать много значений атрибута Секция. Такая зависимость атрибутов называется многозначной зависимостью (пш1(1- уа1пе перепг)епсу). Многозначные зависимости приводят к аномалиям модификации. Для начала обратите внимание на избыточность данных на рис. 5.9. Студентке с номером 100 посвящено четыре записи, в каждой из которых указана одна из ее специализапий и одна иэ посещаемых ею секций.
Если бы те же данные хранились в меньшем количестве строк (скажем, было бы две строки — одна для музыки и гглавания, а другая для бухгалтерского учета и тенниса), это дезориентировала бы пользователей. Получалось бы, что студентка с номером 100 плавает только тогда, когда специализируется на музыке, а в деннис играет только тогда, когда специализируется на бухгалтерскол1 учете. Но такая интерпретация нелогична. Специальности и секции савеершепно независимы друг от друга. Полому, чтобы избежать таких неверных заклктчений, мы храним все сочетания специальностей и секций. СТУЛЕНТ (НомерСзуденге, Специальность, Секция) Ключ: (НомерСгуденге, Специальность, Секция) Многозначные зависимости; НомерСтудентв -+ -« Специальность НомерСзуденте — з †> Секция НомерСтуденте Специальность Секция Рис.
Вдм Отношение с многознвчными зависимостями Допустим, что студентка с номером 100 решила записаться в секцию лыж, и поэтому мы добавляем в таблицу строку (100, Музыка, Лыжи], как показано на рис. 5.10, а. В данный момент из отношения можно сделать вывод, что студентка 100 занимается лыжами только как музыкант, но не как бухгалтер. Чтобы данные имели согласованный характер, мы должны добавить столько строк, сколько имеется специальностей, и в каждой из них указать секцию лыж, Таким образом, мы должны добавить строку (100, Бухгалтерский учет, Лыжи], как показано на рис.
5.10, б. Это аномалия обновления: требуется слишком многа модификаций, чтобы внести одно простое изменение. Вообще говоря, мпогозначная зависимость существует, когда отношение имеет минимум три атрибута, причем два из них являются многозначными, а их значения зависят толька от третьего атрибута. Другими словами, в отношении В (А В, С) существует многозначная зависимость, если А многозначным образом определяет В и С, а сами В и С не зависят друг от друга. Как мы видели из предыдущего примера, НомерСтудента многозначно определяет атрибуты Специальность и Секция, на сами Специальность и Секция не зависят друг от друга, Вернемся вновь к рис. 5.9.
Обратите внимание на то, как обозначаются многозначные зависимости: НомерСгудента» Специальность и НомерСтуденга» Секция. Это читается следующим образом: «атрибут НокерСтудента многозначна определяет атрибут Специальностьз и «атрибут НомерСтуденга многозначно определяет СТУДЕНТ-СПЕЦИАЛЬНОСТЬ (НомерСтудвнтв, Специальность) Ключ; (НомврСтудентв, Специальность) СТУДЕНТ-СЕКЦИЯ (Номврстудента, Секция) Ключ:(НомврСтудвнтв, Секция) НомврСтудвнтв Специальность НомврСтудвнтв Секция НомврСтудвнтв Спвциапьнооть Секция 182 Глава 5.
Реляционная модель и нормализация атрибут Секция». Данное отношение находится в НФБК (2НФ вЂ” поскольку его ключом является совокупность всех атрибутов, ЗНФ вЂ” так как отсутствуют транзитивцые зависимости, и НФБК вЂ” поскольку нет неключевых детерминантов). Однако, как мы убедились, оно имеет аномалии: если студент берет дополнительную специальность, мы должны добавить в отношение столько строк, в скольких секциях данный студент занимается, и в каждой из этих строк указать новую специальность. То же самое справедливо и для случая, когда студент записывается в новую секцию. Если студент отказывается от одной из специальностей, мы должны удалить все строки, где указана данная специальность. Если студент занимается в четырех секциях, то название специапьности будет содержаться в четырех строках, и все эти строки необходимо будет удалить.