logo

Dependența tranzitivă în SGBD

Să considerăm o relație R(A B C). Aici A, B și C sunt cunoscute ca atributul relației R. Când apare următoarea condiție; atunci dependența tranzitivă apare în SGBD. Condițiile sunt A → B, B → C. Prin urmare, condiția devine A → C. Cu alte cuvinte, putem spune că atunci când dependențele sunt făcute de două dependențe funcționale, atunci dependențele funcționale devin dependențe tranzitive.

Ce este dependența tranzitivă?

Se consideră o relație R(A B C). Aici A, B și C sunt cunoscute ca atributul relației R. Când apare următoarea condiție; atunci dependența tranzitivă apare în SGBD. Condițiile sunt A → B, B → C. Prin urmare, condiția devine A → C. în dependențe funcționale tranzitive, o dependentă este direct dependentă de determinant.

Să înțelegem dependențele tranzitive cu ajutorul exemplului următor.

ID_autor Autor Carte Autor_Naționalitate
A1 Arundhati Roy Zeul lucrurilor mici India
A1 Kiran Desai Moștenirea pierderii India
A2 R. K. Narayan Devoratorul de oameni din Malgudy India

În tabelul autorului de mai sus, obținem asta.

    Carte → Autor:Aici, atributul autor este determinat de atributul carte. Dacă cineva știe numele cărții, poate afla și numele autorului.Autor → Naționalitate_autor:Dacă cineva știe numele autorului, poate afla și naționalitatea autorului.Carte → Autor_Naționalitate: Dacă cineva știe numele cărții, poate afla și naționalitatea autorului.

Dacă ne uităm îndeaproape la dependențele funcționale discutate mai sus, găsim următorul model.

  • A → B și B → C B→C; prin urmare, A → CA → C.
  • A → Carte, B → Autor B → Autor și C → Naționalitate_autor C→Naționalitate_autor

Să presupunem că aplicăm a treia formă normală (3NF) în tabelul autorului de mai sus. În acest caz, dependența tranzitivă a tabelului de autor trebuie eliminată, iar procesul de eliminare a dependențelor tranzitive ale bazei de date este cunoscut sub numele de proces de normalizare.

Cum să evitați dependențele tranzitive?

Să luăm din nou în considerare tabelul de autori de mai sus și să vedem ce tip de problemă apare în timpul creării tabelului.

Tabelul autorilor:

ID_autor Autor Carte Autor_Naționalitate
A1 Arundhati Roy Zeul lucrurilor mici India
A1 Kiran Desai Moștenirea pierderii India
A2 R. K. Narayan Devoratorul de oameni din Malgudy India

Anomaliile datelor (cum ar fi anomaliile de actualizare, inserare și ștergere) și inconsecvența pot fi contribuite de tabelul de autor. Când există prea multă redundanță în baza de date, atunci sunt cauzate anomalii de date în date. Anomaliile datelor sunt cauzate și atunci când există o problemă cu actualizarea, ștergerea și inserarea de date noi. De exemplu, în tabelul autorului-

  • Nu putem adăuga un nou autor până când nu putem adăuga o carte la tabel.
  • Nu putem șterge autorul până când nu ștergem complet cartea din baza de date.
  • Dacă vrem să ștergem cartea „Zeul lucrurilor mici”, id-ul autorului, autorul și naționalitatea au fost, de asemenea, șterse.

Problemele de mai sus apar în orice relație care conține dependențe tranzitive.

A treia formă normală prin eliminarea dependenței tranzitive

Să luăm în considerare Tabel de autori cu trei atribute (Author_ID, Author, Author_Nationality) și încercați să găsiți și să eliminați dependența tranzitivă din acest tabel,

Tabelul autorilor:

ID_autor Autor Carte Autor_Naționalitate
A1 Arundhati Roy Zeul lucrurilor mici India
A1 Kiran Desai Moștenirea pierderii India
A2 R. K. Narayan Devoratorul de oameni din Malgudy India

Tabelul autorului de mai sus nu este în 3NF deoarece are o dependență tranzitivă. Să vedem cum

algoritmi de căutare
  • Autor → Naționalitate_autor Autor → Naționalitate_autor
  • Author_ID → Autor

Prin urmare, există și următoarea dependență funcțională,

  • Authir_ID → Author_Nationality formează un model similar cu ceea ce am discutat mai sus.

Acum, pentru a elimina dependența tranzitivă, tot ce trebuie să facem este să împărțim tabelul Autorului în așa fel încât Author_ID să nu mai depindă funcțional de Author_Nationality.

Să creăm două tabele, unul care conține doar { Author_ID, Author} și altul care conține {Author_Nationality}. Noile tabele vor arăta astfel,

Tabelul autorilor

ID_autor Autor
A1 Zeul lucrurilor mici
A2 Moștenirea pierderii
A3 Devoratorul de oameni din Malgudy

Tabelul naționalității autorului

Autor Autor_Naționalitate
Arundhati Roy India
Kiran Desai India
R. K. Narayan India

Acum, noul tabel Autor și tabelul Naționalitate autor nu conține nicio dependență tranzitivă, iar relația este acum în 3NF.