Программирование >>  Реляционные базы данных 

1 ... 35 36 37 [ 38 ] 39 40 41 ... 125


Теперь рассмотрим функциональную зависимость

tSIe year -> length filmType studioName

которая верна для Move. Напоминаем, почему она верна: исходный ODL-проект имеет ключ {title, year}, однозначные атрибуты length и fflmType. а также однозначную связь ownedBy, ведущую к студии, владеющей фильмом.

К сожалению, левая часть этой зависимости ие являезтся надключом. В частности, известно, что title и year функшюнально не определяют шестой атрибут - starName. Значит, сушсствова1П1С такой зависимости нарушает условие BCNF и свидетельствует о том, что отношение Movie не находится в BCNF. Более того, согласно исходному определению BCNF. по которому п правой части должен быть единственный атрибут, нарушать BCNF может любая из трех функциональны.х зависимостей, например title year length. □

Пример 3.34. Отношение Moviel на рис. 3.3! находится в BCNF. Поскольку зависимость

title year length filmType studioName

перна и ни title, ни year сами по себе не определяют никакие другие атрибуты, единственный ключ для Moviel - {title, year). Более того, нетривиальные функциональные зависимости в своих левых частях должны иметь по крайней мере 1Ше н year, поэтому их левые части должны быть надключами. Таким образом, Moviel находится в BCNF. □

Пример S.35. Любое отношение с двумя атрибугами находится а BCNF. Для

доказательства этого утвсрйшення нужно проверить возможные нетривиальные зависимости с единственным атрибутом справа. При этом необходимо рассмотреть всего четыре случая. Пусть имеются два атрибута А я В-

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

2. Верно А - В. но не верно В~*А. В этом случае А - единственный ключ и каждая нетривиальная зависимость содершгг А слева (фактически, спе-ва может стоять только А). 3Ha4vrr, условие BCNF ие нарушается.

3. Верно В-*А., но КС верно А~* В. Случай симметричен предыдущему.

4. Верно - В и Тогда >f и 5 ключи. Ясно, что любая зависимость имеет в левой части А или В, поэтому нарушений BCNF не может быть.

Из пункта 4 следует, что для отношения может быть нескапько ключей. Однако, согласно условию BCNF, в левой части нетривиальной зависимости достаточно иметь некоторый ключ, а не все. Заметим также, что отношение с двумя атрибутами, функционально определяющими друг друга, не является абсолютно неправдоподобным. Например, компания может приписать своим сотрудникам уникальные ID (emplD) и одновременно записывать номера их страховых полисов (ssNo). В отношении с атрибутами empID и ssNo оба атрибута функционально определяют друг Друга. Другими стовями, каждый атрибут является ключом, поэтому не существует ДВУХ кортежей, совпадающих по одному из этих атрибугов. D




Рис. 3.33. Декомпсаицип схемы отношения, осноеопюя но норушении BCNf

Пример 3.36. Рассмотрим снова отношение Movie иа рис. 3.30. В примере 3.33 было показано, что

title year length filmType studioName

нарушает BCNF. В данном случае правая часть уже содержит все атрибуты, функционально определяемые атрибутами title и year. Поэтому мы используем данное нару1иение BCNF для декомпозиции Movie на:

1} схему со всеми атрибутами этой зависимости:

{title, year, length, filmType, studioName)

2) схему со всеми атрибутами Movie, за исключением трех, входящих в правую часть зависимости Таким образом, удаляются length, filmType и StudioName и ос ается схема

{title, year, starName)

3.7.4 Де1 омпозиция в BCNF

Повторно применяя подходящие декомпозиции, можно разбить любую схему oTHomeiuifl на множество подмножеств его атрибутов со следующими вaжны.п1 свойствам н:

1. Эти подмножествй являются схемами отношений в BCNF.

2. Данные исходного отношения правильно представлены данными п отношениях, полученных в результате декомпозиции, в смысле, который будет уточнен в разделе 3.7.6. Строго говоря, нужно иметь возможность восстановить исходное отношение точно из отношений, полученных в пезультаге его декомпозиции.

Судя по примеру 3.35, достаточно разбить схему отношения на двухатрибутив-ные подмножества, чтобы результат наверняка был в BCNF. Однако, как будет показано в разделе 3.6.7, такая произвольная декомпозиция ие удогзлетворяет условию 2. Просто нужно быть более внимательным и при декомпозиции руководствоваться функциональными зависимостями, нарушающими BCNF.

В процессе декомпозиции будем следовать стратегии поиска нетривиальной функциональной зависимости , А ... Д,-> 5, ... В которая нарушает BCNF; т.е. А,Л) не явтяется надключом. В качестве эвристического приема добавим в правую часть зависимости атрибуты, функционально определенные множеством {А А- .. , А ).

На рис, 3.33 показано разбиение атрибутов на две пересекающиеся схемы отношений. Первая - это все атрибуты, входящие в нарушающую зависимость, вторая - левая часть зависимости плюс все атрибуты, не входящие в эту зависимость, т.е. все атрибуты, за исключением тех В которые не совпадают с /I,.



Заметим, что именно эти схемы выбирались для отношений Moviel и Movie2 в примере 3.32. В примере 3.34 было показано, что обе они находятся в BCNF. □

Пример 3.37. Рассмотрим отношение MovieStudio, введенное в примере 3.30.

В нем хранится информация о фильмах, владеющих ими студиях и адресах этих студий. С ма и некоторые типичные кортежи этого отношения показаны на рис. 3.34.

length

filmType

StudioName

j studloAddr

Star Wars

1 1977

color

; Hollyvifood

Mighty Ducks

1991

color

Disney

1 Buena Vista

Waynes World

j 1992

color

Paramount

1 Hollywood

Addarns Family

1 1991

cokir

Paramount

j Hollywood

Рие. 3.34. Отношение MovieStudio

Зто отношение содержггг избыточную информацию. Поскольку к обычным данным здесь добавлена запись о фильме, которым владеет Paramount, адрес этой студии повторяется дваж,аы. Однако источник этой проблемы иной, нежели в примере 3.36. В предыдущем примере проблема заключалась в том, что многозначная связь (кинозвезды данного фильма) храншгась вместе с другой информацией о фильме. Здесь же все однозначно: атрибут фильма length, связь ownedBy фильма с единственной владеющей им студией и атрибут студий address.

В данном случае проблема в транзитивной зависимости. Как показано в примере 3.30, отношение movieStudio имеет две зависимости:

title year -+ studioName StudioName -> studloAddr

По правилу транзитивности можно получить

title year-* studloAddr

Значит, название и год выпуска фильма (т.е. ключ для фильмов) функционально определяют адрес студии, владеющей фильмом. Но

title year - length filmType

является очевидной зависимостью, следовательно, (title.year) - ключ для MovieStudio, фактически, единственным.

С другой стороны, зависимость

StudioName > studloAddr

которая использовалась при применении правила транзитивности, нетривиальна, но ее левая часть не является надключом. Значит, отношение MovieStudio не находится в BCNF. Используя эту зависимость, можно решить рассматриваемую проблему согласно правилу деко.мпозиции. Первая схема декомпозиции - атрибуты самой данной зaвиcиrocти:

{StudioName, studloAddr)

Вторая с.чема - все атрибуты MovieStudio. за исключением studloAddr, так кик последний находится в правой часта зависимости, используемой в декомпозиции. Значит, второй cxeюй является

{title, year, length, filmType, studioName)



1 ... 35 36 37 [ 38 ] 39 40 41 ... 125

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