Лекция №3 - Хорошая схема БД - Соединение без потерь

Пусть F и G - два множества ФЗ.

G называется покрытием F, если имеет место равенство G += F +

Существуют различные виды покрытий. Но мы рассмотрим только один - условно-неизбыточное покрытие.

Алгоритм построения условно-неизбыточного покрытия

1) если в множестве ФЗ F встречаются ФЗ с одинаковой левой частью X, то следует объединить эти ФЗ в одну ФЗ. Это следует из леммы объединения. Получившееся множество ФЗ обозначим G;

2) для каждой ФЗ XY из G заменить её на XX +− X;

После выполнения 1) и 2) получаем замыкание G += F +

Доказательство

1)

Докажем, что если ФЗ XYF (из этого следует, что YX + (1) по определению замыкания множества аттрибутов), то эта ФЗ принадежит G +

По построению G имеет место ФЗ: XX +− X (2)

Пополним эту ФЗ: X →(X +− X)⋃ X, получится, что XX + (3)

Теперь по первой аксиоме Армстронга из (1) имеем X +→ Y (4)

Значит, XYG +, по третьей аксиоме Армстронга, исходя из (3) и (4).

2)

Докажем обратное, что если XYG, то XYF +

По построению G имеем: Y = X +− X (5)

Для F имеем:

XX + (по определению) (6)

X +→ X +− X (1 аксиома Армстронга, так как X +− XX +) (7)

XX +− X = Y (3 аксимома Армстронга из (6)и (7), и по равенству (5))

В итоге получили XYF +.

Теорема доказана.

Пример

УСО: R =(A, B, C)

Множество ФЗ: F =(AB, BA, CA, AC, BC)

1)

G =(ABC, BAC, CA)

2)

A += ABC, A +− A = BC

B += BAC, B +− B = AC

C += CAB, C +− C = AB


Тогда G =(ABC, BAC, CAB) будет являться УНП.

Свойства "хорошей" схемы БД

"Хорошая", но не оптимальная. Должна обладать следующими свойствами:

  • соединение без потерь;
  • сохранение ФЗ;
  • каждая схема отношений в этой БД находится в 3НФ. Наличие этого свойства обеспечивает отсутствие в схемах отношений следующих аномалий:
    • избыточность;
    • потенциальная противоречивсть;
    • аномалия обновления;
    • аномалия удаления.

Соединение без потерь

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

Пусть ρ =(R 1... Rn) - схема БД. Она будет обладать свойством соединения без потерь, если для любого экземпляра отношения r из R справедливо равенство: rR 1(r)⋈Π R 2(r)⋈...⋈Π Rn (r), где Π Ri (r) - это проекция экземпляра отношения r на множество атрибутов Ri

Пример БД, не обладающей свойством соединения без потерь

R =(A, B, C)

ρ =(AB, BC)=(R 1, R 2)

F =(AB)

Достаточно привести пример экземпляра r, для которого равенство не выполняется:

Полученное соединение не будет равняться r:

Этот пример показывает, что при неправильном построении БД запросы могут выдавать неправильный результат.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: