Поўная функцыянальная залежнасць у Нармалізацыя базы дадзеных

Поўная функцыянальная залежнасць з'яўляецца станам нармалізацыі базы дадзеных , якая прыраўноўвае да стандартнай нармалізацыі другой нармальнай форме (2НФ) . Карацей кажучы, гэта азначае, што яна адказвае патрабаванням першай нармальнай формы (1nf), і ўсё не ключавыя атрыбуты цалкам функцыянальна залежаць ад першаснай ключа.

Гэта не так складана, як гэта можа здацца. Давайце паглядзім на гэта больш падрабязна.

Рэзюмэ першай нармальнай формы

Перад тым, як база дадзеных можа быць цалкам функцыянальна залежныя, ён спачатку павінен адпавядаць першай нармальнай форме .

Усё гэта азначае, што кожны атрыбут павінен утрымліваць адзін, атамарнага значэнне.

Напрыклад, наступная табліца не адпавядае 1NF, таму што супрацоўнік Ціна звязаная з двума кропкамі, абодва ў адной вочку:

Першая нармальная форма Невыкананне
супрацоўнік размяшчэнне
Джон Лос-Анджэлес
ціна Лос-Анджэлес, Чыкага

Улічваючы гэты дызайн можа негатыўна паўплываць на абнаўленне дадзеных або запіс. Для забеспячэння адпаведнасці 1nf, пераставіць стол так, каб усе атрыбуты (або вочка слупкоў) правесці адно значэнне:

Першая нармальная форма адпаведнасці
супрацоўнік размяшчэнне
Джон Лос-Анджэлес
ціна Лос-Анджэлес
ціна Чыкага

Але 1NF ўсё яшчэ не дастаткова, каб пазбегнуць праблем з дадзенымі.

Як 2НФ працуе для забеспячэння поўнага залежыць

Каб быць цалкам залежыць, усё не кандыдацкіх ключавыя атрыбуты павінны залежаць ад першаснай ключа. (Памятаеце, што ключ - кандыдат атрыбут любой клавішы (напрыклад, першасны або знешні ключ) , які выкарыстоўваецца для адназначнай ідэнтыфікацыі запісу ў базе дадзеных.

дызайнеры баз дадзеных выкарыстаюць натацыю для апісання залежных адносін паміж атрыбутамі:

Калі атрыбут А вызначае значэнне B, мы пішам гэта -> В - гэта азначае , што У функцыянальна залежыць ад А. У гэтай сувязі, А вызначае значэнне B, у той час як У залежыць ад А.

Напрыклад, у наступнай табліцы супрацоўнікаў аддзелаў, EmployeeID і DeptID з'яўляецца абодва ключом кандыдатаў: EmployeeID з'яўляецца першасным ключом табліцы , а DeptID з'яўляецца знешніх ключом.

Любы іншы атрыбут - у гэтым выпадку, EmployeeName і DEPTNAME - павінен залежаць ад першаснай ключа, каб атрымаць яго значэнне.

супрацоўнік Аддзелы
EmployeeID EmployeeName DeptID DEPTNAME
Emp1 Джон Dept001 фінансаў
етр2 ціна Dept003 продажаў
Emp3 Carlos Dept001 фінансаў

У гэтым выпадку табліца не цалкам залежыць, таму што, у той час як EmployeeName залежыць ад першаснага ключа EmployeeID, то DEPTNAME замест залежыць ад DeptID. Гэта называецца частковай залежнасцю.

Для таго, каб гэтая табліца адпавядае 2НФ, неабходна падзяліць дадзеныя на дзве табліцы:

супрацоўнікі
EmployeeID EmployeeName DeptID
Emp1 Джон Dept001
етр2 ціна Dept003
Emp3 Carlos Dept001

Здымае атрыбут DEPTNAME з табліцы супрацоўнікаў і стварыць новую табліцу Аддзелы:

ведамства
DeptID DEPTNAME
Dept001 фінансаў
Dept002 чалавечыя рэсурсы
Dept003 продажаў

Цяпер адносіны паміж табліцамі цалкам залежыць, ці ў 2НФЕ.

Чаму Поўная залежнасць Важна

Поўная залежнасць паміж базай дадзеных атрыбутаў дапамагае забяспечыць цэласнасць дадзеных і пазбегнуць анамалій дадзеных.

Напрыклад, разгледзім табліцу ў раздзеле вышэй, што прыліпае толькі да 1NF. Тут, зноў-такі:

Першая нармальная форма адпаведнасці
супрацоўнік размяшчэнне
Джон Лос-Анджэлес
ціна Лос-Анджэлес
ціна Чыкага

Ціна мае два запісы. Калі мы абнаўляем адзін, не разумеючы, што ёсць два, то вынік быў бы няўзгодненыя дадзеныя.

Або, што, калі мы хочам, каб дадаць супрацоўніка ў гэтай табліцы, але мы яшчэ не ведаем месцазнаходжаньня? Мы маглі б быць забароненыя нават дадаць новы супрацоўнік, калі атрыбут размешчаных не дазваляе NULL значэння.

Поўная залежнасць не ўся карціна, хоць, калі гаворка ідзе пра нармалізацыі. Вы павінны пераканацца , што база дадзеных знаходзіцца ў трэцяй нармальнай форме (3НФ).