Kolokvium / KOR_2
.DOCНОРМАЛИЗАЦИЯ ОТНОШЕНИЙ
Задача группировки имен реквизитов в отношения, набор которых заранее не фиксирован, допускает множество различных вариантов решений. Рациональные варианты группировки должны учитывать следующие требования:
корректировка отношений не должна приводить к двусмысленности или потере информации;
перестройка набора отношений при введении новых типов данных должна быть минимальной.
Нормализация представляет собой один из наиболее изученных способов преобразования отношений, позволяющих улучшить характеристики Сей и базы данных по перечисленным критериям.
Среди зависимостей между реквизитами отношения специально выделяются функциональные зависимости. Реквизит В отношения r функционально зависит от реквизита А, если в каждый момент времени каждому значению А соответствует не более чем одно значение В. В свою очередь А функционально определяет В. Иллюстрирует это понятие рис. 3.1; каждое ребро в графе определяет элемент отношения r(А, В). Функциональная зависимость В от А соответствует понятию однозначной функции B = f(A). Данное определение легко распространяется на случай зависимости между группами реквизитов. Группу М составим из реквизитов А1, А2, ..., Аm, группу N - из реквизитов B1, В2, ..., Вn. Кортежи отношений r[M] и r[N] будем считать значениями групп реквизитов М и N. С учетом этого к М и N применимо общее определение функциональной зависимости.
Рис. 3.1. Зависимости между реквизитами:
а - функциональная А®B, б - нефункциональная (кортежи < а3 , в1 >,< а2 , в2> нарушают свойство функциональности), в - взаимно - однозначная A«B.
Наличие функциональной зависимости реквизита В от реквизита А обозначается r. А® r. В, ее отсутствие r. А® r. B. Если ясно, о каком отношении идет речь, то пишут А®В или А®В. Случай А® В, В®А обозначается A«B и называется взаимно - однозначным соответствием (рис. 3.1, е). Очевидно, что в случае А®В число элементов в реквизите А больше, чем в реквизите В, а при взаимно - однозначном соответствии число элементов одинаково.
При обработке отношений очень важно различать кортежи по содержащимся в них значениям реквизитов, а не по взаимному расположению кортежей. С этой целью вводятся понятия вероятного и первичного ключей.
Вероятный ключ К отношения r является комбинацией из п реквизитов (возможно n = 1), обладающей следующими двумя свойствами: уникальностью (значения К (понимаемые как строки проекции r[К]) и кортежи отношения r находятся во взаимно - однозначном соответствии); неизбыточностью. Набор реквизитов в K нельзя сократить без нарушения первого свойства.
Вероятный ключ всегда существует, так как все реквизиты отношения заведомо обладают первым свойством.
Если в отношении существует несколько вероятных ключей , те для идентификации кортежей используется один из них, называемый первичным. Реквизиты, не входящие ни в какой ключ, называются неосновными. В ряде случаев удобно ввести искусственный первичный ключ в виде нумерации кортежей отношения. Номер кортежа пни этом должен стать одним из реквизитов этого отношения.
Найдем, например, ключи в отношении Q (ПРЕДПРИЯТИЕ, АДРЕС, ПРОДУКЦИЯ, ВЫПУСК).
Различных предприятий, естественно, меньше, чем различных кортежей в Q, так как предприятие может выпускать несколько видов продукции. Аналогично данная продукция может выпускаться несколькими предприятиями. Поэтому ни ПРЕДПРИЯТИЕ, ни ПРОДУКЦИЯ по отдельности вероятного ключа не образуют. Вместе они составляют вероятный ключ, поскольку ВЫПУСК и АДРЕС ими однозначно определяются. Если учесть зависимость ПРЕДПРИЯТИЕ«АДРЕС, то появляется еще один вероятный ключ АДРЕС, ПРОДУКЦИЯ.
Легко доказать, что каждый неключевой реквизит из отношения r функционально зависит от каждого вероятного ключа из r. При предположении обратного возникаем противоречие с понятием вероятного ключа. По той же причине два вероятных ключа всегда находятся во взаимно - однозначном соответствии .
Для отношения Q можно теперь вывести зависимости:
ПРЕДПРИЯТИЕ, ПРОДУКЦИЯ «АДРЕС
ПРЕДПРИЯТИЕ, ПРОДУКЦИЯ«ВЫПУСК
АДРЕС, ПРОДУЩИЯ«ПРЕДПРИЯТИЕ
АДРЕС, ПРОДУКЦИЯ«ВЫПУСК
ПРЕДПРИЯТИЕ, ПРОДУКЦИЯ«АДРЕС, ПРОДУКЦИЯ
Важное свойство составного (многореквизитного) вероятного ключа состоит в том, что никакие два входящих в него реквизита не могут быть связаны функциональной зависимостью. Рассмотрим отношение R с составным ключом ABC и зависимостью В®С. Докажем, что в отношении R`, полученном из R отбрасыванием реквизита С, столько же кортежей, что и в самом R. Допустим обратное. Тогда в R найдетcя строка аb (аÎА, bÎВ), которой в R соответствуют по крайней мере две строки аbc1 и аbс2 (с1 , с2 ÎС), а это противоречит функциональной зависимости В®С. Отсюда следует, что ключ АВС является избыточным.
Следовательно, в отношении Q
ПРЕД ПРИМ ТИЕ®ПРОДУКЦИЯ
ПРОДУКЦИЯ ®ПРЕДПРИЯТИЕ
АДРЕС ®ПРОДУКЦИЯ
ПРОДУКЦИЯ®АДРЕС
Следующие три свойства функциональных зависимостей справедливы как для отдельных реквизитов, так и для групп реквизитов. Поэтому условимся, что реквизиты Аi ( i =), Вj (j =) и Сk () принадлежат одному отношению R. Могут быть сформулированы следующие теоремы, принадлежащие Армстронгу:
1 ) А1 А2 . . . Аm, Аi , для i = .
2) А1 А2 . . .Аm ® B1 B2 ... Вr тогда и только тогда, когда А1 А2 . . . Аm ®Вj для любого j = .
-
Если А1 А2 . . .Аm ® B1 B2 ... Вr и B1 B2 ... Вr® С1С2 . . . Ср , то А1 А2 .Аm ® С1С2 . . . Ср.
В отношении Q можно выделить следующие зависимости, вытекающие из теорем Армстронга:
ПРЕДПРИЯТИЕ, ПРОДУКЦИЯ®ПРЕДПРИЯТИЕ
ПРЕДПРИЯТИЕ, ПРОДУКЦИЯ®ПРОДУКЦИЯ
АДРЕС, ПРОДУКЦИЯ®АДРЕС
АДРЕС, ПРОДУКЦИЯ®ПРОДУКЦИЯ
ПРЕДПРИЯТИЕ, ПРОДУКЦИЯ®АДРЕС, ВЫПУСК
АДРЕС, ПРОДУКЦИЯ®ПРЕДПРИЯТИЕ, ВЫПУСК
Приведенные теоремы о функциональных зависимостях (список их может быть расширен) позволяют формализовать и автоматизировать процесс установления таких зависимостей.
Совокупность функциональных зависимостей может быть изображена графически в виде диаграммы. Вершинами диаграммы функциональных зависимостей являются различные группы имен реквизитов. Дуга от вершины к вершине означает наличие функциональной зависимости между соответствующими группами реквизитов. Зависимости, которые следуют из теорем Армстронга, на диаграмме, как правило, не показываются. Диаграмма функциональных зависимостей отношения Q приведена на рис. 3.2. Вероятные ключи на любой диаграмме функциональных зависимостей соответствуют вершинами которые не заходит ни одна дуга. Многореквизитный ключ обводится рамкой.
Функциональные зависимости и вероятные ключи отношений должны учитываться при выполнении операций реляционной алгебры. В качестве примера рассмотрим реализацию эквисоединения. Пусть отношение R (A, B, С) с помощью операции проекции разделено на R1 (A, В) и R2 (B, С). Таблицы значений отношений R и Т = совпадают только тогда, когда реквизит В является вероятным ключом в R1 или R2 А, В и С можно рассматривать и как группы реквизитов.
Наличие в отношении достаточно большого числа функциональных зависимостей обычно приводит к усложнению процессов корректировки. Например, исключение или замена одного значения реквизита, который функционально зависит от многих других реквизитов, требует исключения или замены большого количества строк отношения. Поэтому целесообразно все отношения трансформировать в отношения более простой структуры, у которых функциональные зависимости взаимосвязаны простейшим способом. Такой процесс преобразования отношений называется нормализацией, а отношения, для которых не допускаются те или иные варианты функциональных зависимостей, называются нормальными формами.
Первая нормальная форма отношения (сокращенно1НФ) определяется условием - среди значений реквизитов не должно быть кортежей. Ненормализованные СЕИ не соответствуют условиям 1НФ, а нормализованные СЕИ находятся в 1НФ. Если предполагается для обработки извлекать только часть реквизита (например, из даты только год), то отношение, содержащее такой реквизит, не находится в 1НФ.
Условия, определяющие 1НФ отношения, не содержат никаких ограничений на возможные варианты функциональных зависимостей. Поэтому создание и корректировка значений в отношении, находящемся в 1НФ, часто бывают затруднены. В рассмотренное ранее отношение Q, в котором соблюдаются условия 1НФ, невозможно включить сведения о предприятии и его адресе, пока предприятие не выпустит какую-то продукцию. Если предприятие, производящее единственный вид продукции, прекращает его выпуск, то необходимое при этом удаление кортежа разрушает сведения об адресе предприятия. Далее, одинаковое значение адреса встречается во многих кортежах, если предприятие выпускает большой ассортимент продукции.
Любая замена адреса предприятия становится при этом очень трудоемкой операцией. Указанные факты объясняются функциональной зависимостью адреса от предприятия. Подобные функциональные зависимости называются неполными.
Выделим в отношении R два различных подмножества реквизитов F и E, связанных условием F®Е. Если Е функционально не зависит от любого подмножества F, то функциональная зависимость F®Е, называется полной. Если существует группа реквизитов G, такая, что FÌG и G®E, то функциональная зависимость называется полной.
Отношение R находится во второй нормальной форме (2НФ), если оно находятся в 1НФ и каждыми реквизит функционально полно зависит от каждого вероятного ключа. Если вероятный ключ однореквизитный, то условия 2НФ соблюдаются автоматически. Отсюда, например, следует, что бинарное отношение всегда находится в 2НФ.
Для отношения в 2НФ не характерны аномалии процессов формирования и корректировки, которые были рассмотрены выше на примере отношения. Поэтому отношение, не находящееся в 2НФ, целесообразно разделить на части, каждая из которых находится в 2НФ.
Выделим в отношении R вероятный ключ F и неключевые реквизиты А, B, ..., Е. Допустим, что FÌG и G®E, следовательно, R находится в 1НФ, но не в 2НФ. С помощью операции проекции создадим два отношения R1 (G,Е) и R2 (F, A, B) , каждое из которых находится в 2НФ. R2 содержит вероятный ключ и те неключевые реквизиты, которые не участвуют в неполной зависимости. R1 содержит неключевой реквизит, участвующий в неполной зависимости, и подмножество вероятного ключа, которое функционально определяет этот реквизит.
В рассматриваемом примере АДРЕС функционально зависит от части первичного ключа - реквизита ПРЕДПРИЯТИЕ. Поэтому отношение Q не удовлетворяет условиям 2НФ. Надо разделить его на две проекции Q1 (ПРЕДПРИЯТИЕ, АДРЕС) и Q2 (ПРЕДПРИЯТИЕ, ПРОДУКЦИЯ, ВЫПУСК), каждая из которых находится в 2НФ. При необходимости можно создать исходное отношение Q с помощью эквисоединения
Q = Q1 < >О2.
Правильность эквисоединения подтверждается тем, что ПРЕДПРИЯТИЕ - вероятный ключ в Q1.
В отношении, удовлетворяющем 2НФ, остаются транзитивные функциональные зависимости между реквизитами. Реквизит АÎU транзитивно зависит от множества реквизитов XÎU, если существует группа реквизитов YÎU , такая, что Х®Y, Y®Х, Y®А.
Наличие транзитивных зависимостей может создавать нежелательные эффекты при корректировке. Например, для исключения какого-то значения реквизита А требуется удаление значительного числа строк.
Назовем некоторый реквизит (возможно, набор реквизитов), от которого какой-то другой реквизит функционально (полностью функционально) зависит, детерминантой. Тогда можно определить третью нормальную форму отношения (ЗНФ) условием - каждая детерминанта должна являться вероятным ключом. Еcли вероятный ключ единственный, то 3НФ определяется как отношение в 2НФ, в котором каждый неключевой реквизит нетранзитивно зависит от первичного ключа. Сформулированное определение не запрещает транзитивной зависимости реквизитов, входящих в первичный ключ от других вероятных ключей, что недопустимо согласно первому определению. Поэтому первое определение содержит более сильные условия и соответствующая форма отношения часто называется усиленной ЗНФ. Надо отметить, что бинарное отношение обязательно находится в ЗНФ, поскольку для наличия транзитивной функциональной зависимости в отношении должны быть минимально три реквизита.
Рис. 3.2. Диаграмма функциональных зависимостей отношения Q
Рис. 3.3. Функциональные зависимости отношения СПИСОК (НС, ФИО, Г, КС, ВК)
Отношение в ЗНФ обладает простейшим набором функциональных зависимостей - первичный ключ функционально определяет каждый неключевой реквизит н других функциональных зависимостей в отношении нет. Отношение в ЗНФ не создает аномалий при корректировке, о которых упоминалось выше. Поэтому отношение, находящееся в 2НФ, но не в ЗНФ, целесообразно разделить (с помощью операции проекции) на части, не содержащие транзитивных зависимостей.
Рассмотрим отношение СПИСОК (НС, ФИО, Г, КС. ВК), где НС - номер зачетной книжки студента, ФИО - его фамилия, имя, отчество, Г - номер группы, КС - код специальности, ВК - выпускающая кафедра. Функциональные зависимости этого отношения приводятся на рис. 3.3. Обоснование зависимостей очень простое: каждый студент имеет одну зачетную книжку, учится в одной группе, по одной специальности, на одной выпускающей кафедре; студенты каждой группы обучаются по одной специальности, на одной выпускающей кафедре.
Соответствие СПИСОК находится в 2НФ и содержит две транзитивные зависимости НСГКС и НСГВК. Разделить СПИСОК на проекции, удовлетворяющие ЗНФ, можно несколькими способами. Некоторые из них показаны в табл. 3.3.
Таблица 3.3
Имеются две возможности при ликвидации цепочки зависимостей А®В®С. Либо связь А®В принадлежит первой проекции, а связь В®С - второй проекции, либо А®В относится к первой проекции, а А®С - ко второй. В последнем случае очень трудно следить за соблюдением соотношения В®С, так как реквизиты В и С принадлежат разным отношениям. Поэтому практически рекомендуется первый способ. Нежелательным с этой точки зрения является вариант №4 (табл. 3.3).
Если известна диаграмма функциональных зависимостей отношения, то существует алгоритм получения производных отношений в ЗНФ. На диаграмме выделим вероятные ключи (вершины, в которые не заходит ни одна дуга). Каждый вероятный ключ вместе с реквизитами, которые непосредственно функционально зависят от него, образуют отношение в ЗНФ. Затем из диаграммы функциональных зависимостей исключаются реквизиты, вошедшие в указанные отношения при условии, что от них не зависят функционально оставшиеся реквизиты. В полученной диаграмме снова найдутся вершины, в которые не заладит ни одна дуга, и процесс выделения отношений продолжается до исчерпания всех реквизитов.
Рассмотрим пример выполнения алгоритма. На рис. 3.4 приведена диаграмма функциональных зависимостей отношения с реквизитами СЛУЖ - служащий, ДОЛЖ - должность, ОКЛАД, ДАТА изменения должности и/или оклада; ТЕМА, по которой служащий работает в отделе НИИ; ОТДЕЛ, НИИ, ФИН - объем финансирования работ по теме. Зависимость (СЛУЖ, ДАТА) ® СЛУЖ и все транзитивные зависимости следуют из теорем Армстронга. Транзитивные зависимости из диаграммы удалены. В начальном положении вероятным ключом является (СЛУЖ, ДАТА), что позволяет выделить отношение в ЗНФ
R1 (СЛУЖ, ДАТА, ДОЛЖ, ОКЛАД)
Затем вероятным ключом становится СЛУЖ, что соответствует отношению
R2 (СЛУЖ, ТЕМА)
Следующий вероятный ключ - ТЕМА и следующее отношение в ЗНФ
R3 (ТЕМА, ФИН, ОТДЕЛ)
И наконец, R4 (ОТДЕЛ, НИИ)
Рис. 3.4. Диаграмма функциональных зависимостей отношения RT
Отношение, удовлетворяющее ЗНФ, может содержать еще одно, нежелательное с точки зрения корректировки, свойство, а именно многозначную зависимость реквизитов. Введем определение такой зависимости.
Выделим в отношении R три реквизита X, Y, Z. В R имеется многозначная зависимость между X и Y (обозначается X ®®Y), если при наличии в R двух строк со значениями (x1 ,y1 ,z1) и (x2 ,y2 ,z2) обязательно (содержатся строки со значения (x1 ,y1 ,z2) и (x1 ,y2 ,z1). Здесь x1 ÎX, y1 ,y2 ÎY, z1 ,z2 ÎZ.
При корректировке отношения, содержащего многозначно зависимые реквизиты, изменение значения одного из таких реквизитов приводит к корректировке большого числа кортежей. Поэтому целесообразно иметь дело с отношениями, не содержащими многозначно зависимых реквизитов. Это условие фиксируется в определении четвертой нормальной формы (4НФ) отношения.
Отношение находится в 4НФ, если при наличии многозначной зависимости Х®®Y либо ХY содержит все реквизиты R либо вероятный ключ R содержится в X. Приведение отношения R (Х, Y, Z) к 4НФ (если оно не обладает этим свойством) сводится к его разделению на две проекции R1(X,Y), и R2(X,Z). На рис. 3.5 и табл. 3.4 представлено отношение R с реквизитами ЦЕХ, ПРОДУКЦИЯ, СЫРЬЕ, не удовлетворяющее 4НФ из-за многозначной зависимости реквизитов ЦЕХ и ПРОДУКЦИЯ.
Рис. 3.5. Графическая интерпретация отношения R
Таблица 3.4
Проекции R1 и R2 отношения R со свойствами 4НФ содержат следующие значения:
Обратное преобразование сводится к выполнению эквисоединения по атрибуту ЦЕХ.
При нормализации отношений происходит снижение их порядка. Этот процесс можно искусственно довести до логического конца и получить набор отношений с минимально возможным порядком - два. Соответствующая модель данных называется бинарной реляционной моделью. Если исходное отношение в реляционной модели данных имеет однореквизитный первичный ключ (допустим, А) и структуру
R (А, В, С, D . . . ),
то его бинарные проекция получаются по следующему простому правилу:
R1(A,B)
R2(A,C)
R3(A,D)
Если первичный ключ исходного отношения состоит из нескольких реквизитов, в отношение вводится дополнительный реквизит НОМЕР КОРТЕЖА, значения которого являются порядковыми номерами кортежей (строк) отношения. Значения реквизита НОМЕР КОРТЕЖА находятся во взаимно - однозначном соответствии со строками отношения, поэтому он может стать первичным ключом отношения. Таким образом, произвольное отношение приводится к частному случаю с однореквизитным ключом, преобразование которого в набор бинарных отношений уже известно. Возможны и другие варианты получения бинарных отношений из парного, однако всегда должна обеспечиваться возможность восстановления исходного отношения по его бинарным проекциям с помощью операции эквисоединения. Имена бинарных отношений обычно формируются из пары имен реквизитов, входящих в отношение.
Рассмотрим пример преобразования произвольного отношения в набор бинарных отношений. Отношение РЕЙСЫ описывает морские порты и заходящие в них суда. Диаграмма функциональных зависимостей отношения РЕЙСЫ показана на рис. 3.6.
R1(КОД СУДНА ,КОД ПОРТА ,НАЗНАЧЕНИЯ)
R2(КОД СУДНА ,КОД ПОРТА ПРИПИСКИ)
R3(КОД ПОРТА ПРИПИСКИ, ПАРОХОДСТВО)
R4 (КОД ПОРТА НАЗНАЧЕНИЯ, ПАРОХОДСТВО)
R5 (КОД СУДНА, ВОДОИЗМЕЩЕНИЕ)
Рис. 3.6. Переход от диаграммы функциональных зависимостей к бинарным отношениям
Значения в бинарной реляционной модели данных группируются в триплеты. Триплетом называется набор из имени неключевого реквизита значения первичного ключа из какого-то кортежа и значения неключевого реквизита из того же кортежа. Например,
ВОДОИЗМЕЩЕНИЕ, Лисичанск, 35000
ПАРОХОДСТВО, Баку, Каспийское
Обозначим элементы триплета следующим образом: А - имя неключевого реквизита, V - одно из его значений, Е - соответствующее значение первичного ключа. Сам триплет получит выражение А (Е)qY. Через q обозначено одно из отношений =, <>, <, >, <=, >=. Один или два компонента триплета в запросах пользователей могут объявляться неизвестными (обозначаются знаком «?»), и поэтому возможны шесть типов запросов (табл. 3.5). Более сложные запросы могут быть образованы за счет логических связок между запросами типов 1, 2, 3.
Для обработки бинарных отношений используются все операторы реляционной алгебры.
К преимуществам бинарной реляционной модели следует отнести хорошую обозримость модели из-за простоты бинарных отношений и соответствие всех отношений ЗНФ и даже 4НФ. Недостаток этой модели заключается в дублировании значений первичных ключей, следовательно, бинарная модель данных занимает больший объем памяти, чем обычная реляционная модель.