|
Программирование >> Реализация целостности данных
CnmflrEiD Mineiro FamilisAnnJibBldo GourmetLsnchDtie-les Graal Lakes Foo: MarKel GROSgUARsslaijramB Напгп Carnas HILABIUN-Abastoe Munjry CovolB Imjjort Store rslahd Tradrng............ 23 Tiawasesn Bi¥i. ..... Ujsiadat, 25 iRuaCn;s.92 av Bnsii,J 2732 Baker SW yftK Lm Palna Srarales - --v-ii- ,. L,.:B.?}> P HiB7............. Carmra 22 con Aw CarlaE Saublelle I Clly Cental Plaza I Gafderi House Tsawaaaen 350 Paule .Saq Piulq., CampJniit > -V..... !SP... RiodeJaneiro iflj San Cnstobal TacMfB Bgrn lOR.... FmeL.ilela efWight Tsamiaeii BC SioPauia ЗР. rnimptnaa 5P i;irai;.iH DF rRro de Janeiro Rj srn Cnatfibai fit-hl! 12FBM4 18!в afwail ТРШ1 7PJ.I ftfc. 2-20. Эти два отношения находятся тьей нормальной форме Решение, когда и как вводить тель третью нормальную форму, может приниматься только с учетом семантика мщейся модели (впрочем, как и любое другое решение в ходе построения модели данных). Как правило, отдельные отношения проектируются только для моделирования наиболее важных сущностей предметной области, или когда предполагается частое изменение каких-то данных, или когда вы получаете в результате создания конкретного отношения серьезные технологические выгоды. Почтовые индексы изменяются, но не часто; кроме того, они не являются существенно важными ментами большинства систем. Дальнейшая нормализация Первые три нормальные формы были введены докторов ддом в его оригинальной работе по реляционной теории, и в поданляюшем большинстве случаев это все, о чем вам следует беспокоиться. Вспоминаю пословицу, которую я слышала в университете: Ключ, целый ключ и ничего кроме ключа, и да поможет мне Кодд! Другие нормальные формы Кодда, четвертая и пятая, были разработаны для специальных случаев, которые редко встречаются на практике. Нормальная форма Бойса-Кодда Нормальная форма Бойса-Кодда рассматривается как вариант третьей нормальной формы. Она имеет дело со специальной разновидностью отношений, для которых существует несколько дидатов. Фактически, чтобы применять нормализацию по Бойсу-Код ду, нужно сочетание нескольких условий: отношение должно иметь не мене ключей-кандидатов; по крайней мере два ключа-кандидата должны быть составными; ключи-кандидаты должны иметь перекрывающиеся атрибуты. Простейший способ понять, что такое нормальная форма Бойса-Кодда - использовать функпиональные зависимости. Нормальная форма Бойса-Кодда, осги, равносильна утверждению, что между и отношения нет функциональных зависимостей. Возьмем, к примеру, отношение, изображенное на рис. 2-21. Оно находится в третьей нормальной форме (если предположить, что имя поставщика уникально), но все еще содержит существенно избыточные данные. 5 Cooperaliva de Quesos Las Cabras, 14 Formacjgi Foriini s r I, ........ 20 Leka Trading -.] 6 Mayumis ....... 2A Gday, Mate / ,
Puc. 2-21. Отношение находится в третьей алыюй форме, но не удовлетворяет нормальной форме Ьойса-Кодда В данном случае имеется два ключа-кандидата Pro- и Name, а диаграмма функциональной за- висимости показана на рис. I К сожалению, это утверждение неточно. Обычно ся болге формальным oпpeдeлeниef: огношети R находится в нормальной форме Бойса-Кодда тогда и только тогда №гда для любой нетривиальное тональной зависимости №1 a {Y межжду атрибутами R множества тив (Х[ (называемое детерминантом функциональной зависимости) всегда содержжи ключсй-кандидатоп. При этом на : -, ; не налагается никаких ограничений. Поэтому в нормальной форме Бойса-Кодда ключи-кандидаты могут зависеть друг от друга или часть атрибутов од- ног гш.[1.ндата може даонально зависеть а-канлил;1ТГ1, - Прим. перев. На диаграмма п. ошибка стпуст важная деталь. Вертикальная стрелка межжду ключами-кандидатами должна быть двунаправленной, как и межу атрибутами Sup-plierlD и SupplierName. Это означает, что существуют i функциональные зависимости: [SuppUerlD]-* {SuppHerName\wi [SupplierName] {SiipplierlO\ Яи одна из этих зависимостей не является тривиальной и не содержит ключа-кандидата следовательно, согласно данной выше формулировке, каждая из этих зависимостей нарушает условие Бойса-Кодда. - Прим. перев. Supplier ID PracluctID SupplierName PrDCJui;tlD Quantity UiittPrice Рис ма функциональной зависимости для отношения, показанного на рис. 2-21 Как вы можете видеть, существует функциональная зависимость (SupplierlD} {SupplierName}, которая нарушает нормальную форму Бойса-Кодда. Корректная модель показана .рис. 2-23. Отношение Suppliers 20; Leka Trading S; Cqoperativa de Queens Las eahrais 14: Formaggi Foftini sr.l & Majumis 24 Gdsy, Male Отношение Products
Рис. 2-23. Полностью нормализованный вариант модели, изображенной на рис. 2-21 Нарушения нормальной формы Бойса-Кодда легко избежать, если уделить внимание логическому смыслу ируе.мого отношения. Если отношение на рис21 содержит информацию о производимой nnOivKHin!, то туда не следует включать информацию о поставщике (разумеется, верно и обратное утверждение).
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |