Мнагазначныя залежнасці ў праектаванні баз дадзеных

Мнагазначная залежнасць ламае чацвёртую нармальную форму

У рэляцыйнай базе дадзеных, залежнасць мае месца, калі інфармацыя захоўваецца ў адной і той жа табліцы базы дадзеных адназначна вызначае іншую інфармацыю, якая захоўваецца ў той жа табліцы. Шматзначнае залежнасць ўзнікае , калі наяўнасць адной або некалькіх радкоў у табліцы азначае наяўнасць аднаго ці некалькіх іншых радкоў у той жа табліцы. Іншымі словамі, два атрыбуту (ці слупкоў) у табліцы, з'яўляюцца незалежнымі адзін ад аднаго, але абодва залежаць ад трэцяга атрыбуту.

Шматзначнае залежнасць перашкаджае нармалізацыі стандартнай чацвёртай нармальнай форме (4НФ). Рэляцыйныя базы дадзеных вынікаюць пяць нармальных формаў, якія ўяўляюць сабой кіруючыя прынцыпы для запісу дызайну. Яны прадухіляюць абнаўленне анамалій і неадпаведнасці ў дадзеных. Чацвёртая нармальная форма мае справу з многімі адназначнымі адносінамі ў базе дадзеных .

Функцыянальная залежнасць у параўнанні шматзначнай залежнасці

Каб зразумець шматзначнасць залежнасць, карысна перагледзець тое, што функцыянальная залежнасць ёсць.

Калі атрыбут Х адназначна вызначае атрыбут Y, то Y функцыянальна залежыць ад X. Гэта запісваецца ў выглядзе X -> Y. Напрыклад, у табліцы Students ніжэй, Student_Name вызначае Кафедра:

студэнты
Student_Name галоўны
Ravi Гісторыя мастацтва
у прамежку хімія


Гэтая функцыянальная залежнасць можа быць напісана: Student_Name -> Major. Кожны Student_Name не вызначае роўна адзін маёр, і не больш.

Калі вы хочаце, каб база дадзеных таксама адсочваць спорт гэтыя студэнты прымаюць, вы можаце падумаць, што самы просты спосаб зрабіць гэта проста дадаць яшчэ адзін слупок пад назвай Sport:

студэнты
Student_Name галоўны спорт
Ravi Гісторыя мастацтва футбол
Ravi Гісторыя мастацтва валейбол
Ravi Гісторыя мастацтва тэніс
у прамежку хімія тэніс
у прамежку хімія футбол


Праблема тут складаецца ў тым, што як Раві і Бэт гуляць некалькі відаў спорту. Неабходна дадаць новы радок для кожнага дадатковага віду спорту.

Гэтая табліца ўводзіцца мнагазначная залежнасць, так як асноўныя і спорт з'яўляецца незалежным адзін ад аднаго, але і залежаць ад студэнта.

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

Шматзначнае залежнасць запісваецца X -> -> Y. У гэтым выпадку:

Student_Name -> -> Асноўныя
Student_Name -> -> Спорт

Гэта чытаецца як «Student_Name multidetermines мажор» і «Student_Name multidetermines спорту.»

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

Мнагазначныя залежнасці і Нармалізацыя

Стол з шматзначнай залежнасцю парушае стандарт нормировки чацвёртай нармальнай формы (4NK), паколькі ён стварае непатрэбныя надмернасці і можа прывесці да няўзгодненасці дадзеных. Для таго, каб давесці гэта да 4НФ, неабходна разбіць гэтую інфармацыю на дзве табліцы.

У прыведзенай ніжэй табліцы цяпер мае функцыянальную залежнасць Student_Name -> Major, і ніякіх мнагазначных залежнасцяў:

Студэнты і Majors
Student_Name галоўны
Ravi Гісторыя мастацтва
Ravi Гісторыя мастацтва
Ravi Гісторыя мастацтва
у прамежку хімія
у прамежку хімія

У той час як гэтая табліца таксама мае адну функцыянальную залежнасць Student_Name -> Спорт:

Студэнты і спорт
Student_Name спорт
Ravi футбол
Ravi валейбол
Ravi тэніс
у прамежку тэніс
у прамежку футбол

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