Размотримо релацију Р(АБ Ц). Овде су А, Б и Ц познати као атрибут релације Р. Када се појави следећи услов; тада се у ДБМС јавља транзитивна зависност. Услови су А → Б, Б → Ц. Дакле, услов постаје А → Ц. Другим речима, можемо рећи да када су зависности направљене помоћу две функционалне зависности, тада функционалне зависности постају транзитивне зависности.
Шта је транзитивна зависност?
Размотримо релацију Р(АБ Ц). Овде су А, Б и Ц познати као атрибут релације Р. Када се појави следећи услов; тада се у ДБМС јавља транзитивна зависност. Услови су А → Б, Б → Ц. Дакле, услов постаје А → Ц. у транзитивним функционалним зависностима, зависност је директно зависна од детерминанте.
Хајде да разумемо транзитивне зависности уз помоћ следећег примера.
Аутхор_ИД | Аутор | Боок | Аутхор_Натионалити |
---|---|---|---|
А1 | Арундати Рој | Бог малих ствари | Индија |
А1 | Киран Десаи | Наслеђе губитка | Индија |
А2 | Р.К. Нараиан | Људождер из Малгудија | Индија |
У горњој табели аутора то добијамо.
Ако пажљиво погледамо функционалне зависности о којима смо горе говорили, налазимо следећи образац.
- А → Б и Б → Ц Б→Ц; дакле, А → ЦА → Ц.
- А → Књига, Б → Аутор Б → Аутор и Ц → Националност_аутора Ц→Националност_аутора
Претпоставимо да примењујемо Трећи нормални облик (3НФ) у горњој табели аутора. У том случају, транзитивна зависност табеле аутора мора бити уклоњена, а процес уклањања транзитивних зависности базе података познат је као процес нормализације.
Како избећи транзитивне зависности?
Хајде да поново размотримо горњу табелу аутора и видимо која врста проблема се јавља током креирања табеле.
Табела аутора:
Аутхор_ИД | Аутор | Боок | Аутхор_Натионалити |
---|---|---|---|
А1 | Арундати Рои | Бог малих ствари | Индија |
А1 | Киран Десаи | Наслеђе губитка | Индија |
А2 | Р.К. Нараиан | Људождер из Малгудија | Индија |
Аномалијама података (као што су аномалије ажурирања, уметања и брисања) и недоследности може допринети табела аутора. Када је у бази података превише залиха, онда се у подацима изазивају аномалије података. Аномалије података такође настају када постоји проблем са ажурирањем, брисањем и уметањем нових података. На пример, у табели аутора-
- Не можемо додати новог аутора док не можемо додати књигу у табелу.
- Не можемо избрисати аутора док потпуно не избришемо књигу из базе података.
- Ако желимо да избришемо књигу 'Бог малих ствари', обрисан је и ИД аутора, аутор и националност.
Горе наведени проблеми се јављају у било ком односу који садржи транзитивне зависности.
Трећи нормални облик уклањањем транзитивне зависности
Хајде да размотримо Табела аутора са три атрибута (Аутхор_ИД, Аутхор, Аутхор_Натионалити) и покушајте да пронађете и елиминишете транзитивну зависност из ове табеле,
Табела аутора:
Аутхор_ИД | Аутор | Боок | Аутхор_Натионалити |
---|---|---|---|
А1 | Арундати Рои | Бог малих ствари | Индија |
А1 | Киран Десаи | Наслеђе губитка | Индија |
А2 | Р.К. Нараиан | Људождер из Малгудија | Индија |
Горња табела аутора није у 3НФ јер има транзитивну зависност. Да видимо како
свм
- Аутор → Аутор_Националност Аутор → Аутор_Националност
- Аутор_ИД → Аутор
Стога постоји и следећа функционална зависност,
- Аутхир_ИД → Аутхор_Натионалити формира образац сличан ономе о чему смо расправљали горе.
Сада да бисмо елиминисали транзитивну зависност, све што треба да урадимо је да поделимо табелу аутора на такав начин да Аутхор_ИД више неће функционално зависити од Аутхор_Натионалити.
Хајде да направимо две табеле, једну која садржи само { Аутхор_ИД, Аутхор} и другу која садржи {Аутхор_Натионалити}. Нове табеле ће изгледати овако,
Табела аутора
Аутхор_ИД | Аутор |
---|---|
А1 | Бог малих ствари |
А2 | Наслеђе губитка |
А3 | Људождер из Малгудија |
Табела националности аутора
Аутор | Аутхор_Натионалити |
---|---|
Арундати Рој | Индија |
Киран Десаи | Индија |
Р.К. Нараиан | Индија |
Сада нова табела аутора и табела националности аутора не садржи транзитивну зависност и релација је сада у 3НФ.