Пуна функционална зависност у нормализацији базе података

Пуна функционална зависност је стање нормализације базе података, што је једнако нормализацијском стандарду Сецонд Нормал Форм (2НФ) . Укратко, то значи да испуњава захтеве прве нормалне форме (1НФ), а сви атрибути који нису кључни у потпуности су функционално зависни од примарног кључа.

Ово није тако компликовано као што звучи. Да погледамо ово детаљније.

Сажетак прве нормалне форме

Пре него што база података може бити у потпуности функционално овисна, мора се прво придржавати прве обичне форме .

Све то значи да сваки атрибут мора имати једну, атомску вредност.

На пример, следећа табела није у складу са 1НФ, јер је запослени Тина повезан са две локације, обојица у једној ћелији:

Први стандардни неусаглашеност
Запослени Локација
Јохн Лос Анђелес
Тина Лос Анђелес, Чикаго

Допуштање овог дизајна може негативно утицати на ажурирања или уносе података. Да бисте обезбедили 1НФ усклађеност, преуређујте таблицу тако да сви атрибути (или ћелије колона) имају једну вредност:

Прво усаглашавање са стандардним стандардима
Запослени Локација
Јохн Лос Анђелес
Тина Лос Анђелес
Тина Цхицаго

Али 1НФ још увијек није довољно да избегне проблеме са подацима.

Како 2НФ ради како би осигурала пуну зависност

Да би били у потпуности зависни, сви кључни атрибути који нису кандидати морају зависити од примарног кључа. (Запамтите, атрибут кључа кандидата је било који кључ (на примјер, примарни или инострани кључ) који се користи за јединствено идентификовање записа базе података.

Дизајнери базе података користе нотацију за описивање зависних односа између атрибута:

Ако атрибут А одреди вредност Б, напишемо овај А -> Б - што значи да је Б функционално зависна од А. У овом односу, А одређује вриједност Б, док Б зависи од А.

На пример, у следећој табели Одељења запослених, ЕмплоиееИД и ДептИД су оба кључа кандидата: ЕмплоиееИД је примарни кључ таблице док је ДептИД инострани кључ.

Сваки други атрибут - у овом случају, ЕмплоиееНаме и ДептНаме - мора зависити од примарног кључа да би добио своју вриједност.

Службе за запошљавање
Број запосленог Име запосленог ДептИД ДептНаме
Емп1 Јохн Депт001 Финансије
Емп2 Тина Депт003 Продаја
Емп3 Царлос Депт001 Финансије

У овом случају, табела није потпуно зависна јер, док ЕмплоиееНаме зависи од примарног кључа ЕмплоиееИД, ДептНаме умјесто тога зависи од ДептИД-а. Ово се назива делимична зависност .

Да би ова табела била усклађена са 2НФ-ом, потребно је раздвојити податке у двије табеле:

Запослени
Број запосленог Име запосленог ДептИД
Емп1 Јохн Депт001
Емп2 Тина Депт003
Емп3 Царлос Депт001

Уклонимо атрибут ДептНаме из табеле Запослени и креирамо нове табеле Одељења :

Одељења
ДептИД ДептНаме
Депт001 Финансије
Депт002 Људски ресурси
Депт003 Продаја

Сада су односи између табела потпуно зависни или у 2НФ.

Зашто је пуна зависност важна

Потпуна зависност између атрибута базе података помаже у осигурању интегритета података и избегавања аномалија података.

На пример, сматрајте табелу у горњем одељку која се придржава само 1НФ. Ево опет:

Прво усаглашавање са стандардним стандардима
Запослени Локација
Јохн Лос Анђелес
Тина Лос Анђелес
Тина Цхицаго

Тина има два записа. Ако ажурирамо један, а не схватимо да постоје два, резултати би били неусаглашени подаци.

Или, шта ако желимо да додамо запосленика на ову столу, али још увек не знамо локацију? Можда ћемо бити онемогућени чак и додати новог запосленог ако атрибут Локације не дозвољава вриједности НУЛЛ-а.

Пуна зависност није цела слика, иако када се ради о нормализацији. Морате се уверити да је ваша база података у Трећем нормалном облику (3НФ).