Программирование >>  Хронологические базы данных 

1 ... 141 142 143 [ 144 ] 145 146 147 ... 348


OFFICEl { DEPTt, OFF#, AREA }

PRIMARY KEY { DEPTt, OFFi }

PHONEI { DEPTi, OFFi, PHONEi }

PRIMARY KEY { DEPTi, OFFi, PHONEi }

Этап 2. Приведение отношений к 2НФ

Теперь переменные-отношения, находяшиеся в 1НФ, можно привести к эквивалентной совокупности переменных-отношений в 2НФ, исключив те функциональные зависимости, которые не являются неприводимыми. Ниже все такие переменные-отношения рассматриваются последовательно одна за другой.

DEPT1 ЕМР1

J0B1

SALHIST1

PRO Л

OFFICEl

Эта переменная-отношение уже находится в 2НФ. Прежде всего следует отметить, что атрибут DEPTi является избыточным компонентом первичного ключа данной переменной-отношения. В качестве первичного ключа здесь можно принять атрибут EMPi, причем в таком виде данная переменная-отношение уже будет находиться в 2НФ. Опять отметим, что необязательно использовать атрибут DEPTi в качестве компонента первичного ключа. Поскольку атрибут DEPTi функционально зависит от атрибута EMPi, имеется неключевой атрибут (DEPTi), зависимость которого от первичного ключа (комбинации атрибутов {EMPi, JOBTITLE}) не является неприводимой и, следовательно, переменная-отношение J0B1 не находится во 2НФ. Эту переменную-отношение можно заменить двумя другими.

J0B2A { EMPi, JOBTITLE }

PRIMARY KEY { EMPi, JOBTITLE }

J0B2B { EMPi, DEPTi } PRIMARY KEY { EMPi }

Однако переменная-отношение JOB 2 A является проекцией переменной-отношения SALHIST2 (ниже это описано подробнее), а переменная-отношение J0B2B- проекцией переменной-отношения ЕМР1 (ниже она будет переименована в ЕМР 2). Следовательно, обе вновь созданные переменные-отношения могут быть просто удалены.

Так же, как и в случае переменной-отношения J0B1, атрибут DEPTi можно полностью удалить. Более того, как компонент первичного ключа атрибут JOBTITLE не требуется. В качестве первичного ключа достаточно использовать комбинацию атрибутов {EMPi, DATE}. В результате будет получена следующая переменная-отношение, находящаяся в 2НФ.

SALHIST2 { EMPi, DATE, JOBTITLE, SALARY } PRIMARY KEY { EMPt, DATE }

Так же, как и в случае с переменной-отношением ЕМР1, можно рассматривать атрибут DEPTi как неключевой, причем данная переменная-отношение будет находиться в 2НФ. Здесь можно применить аналогичное рассуждение.



PHONEI Атрибут DEPTt можно удалить совсем, поскольку переменная-отношение (DEPTt, OFF#) является проекцией переменной-отношения 0FFICE1 (переименованной далее в 0FFICE2). Кроме того, атрибут OFF# функционально зависит от атрибута PHONEl, поэтому в качестве первичного ключа достаточно принять только атрибут PHONE#, в результате чего будет получена приведенная ниже переменная-отношение в 2НФ.

PH0NE2 { PHONE#, OFFi }

PRIMARY KEY { PHONEl }

Обратите внимание, что эта переменная-отношение необязательно является проекцией переменной-отношения ЕМР2 (телефоны и офисы могут сушествовать и без их соотнесения с конкретными сотрудниками), поэтому ее нельзя удалить.

Таким образом, мы получили следующий набор переменных-отношений в 2НФ.

DEPT2 { DEPTt, DBUDGET, MGR EMPt } PRIMARY KEY { DEPTt }~ ALTERNATE KEY { MGR EMPt }

EMP2 { EMPt, DEPTI, PROJI, OFFi, PHONEt } PRIMARY KEY { EMPt }

SALHIST2 { EMPt, DATE, JOBTITLE, SALARY } PRIMARY KEY { EMPI, DATE }

PR0J2 { PROJI, DEPTt, PBUDGET } PRIMARY KEY { PROJi }

0FFICE2 { OFFI, DEPTi, AREA } PRIMARY KEY { OFFI }

PH0NE2 { PHONEt, OFFI }

PRIMARY KEY { PHONEt }

Этап 3. Приведение к ЗНФ

Теперь можно привести переменные-отношения, находящиеся в 2НФ, к эквивалентному набору переменных-отношений в ЗНФ, для чего необходимо исключить транзитивные зависимости. Единственной переменной-отношением, которая находится в 2НФ и не находится в ЗНФ, является переменная-отношение ЕМР2, в которой атрибуты OFFt и DEPTt транзитивно зависят от первичного ключа EMPt: атрибут OFFI через атрибут PHONEt, а атрибут DEPTt - через атрибут PROJt, а также через атрибут OFFI (следовательно, и через атрибут PHONEt). Таким образом, переменной-отношению ЕМР2 соответствует следующий набор переменных-отношений (проекций) в ЗНФ.

ЕМРЗ { EMPt, PROJt, PHONEt }

PRIMARY KEY { EMPI } X { PHONEl, OFFI }

PRIMARY KEY { PHONEt }



Y { PROJI, DEPTI } PRIMARY KEY { PROJi }

Z { OFFI, DEPTI } PRIMARY KEY { OFFI }

Однако переменная-отношение X - это аналог переменной-отношения PH0NE2, переменная-отношение Y - это проекция переменной-отношения PR0J2, а переменная-отношение Z - это проекция переменной-отношения 0FFICE2. Следовательно, окончательная совокупность переменных-отношений в ЗНФ будет выглядеть следуюшим образом.

DEPT3 { DEPTI, DBUDGET, MGR EMP } PRIMARY KEY { DEPTt } ALTERNATE KEY { MGR EMP# }

EMP3 { EMPI, PROJI, PHONEI } PRIMARY KEY { EMPI }

SALHIST3 { EMPI, DATE, JOBTITLE, SALARY } PRIMARY KEY { EMP#, DATE }

PR0J3 { PROJI, DEPTI, PBUDGET } PRIMARY KEY { PROJi }

OFFICES { OFFI, DEPTt, AREA } PRIMARY KEY { OFFI }

PH0NE3 { PHONEI, OFFI }

PRIMARY KEY { PHONEI }

Наконец, отметим, что каждая из этих переменных-отношений в ЗНФ уже находится в НФБК. I

Следует указать на то, что при учете некоторых (разумных) дополнительных семантических ограничений этот набор переменных-отношений становится сильно избыточным [5.1], так как проекция переменной-отношения PR0J3 по атрибутам {PROJi, DEPTI} практически всегда эквивалентна проекции, выполненной для результата соединения переменных-отношений ЕМРЗ, PH0NE3 и 0FFICE3.

В заключение отметим, что полученный набор переменных-отношений в НФБК можно было выделить непосредственно на диаграмме ФЗ. {Вопрос. Как именно это можно сделать?)

Замечание. Это не значит, что выделить результирующий набор переменных-отношений в НФБК можно всегда; на самом деле определить результаты декомпозиции подобным образом можно лишь в некоторых конкретных случаях. Точнее говоря, для данной переменной-отношения R, удовлетворяющей множеству функциональных зависимостей S, представленный ниже алгоритм (этапы 0-8) гарантирует декомпозицию D переменной-отношения R на переменные-отношения в ЗНФ (но не НФБК), которая выполняется одновременно без потерь информации и с сохранением зависимостей.



1 ... 141 142 143 [ 144 ] 145 146 147 ... 348

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика