Подойдем к обсуждению понятия "многозначная зависимость" с другой стороны. Чисто формально, отношение, представленное на рис. 33, имеет две многозначные зависимости:
Дисциплина Преподаватель и
Дисциплина Вид_работы.
Если же рассмотреть семантику этих многозначных зависимостей, то, она может быть существенно разная.
Зависимость же Дисциплина Преподаватель, хотя она формально многозначна в R, определяет возможную вариантность "прохождения" дисциплины: компонента слева может быть обслужена так, а может и иначе, но зафиксированные в отношении преподаватели никоим образом не требуются вместе, в каждом конкретном случае вполне достаточно одного преподавателя. Поэтому данную зависимость с семантической точки зрения нельзя называть многозначной зависимостью.
Поясним сказанное на примере. Пусть имеется отношение ТЕХНОЛОГИЧЕСКАЯ_КАРТА (Деталь, Материал, Технология), состояние которого имеет вид, показанный на рис. 34.
| Деталь | Материал | Технология |
| Д1 | М1 | Т1 |
| Д1 | М2 | Т3 |
| Д2 | М3 | Т1 |
| Д3 | М1 | Т2 |
| Д3 | М4 | Т2 |
Рис. 34. Состояние отношения ТЕХНОЛОГИЧЕСКАЯ_КАРТА
Пусть, далее, заданы следующие "вариантные" зависимости (для обозначения таких зависимостей будет использоваться обозначение ):
Деталь Материал,
Деталь Технология,
Материал Технология.
Смысл приведенных зависимостей можно трактовать следующим образом: деталь может изготавливаться из различных материалов по различным технологиям, причем и технология изготовления определяется не только конструкцией детали, но и используемым материалом. Отсюда следует, что зависимость ДетальМатериал также определяет варианты изготовления.
Используя эти три "вариантные" зависимости, можно однозначно построить отношение: ТЕХНОЛОГИЧЕСКАЯ_КАРТА (Деталь, Материал, Технология) из следующих его проекций (рис. 35 - 37):
|
|
|
| Рис.35. Проекция | Рис. 36. Проекция | Рис. 37. Проекция |
| ДЕТАЛЬ_МАТЕРИАЛ | МАТЕРИАЛ_ТЕХНОЛОГИЯ | ДЕТАЛЬ_ТЕХНОЛОГИЯ |
Следующее предложение реляционной алгебры [30]:
ТЕХНОЛОГИЧЕСКАЯ_КАРТА(Деталь, Материал, Технология) =
(ДЕТАЛЬ_МАТЕРИАЛ [Деталь=Деталь] ДЕТАЛЬ_ТЕХНОЛОГИЯ)
[(Материал=Материал) AND (Технология=Технология)] МАТЕРИАЛ_ТЕХНОЛОГИЯ
восстанавливает исходное отношение ТЕХНОЛОГИЧЕСКАЯ_КАРТА (рис. 34). Следует отметить, что приведенное предложение должно быть зафиксировано в системе (в схеме базы данных), т. к. оно описывает существующее в предметной области ограничение и указывает, каким образом могут быть соединены отношения.
При реализации данного утверждения, система, выполняя соединение ТЕХНОЛОГИЧЕСКАЯ_КАРТА(Деталь, Материал, Технология) = ДЕТАЛЬ_МАТЕРИАЛ [Деталь=Деталь] ДЕТАЛЬ_ТЕХНОЛОГИЯ, получит в промежуточном отношении ТЕХНОЛОГИЧЕСКАЯ_КАРТАR лишние строки t2 и t3 (рис. 38), запрещенные многозначной зависимостью МатериалТехнология (рис. 36).
| Деталь | Материал | Технология | |
| t1 | Д1 | М1 | Т1 |
| t2 | Д1 | М2 | Т1 |
| t3 | Д1 | М1 | Т3 |
| t4 | Д1 | М2 | Т3 |
| t5 | Д2 | М3 | Т1 |
| t6 | Д3 | М1 | Т2 |
| t7 | Д3 | М4 | Т2 |
Рис. 38. Состояние отношения ТЕХНОЛОГИЧЕСКАЯ_КАРТАR
Строки t2 и t3 из отношения ТЕХНОЛОГИЧЕСКАЯ_КАРТАR исключаются частью предложения:
ТЕХНОЛОГИЧЕСКАЯ_КАРТАR [(Материал=Материал) AND (Технология=Технология)] МАТЕРИАЛ_ТЕХНОЛОГИЯ
Если рассмотренное утверждение реляционной алгебры выполняется всегда (для всех допустимых значений отношения ТЕХНОЛОГИЧЕСКАЯ_КАРТА), то тем самым формируется независимое от времени ограничение, присущее отношению ТЕХНОЛОГИЧЕСКАЯ_КАРТА, которое должно быть отображено в схеме базы данных. К сожалению, стандарт SQL не содержит правил поддержания подобных ограничений.
Отметим, что также явно должно быть указано ограничение для соединения отношений ДЕТАЛЬ_МАТЕРИАЛ(Деталь, Материал) и МАТЕРИАЛ_ТЕХНОЛОГИЯ(Материал, Технология), иначе без такого ограничения из базы данных может быть получена информация, не соответствующая действительности. В частности, результатом запроса
SELECT *
FROM ДЕТАЛЬ_МАТЕРИАЛ, МАТЕРИАЛ_ТЕХНОЛОГИЯ
WHERE ДЕТАЛЬ_МАТЕРИАЛ.Деталь = МАТЕРИАЛ_ТЕХНОЛОГИЯ.Деталь;
будет отношение, показанное на рис. 39.
| Деталь | Материал | Технология | |
| t1 | Д1 | М1 | Т1 |
| t2 | Д1 | М1 | Т2 |
| t3 | Д1 | М2 | Т3 |
| t4 | Д2 | М3 | Т1 |
| t5 | Д3 | М1 | Т1 |
| t6 | Д3 | М1 | Т2 |
| t7 | Д3 | М4 | Т2 |
Рис. 39. Ловушка соединения отношений ДЕТАЛЬ_МАТЕРИАЛ и МАТЕРИАЛ_ТЕХНОЛОГИЯ
В полученном отношении присутствуют кортежи t2 и t5, которые отсутствуют в правильном ответе (рис. 34). Заметьте, что запрос на языке SQL синтаксически не противоречит правилам языка. Поэтому пользователь вправе считать, что выданный результат соответствует действительности.
Таким образом, схема базы данных (определение понятия схемы базы данных см. далее), состоящей из перечисленных отношений (ключи в этих отношениях подчеркнуты) и явно заданных (зафиксированных) правил их совместного использования, будет выглядеть так, как это показано на рис. 40.
Отношения:
ДЕТАЛЬ_МАТЕРИАЛ(Деталь, Материал),
МАТЕРИАЛ_ТЕХНОЛОГИЯ(Материал, Технология),
ДЕТАЛЬ_ТЕХНОЛОГИЯ(Деталь, Технология),
Правила восстановления:
ТЕХНОЛОГИЧЕСКАЯ_КАРТА (Деталь, Материал, Технология)=
(ДЕТАЛЬ_МАТЕРИАЛ [Деталь=Деталь] ДЕТАЛЬ_ТЕХНОЛОГИЯ)
[(Материал=Материал) AND (Технология=Технология)] МАТЕРИАЛ_ТЕХНОЛОГИЯ,
ТЕХНОЛОГИЧЕСКАЯ_КАРТА (Деталь, Материал, Технология)=
(ДЕТАЛЬ_ТЕХНОЛОГИЯ [Технология=Технология] МАТЕРИАЛ_ТЕХНОЛОГИЯ)
[(Деталь=Деталь) AND (Материал=Материал)] ДЕТАЛЬ_МАТЕРИАЛ,
ТЕХНОЛОГИЧЕСКАЯ_КАРТА (Деталь, Материал, Технология)=
(ДЕТАЛЬ_МАТЕРИАЛ [Материал=Материал] МАТЕРИАЛ_ТЕХНОЛОГИЯ)
[(Деталь=Деталь) AND (Технология=Технология)] ДЕТАЛЬ_ТЕХНОЛОГИЯ.
Рис. 40. Схема базы данных и правила восстановления исходного отношения
Заметим, что если исходное отношение ТЕХНОЛОГИЧЕСКАЯ_КАРТА (рис. 34) не разбивать на проекции, то возможны аномалии при модификации отношения. Это несложно доказать, в силу чего такое доказательство оставляется читателю в качестве упражнения.
Рассмотрим еще один случай зависимости соединения.
Пусть имеются три проекции (рис. 41) некоторого исходного отношения R (рис. 42):
| R1( | A, B) | R2( | A, C) | R3( | B, C) | |||
| 1 1 | 1 1 | 1 1 | ||||||
| 1 2 | 1 2 | 2 1 | ||||||
| 1 3 | 2 1 | 3 2 | ||||||
| 2 1 | 2 3 | 4 3 | ||||||
| 2 4 | 3 4 | 4 4 | ||||||
| 3 4 |
Тогда, если правило восстановления исходного отношения R(A, B, C) записано формулой:
Истинный результат R, получаемый после удаления ложных выборок из эквисоединения R' показан на рис. 42.
| R'( | A, B, C) | R2( | A, B, C) | |||
| 1 1 1 | 1 1 1 | |||||
| 1 1 2 - | 1 2 1 | |||||
| 1 2 1 | 1 3 2 | |||||
| 1 2 2 - | 2 1 1 | |||||
| 1 3 1 - | 2 4 3 | |||||
| 1 3 2 | 3 4 4 | |||||
| 2 1 1 | ||||||
| 2 1 3 - | ||||||
| 2 4 1 - | ||||||
| 2 4 3 | ||||||
| 3 4 4 |
Истинный результат также будет получен, если использовать правило R = (R2 [C=C] R3) if [B=B AND.C=C] R1 или R = (R1 [B=B] R3) if [A=A AND C=C] R2
Нетрудно заметить, что данное правило исполняется, т.к. в отношении R имеет место ABC (атрибуты AB функционально определяют атрибут С).
Определение [3]. Пусть R является отношением, а X, Y, ..., Z - произвольные подмножества атрибутов AR отношения R. Отношение R удовлетворяет зависимости соединения:
Определение. Пятая нормальная форма.
Существует и другое определение 5НФ, принадлежащее Фэйджину [3]:
Отношение R находится в 5НФ тогда и только тогда, когда каждая зависимость соединения подразумевается потенциальными ключами отношения.
Пятая нормальная форма - это последняя нормальная форма, которую можно получить путем декомпозиции [3]. Заметим, что зависимость соединения является обобщением, как многозначной зависимости, так и функциональной зависимости и на практике ее выявить достаточно трудно.
В заключение рассмотрения 5НФ проанализируем процесс модификации данных для схемы, представленной на рис. 40. Пусть пользователь решил добавить в отношение RДМ = ДЕТАЛЬ_МАТЕРИАЛ (рис. 35) последнюю строку, такую, что состояние отношения RДМ приняло вид R1ДМ (рис. 43):
| Деталь | Материал |
| Д1 | М1 |
| Д1 | М2 |
| Д2 | М3 |
| Д3 | М1 |
| Д3 | М4 |
| Д1 | М3 |
Рис. 43. Cостояние R1 ДМ отношения ДЕТАЛЬ_МАТЕРИАЛ (рис. 35)
Правомерно ли появление шестой строки в таблице на рис. 43? Или, другими словами, правомерно ли существование исходного отношения R (рис. 44), дающего такую проекцию?
| Деталь | Материал | Технология |
| Д1 | М1 | Т1 |
| Д1 | М2 | Т3 |
| Д2 | М3 | Т1 |
| Д3 | М1 | Т2 |
| Д3 | М4 | Т2 |
| Д1 | М3 | Т1 |
Рис. 44. Состояние отношения ТЕХНОЛОГИЧЕСКАЯ_КАРТА, дающее проекцию, представленную на рис. 43
Если описание схемы базы данных (см. ниже), представленное на рис. 40, остается в силе, то первое, что сделает система контроля ввода данных, это проверит, не нарушается реляционный ключ в отношении R1 ДМ (рис. 43) и содержатся ли в соответствующих доменах введенные значения строки (по определению все атрибуты рассматриваемых отношений являются внешними ключами). Считаем, что в нашем примере указанных противоречий нет, т.е. в системе определены базовые таблицы для объектов ДЕТАЛЬ, МАТЕРИАЛ и ТЕХНОЛОГИЯ, где атрибуты Деталь, Материал и Технология объявлены первичными ключами.
Далее необходимо проверить формульные ограничения, указанные на рис. 40, т.е. проанализировать отношения RМТ = МАТЕРИАЛ_ТЕХНОЛОГИЯ (рис. 36) и RДТ = ДЕТАЛЬ_ТЕХНОЛОГИЯ (рис. 37). Нетрудно убедиться, что никаких противоречий система не обнаружит, т.к. значения <Д1, T1> (технология Т1 используется при изготовлении детали Д1) и <М3, Т1> (технология Т1 использует материал М3) уже присутствуют в RМТ (рис. 36) и RДТ (рис. 37).
Проверив все формальные ограничения и убедившись, что они не нарушены, система должна задать вопрос о правомочности занесения нового кортежа в отношение, представленное на рис. 35. В действительности, только человек может принять окончательное решение о занесении новой информации в базу данных, даже если синтаксический контроль системы не выявил никаких противоречий.
После введения понятий зависимостей, ключа и нормальных форм можно пополнить понятие схемы R одношения R, определив ее как пятерку, состоящую из имени R отношения R, множества атрибутов AR отношения R, среди которых выделено подмножество KR, составляющее главный ключ отношения, множества зависимостей FR, определенных на булеане B(AR) множества атрибутов и множество правил ограничений соединения PR отношения R, т.е.
R = {R, AR, KR, FR, PR}.
В ряде случаев схему R отношения R упрощенно можно рассматривать и как "пустое" состояние (или R0) этого отношения, т.е. просто, как запись отношения, не содержащего в себе никаких кортежей:
Теперь можно определить понятие схемы базы данных как набор схем отношений, включенных в базу, а также наборы зависимостей этих отношений и правил ограничений соединения отношений.
Пусть R1, R1, . . . , Rn – множество схем нормализованных отношений, образующих базу данных R. Тогда схема R базы данных R будет представлять собой пятерку:
R = {{R1, R2, . . . , Rn}, {AR1, AR2, . . . , ARn}, {KR1, KR2, . . . , KRn}, {FR1, FR2, . . . , FRn}∪ FL, {PR1, PR2, . . . , PRn}},
Строго говоря, для определения FL необходимо оперировать исходными (возможно, ненормализованными) отношениями.
[ Назад  Начало раздела Далее Содержание]