Модели и проектирование баз данных

Декомпозиция универсального отношения


. Очевидный выход, избавляющий от избыточного дублирования данных, состоит в расщеплении (декомпозиции) отношения USPJ на четыре взаимосвязанных отношения – S, P, J, SPJ. Каждое из этих отношений является проекцией USPJ

на соответствующие группы атрибутов[27]:

S = (USPJ[S#, Sn, St, Sci]) RENAME SCi AS Ci;

P = (USPJ[P#, Pn, Co, We, PCi]) RENAME Pci AS Ci;

J = (USPJ[J#, Jn, Jci]) RENAME Jci AS Ci;

SPJ = USPJ[S#, P#, J#, Dt, Qt];

Ниже приведены значения этих отношений для рассматриваемого примера.

S

P



S#

Sn

St

Ci

 

P#

Pn

Co

We

Ci

S1

Иван

50

Яя

P3

шайба

Ж

20

Ош

S2

Петр

100

Ош

,

P1

гайка

К

10

Яя   ,

S3

Джон

50

Яя

P8

болт

Ч

30

Яя

S8

Боб

50

Томск

P2

винт

С

40

Ош

J

 

SPJ

J#

...

S#

P#

J#

Qt

Dt

J1

...

,

S1

P3

J1

1000

...

J2

...

S1

P1

J1

1000

...

S1

P8

J1

500

...

S2

P3

J2

1000

...    ,

S3

P2

J2

2000

...

S3

P1

J2

1000

...

S8

P8

J2

500

Нетрудно убедиться в том, что в этих отношениях сохранены все отмеченные ФЗ. Естественное соединение этих проекций

USPJ = (((((SPJ JOIN S) RENAME Ci AS Sci)

JOIN P) RENAME Ci AS Pci)

JOIN J) RENAME Ci AS Jci;

восстановит универсальное отношение без всяких потерь информации. Кроме того, в этой структуре объявлены все ФЗ, за исключением S.Ci ® St.

Здесь нет аномалий удаления. Из отношения SPJ

можно удалять кортежи без проблем. При удалении кортежей других отношений достаточно соблюдать правила ссылочной целостности, которые объявлены определениями отношений (см. п. 2.4.2). Нет также аномалий вставки типа б).
Сведения о непоставлявших поставщиках, непоставлявшихся деталях и о не получавших поставок изделиях можно заносить в соответствующие отношения.

Аномалии вставки типа а) и обновления значений сохраняются для отношения S. Это обусловлено наличием необъявленной ФЗ между неключевыми атрибутами S.Ci ® St.

Можно попытаться избавиться от цепочки транзитивных зависимостей S# ® Ci ® St, заменив S его проекциями. При этом не должны быть потеряны ФЗ, и естественное соединение проекций должно восстанавливать исходное отношение. Для иллюстрации проблем, которые здесь могут возникнуть, рассмотрим возможные варианты декомпозиции.

Вариант 1.

SST= S[S#, Sn, St];  CS=S[S#, Ci];

Эти проекции для реализации USPJ, приведенной в п. 3.1.2, имеют вид:

SST

CS

S#

Sn

St

 

S#

Ci

S1

Иван

50

;

S1

Яя

S2

Петр

100

S2

Ош

S3

Джон

50

S3

Яя

S8

Боб

50

S8

Томск

Их естественное соединение по атрибуту S#:

SST JOIN CS

S#

Sn

St

Ci

S1

Иван

50

Яя

S2

Петр

100

Ош

S3

Джон

50

Яя

S8

Боб

50

Томск

совпадает с отношением S.

Здесь сохранены ФЗ S# ® Сi,  S# ® St,  S# ® Sn. Однако зависимость Ci ® St утрачена. Значения атрибутов Ci и St в проекциях можно менять независимо.

Вариант 2.

SST = S[S#, Sn, St]; STC = S[St, Ci];

Это плохой вариант. Здесь утеряна зависимость S# ® Ci. Поэтому возможна потеря информации при восстановлении исходного отношения. В самом деле, эти проекции имеют вид:

SST

STC

S#

Sn

St

 

St

Ci

S1

Иван

50

50

Яя

S2

Петр

100

100

Ош

S3

Джон

50

50

Томск

S8

Боб

50

 
Естественное соединение этих отношений будет содержать лишние кортежи:

SST JOIN STC

S#

Sn

St

Ci

S1

Иван

50

Яя

S2

Петр

100

Ош

S3

Джон

50

Яя

S1

Иван

50

Томск

S3

Джон

50

Томск

<


Это совсем не похоже на исходное отношение. Мало того, что в нем появились ложные кортежи. Атрибут S#

утратил свойство потенциального ключа. Это следствие того, что общие атрибуты отношений STS, STC не являются их потенциальными ключами.

Вариант 3.

SC = S[S#, Sn, Ci]; CS=S[Ci, St];

Эти проекции имеют вид:

SC

CS

S#

Sn

Ci

 

St

Ci

S1

Иван

Яя

50

Яя

S2

Петр

Ош

100

Ош

S3

Джон

Яя

50

Томск

S8

Боб

Томск

 
Здесь не потеряна ни одна из ФЗ, существующих в исходном отношении. В самом деле, S# ® Sn и S# ® Сi, так как S# – первичный ключ отношения SC. Зависимость S# ® St также неявно существует. Каждому конкретному значению S# соответствует единственное значение Ci, которому в свою очередь соответствует единственное значение  St. Следовательно, конкретному значению S# соответствует единственное значение St.

Естественное соединение SC и CS будет происходить без потерь информации, то есть в результате соединения не появятся кортежи, которых не было в исходном отношении. Это следствие того, что Ci – общий атрибут SC и CS, является потенциальным ключом CS. Каждому значению Ci соответствует единственный кортеж CS, который будет при соединении сливаться с соответствующими кортежами SC и образовывать, таким образом, только те кортежи, которые его породили при выполнении проекции S[Ci, St].


Содержание раздела