3.2. Тривиални и нетривиални зависимости

Очевиден начин за намаляване на размера на набора FD би бил премахването на тривиалните зависимости, т.е. тези, които не могат да бъдат изпълнени. Като пример, нека вземем тривиален федерален закон за връзкатаДоставки_от_град:

<VendorCode, Product_Code> ®Код_на_доставчик

Всъщност FZ е тривиален тогава и само ако дясната страна на символната нотация на тази зависимост е подмножество на лявата страна.

3.3. Затваряне на множество зависимости

Да предположим, че: 1 A2 … An> е набор от атрибути, а S е набор от функционални зависимости.

Чрез затваряне на комплекта1A2… An> в зависимост от изпълнението на функционални зависимости S, се извиква набор B от атрибути, така че за всяко отношение, на което всички функционални зависимости на набора S отговарят, функционалната зависимост

Затваряне на набор от атрибути 1 A2 … An> означен като 1 A2 ... An > + . Алгоритъмът за изчисляване на затварянето на набора от атрибути 1 A2 ... An>, по отношение на определен набор от функционални зависимости, има следния вид:

1. Нека X представлява множеството от атрибути, които трябва да бъдат разширени до множеството за достигане на затварянето. X се инициализира на 1 A2 ... An>.

2. Извършва се търсене на някаква функционална зависимост B1 B2 ... Bm ® C, така че всички атрибути B1 B2 ... Bm принадлежат на множеството X, но C не. Ако посочената функционална зависимост съществува. C се добавя към множеството X.

3. Стъпка 2 се повтаря, докато има съответните функционални зависимости, чиито атрибути трябва да бъдат включени в набора X. Тъй като X позволява само разширяване, числотоатрибутите, които могат да бъдат добавени към X, рано или късно ще бъдат изчерпани.

4. След завършване на процедурата за разширение, наборът X съдържа желаната стойност на затварянето 1 A2 ... An> + .

Разгледайте връзкатаRс атрибути A, B, C, D, E, F. Да предположим, че следните функционални зависимости удовлетворяват връзката R:

Какво е затварянето на комплекта , т.е. + .

Нека първо приемем, че X = . Атрибутите на лявата страна на зависимостта AB ® C присъстват в X. Получаваме

X = . Сега X съдържа атрибутите от лявата страна на функционалната зависимост BC ® AD. Следователно атрибут A и атрибут D могат да бъдат добавени към X. A вече е член на X, но атрибут D не е. Включваме атрибута D в множеството X. Получаваме X = . След това използваме зависимостта D ® E и добавяме E към множеството X. Получаваме X = . Помислете за последната зависимост CF ® B. Тази зависимост няма да даде по-нататъшно разширяване на множеството X, тъй като атрибутът F не е елемент от множеството X. По този начин,

Описаният алгоритъм дава възможност да се провери дали дадена функционална зависимост A1 A2 … An ® B е от множеството функционални зависимости S. Първо, изчисляваме 1 A2 … An> + използвайки S. Ако B е член на 1 A2 ... An> + , функционалната зависимост A1 A2 … An ® B следва от S. В противен случай -- не е.