Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (1084484), страница 31
Текст из файла (страница 31)
Естественно предположить, что все служащие в одной комнате имеют один и тот же телефон. Следовательно, в рассматриваемом отношении имеется избыточное дублирование данпых. Так, в связи с тем, что Сидоров и Егоров находятся в той же комнате, ч то иПетров, их номера можно узнать из кортежа со сведениями о Петрове.На рис. 5.26 приведен пример неудачного отношения С_Т_Н, в которомвместо телефонов Сидорова и Егорова поставлены прочерки (неопределенные значения). Неудачность подобного способа исключения избыточностизаключается в следующем. Во-первых, при программировании придется потратить дополнительные усилия на создание механизма поиска информации5. Проектирование баз данных151с_т_нСотрудникТелефон Н_комнИванов И.М.3721Петров М.И.б)С_Т_НСотрудникТелефонН_комн109Иванов И.М.37211094328111Петров М.И.4328111Сидоров Н.Г. 4328111Сидоров Н.Г.—111Егоров В.В.111Егоров В.В.—1114328Рис.
5.2. Избыточное дублированиедля прочерков таблицы. Во-вторых, память все равно выделяется под атрибуты с прочерками, хотя дублирование данных и исключено. В-третьих, чтоособенно важно, при исключении из коллектива Петрова кортеж со сведениями о нем будет исключен из отношения, а значит, уничтожена информацияо телефоне 111-й комнаты, что недопустимо.Возможный способ выхода из данной ситуации приведен на рис, 5.3. Здесьпоказаны два отношения С_Н и Н_Т, полученные путем декомпозиции исходного отношения С_Т_Н. Первое из них содержит информацию о номерахкомнат, в которых располагаются сотрудники, а второе - информацию о номерах телефонов в каждой из комнат.
Теперь, если Петрова и уволят из учреждения и, как следствие этого, удалят всякую информацию о нем из базданных учреждения, это не приведет к утере информации о номере телефонав 111-й комнате.Т_НС_НТелефонН_комнСотрудникН_комн3721109Иванов И.М.1094328111Петров М.И.111Сидоров Н.Г.111Егоров В.В.111Рис. 5.3. Исключение избыточного дублированияПроцедура декомпозиции отношения С_Т_Н на два отношения С_Н и Н_Тявляется основной процедурой нормализации отношений.Избыточное дублирование данных создает проблемы при обработке кортежей отношения, названные Э. Коддом «аномалиями обновления отношения». Он показал, что для некоторых отношений проблемы возникают припопытке удаления, добавления или редактирования их кортежей.Часть 2.
Проектирование и использование БД152Аномалиями будем называть такую ситуацию в таблицах БД, которая приводит к противоречиям в БД либо существенно усложняет обработку данных.Выделяют три основные вида аномалий: аномалии модификации (или редактирования), аномалии удаления ^ а н о м а л и и добавления.Аномалии модификации проявляются в том, что изменение значения одного данного может повлечь за собой просмотр всей таблицы и соответствующее изменение некоторых других записей таблицы.Так, например, изменение номера телефона в комнате 111 (рис.
5.2а), чтопредставляет собой один единственный факт, потребует просмотра всей таблицы С _ Т _ Н и изменения поля Н_комн согласно текущему содержимомутаблицы в записях, относящихся к Петрову, Сидорову и Егорову.Аномалии удаления состоят в том, что при удалении какого-либо данного изтаблицы может пропасть и другая информация, которая не связана напрямую судаляемым данным.В той же таблице С_Т_Н удаление записи о сотруднике Иванове (например, по причине увольнения или ухода на заслуженный отдых) приводит к исчезновению информации о номере телефона, установленного в 109-й комнате.Аномалии добавления возникают в случаях, когда информацию в таблицунельзя поместить до тех пор, пока она неполная, либо вставка новой записитребует дополнительного просмотра таблицы.Примером может служить операция добавления нового сотрудника все в ту жетаблицу С_Т_Н.
Очевидно, будет противоестественным хранение сведений в этойтаблице только о комнате и номере телефона в ней, пока никто из сотрудников непомещен в нее. Более того, если в таблице С_Т_Н поле Служащий является ключевым, то хранение в ней неполных записей с отсутствующей фамилией служащего просто недопустимо из-за неопределенности значения ключевого поля.Вторым примером возникновения аномалии добавления может быть ситуация включения в таблицу нового сотрудника. При добавлении таких записей для исключения противоречий желательно проверить номер телефонаи соответствующий номер комнаты хотя бы с одним из сотрудников, сидящих с новым сотрудником в той же комнате.
Если же окажется, что у нескольких сотрудников, сидящих в одной комнате, имеются разные телефоны, товообще не ясно, что делать (то ли в комнате несколько телефонов, то ли какой-то из номеров ошибочный).ФормированиеисходногоотношенияПроектирование БД начинается с определения всех объектов, сведения окоторых будут включены в базу, и определения их атрибутов. Затем атрибуты сводятся в одну таблицу - исходное отношение.Пример. Формирование исходного отношения.Предположим, что для учебной части факультета создается БД о преподавателях. На первом этапе проектирования БД в результате общения с за-5. Проектирование баз данных153казчиком (заведующим учебной частью) должны быть определены содержащиеся в базе сведения о том, как она должна использоваться и какую информацию заказчик хочет получать в процессе ее эксплуатации.
В результате устанавливаются атрибуты, которые должны содержаться в отношениях БД, и связи между ними. Перечислим имена выделенных атрибутов иих краткие характеристики:ФИО - фамилия и инициалы преподавателя. Исключаем возможность совпадения фамилии и инициалов у преподавателей.Должн - должность, занимаемая преподавателем.Оклад - оклад преподавателя.Стаж - преподавательский стаж.Д_Стаж - надбавка за стаж.Каф - помер кафедры, на которой числится преподаватель.Предм - название предмета (дисциплины), читаемого преподавателем.Группа - номер группы, в которой преподаватель проводит занятия.ВидЗан - вид занятий, проводимых преподавателем в учебной группе.Одно из требований к отношениям заключается в том, чтобы все атрибутыотношения имели атомарные (простые) значения.
В исходном отношениикаждый атрибут кортежа также должен быть простым. Пример исходногоотношения ПРЕПОДАВАТЕЛЬ приведен на рис, 5.4.ПРЕПОДАВАТЕЛЬФИОДолжнОкладСтаж Д_СтажКафПредмГруппаВидЗанИванов И.М.преп500510025СУБД256ПрактИванов И.М.преп500510025ПЛ/1123ПрактПетров М.И.ст.преп800710025СУБД256ЛекцияПетров М.И.ст. преп800710025Паскаль256ПрактСидоров Н.Г.преп5001015025ПЛ/1123ЛекцияСидоров Н.Г.преп5001015025Паскаль256ЛекцияЕгоров В.В.преп500510024ПЭВМ244ЛекцияРис. 5Л.
Исходное отношение П Р Е П О Д А В А Т Е Л ЬУказанное отношение имеет следующую схему П Р Е П О Д А В А Т Е Л Ь( Ф И О , Должн, Оклад, Стаж, Д_Стаж, Каф, Предм, Группа, ВидЗан).Исходное отношение ПРЕПОДАВАТЕЛЬ содержит избыточное дублирование данных, которое и является причиной аномалий редактирования. Различают избыточность явную и неявную.Часть 2. Проектирование и использование БД154Явная избыточность заключается в том, что в отношении ПРЕПОДАВАТ Е Л Ь строки с данными о преподавателях, проводящих занятия в нескольких группах, повторяются соответствующее число раз.
Например, в отношении П Р Е П О Д А В А Т Е Л Ь все данные по Иванову повторяются дважды. Поэтому, если Иванов И.М. станет старшим преподавателем, то этот факт должен быть отражен в обеих строках. В противном случае будет иметь местопротиворечие в данных, что является примером аномалии редактирования,обусловленной явной избыточностью данных в отношении.Неявная избыточность в отношении П Р Е П О Д А В А Т Е Л Ь проявляется водинаковых окладах у всех преподавателей и в одинаковых добавках к окладу за одинаковый стаж. Поэтому, если при изменении окладов за должность с500 на 510 это значение изменят у всех преподавателей, кроме, например, Сидорова, то база станет противоречивой. Это пример аномалии редактирования для варианта с неявной избыточностью.Средством исключения избыточности в отношениях и, как следствие, аномалий является нормализация отношений, рассмотрим ее более подробно.5.2.
Метод нормальных формПроектирование БД является одним из этапов жизненного цикла информационной системы. Основной задачей, решаемой в процессе проектирования БД, является задача нормализации ее отношений. Рассматриваемый нижеметод нормальных форм является классическим методом проектированияреляционных БД. Этот метод основан на фундаментальном в теории реляционных баз данных понятии зависимости между атрибутами отношений.ЗависимостимеждуатрибутамиРассмотрим основные виды зависимостей между атрибутами отношений:функциональные, транзитивные и многозначные.Понятие функциональной зависимости является базовым, так как на егооснове формулируются определения всех остальных видов зависимостей.Атрибут В функционально зависит от атрибута А, если каждому значению А соответствует в точности одно значение В.
Математически функциональная зависимость В от А обозначается записью А—>В. Это означает, что вовсех кортежах с одинаковым значением атрибута А атрибут В будет иметьтакже одно и то же значение. Отметим, что А и В могут быть составными состоять из двух и более атрибутов.В отношении на рис.
5.4 можно выделить функциональные зависимостимежду атрибутами Ф И О - > К а ф , Ф И О - > Д о л ж н , Д о л ж н - Ю к л а д и другие.Наличие функциональной зависимости в отношении определяется природойвещей, информация о которых представлена кортежами отношения. В отио-5. Проектирование баз данных155шении на рис, 5.4 ключ является составным и состоит из атрибутов ФИО,Предмет, Группа.Функциональная взаимозависимость.Если существует функциональная зависимость вида А->В и В—>А, то между А и В имеется взаимно однозначное соответствие, или функциональная взаимозависимость. Наличиефункциональной взаимозависимости между атрибутами А и В обозначим какА<->В или В<-»А.Пример.
Пусть имеется некоторое отношение, включающее два атрибута,функционально зависящие друг от друга. Это серия и номер паспорта (N) ифамилия, имя и отчество владельца ( Ф И О ) . Наличие функциональной зависимости поля Ф И О от N означает не только тот факт, что значение поля Nоднозначно определяет значение поля Ф И О , но и то, что одному и тому жезначению поля N соответствует только единственное значение поля Ф И О .Понятно, что в данном случае действует и обратная ФЗ: каждому значениюполя Ф И О соответствует только одно значение поля N. В данном примерепредполагается, что ситуация наличия полного совпадения фамилий, имен иотчеств двух людей исключена.Если отношение находится в 1НФ, то все неключевые атрибуты функционально зависят от ключа с различной степенью зависимости.Частичной зависимостью (частичной функциональнойзависимостью) называется зависимость неключевого атрибута от части составногоключа.
В рассматриваемом отношении атрибут Должн находится в функциональной зависимости от атрибута Ф И О , являющегося частью ключа.Тем самым атрибут Должн находится в частичной зависимости от ключаотношения.Альтернативным вариантом является полная функциональнаязависимость неключевого атрибута от всего составного ключа. В нашем примереатрибут ВидЗан находится в полной функциональной зависимости от составного ключа.Атрибут С зависит от атрибута А транзитивно (существует транзитивная зависимость), если для атрибутов А, В, С выполняются условия А—>В иВ—>С, но обратная зависимость отсутствует.
В отношении на рис. 5.4 транзитивной зависимостью связаны атрибуты:ФИО-»Должн-»ОкладМежду атрибутами может иметь место многозначная зависимость.В отношении R атрибут В многозначно зависит от атрибута А, если каждому значению А соответствует множество значений В, не связанных с другимиатрибутами из R.Многозначные зависимости могут быть «один ко многим» (1:М), «многие кодному» (М:1) или «многие ко многим» (М:М), обозначаемые соответственно:А=>В, А<=В и А о В .Часть 2.