Baze de date dependente sunt un subiect care confundă adesea atât studenții, cât și profesioniștii bazei de date. Din fericire, acestea nu sunt atât de complicate și pot fi ilustrate cel mai bine prin utilizarea unui număr de exemple. În acest articol, examinăm tipurile comune de dependență a bazei de date.
Dependențele bazelor de date / dependențele funcționale
O dependență apare într-o bază de date atunci când informațiile stocate în același tabel al bazei de date determină în mod unic alte informații stocate în același tabel. Puteți, de asemenea, descrie acest lucru ca fiind o relație în care cunoașterea valorii unui atribut (sau a unui set de atribute) este suficientă pentru a vă spune valoarea unui alt atribut (sau set de atribute) în același tabel.
Spunând că există o dependență între atributele într-un tabel, este aceeași cu a spune că există o dependență funcțională între acele atribute. Dacă există o dependență într-o bază de date, astfel încât atributul B depinde de atributul A, ați scrie acest lucru ca "A -> B".
De exemplu, într-un tabel care prezintă caracteristicile angajaților, inclusiv numărul de securitate socială (SSN) și numele, se poate spune că numele este dependent de SSN (sau SSN -> name) deoarece numele unui angajat poate fi determinat în mod unic de SSN. Cu toate acestea, instrucțiunea inversă (nume -> SSN) nu este adevărată deoarece mai mulți angajați pot avea același nume, dar SSN-uri diferite.
Definiții funcționale triviale
O dependență funcțională trivială apare atunci când descrieți o dependență funcțională a unui atribut dintr-o colecție de atribute care include atributul original. De exemplu, "{A, B} -> B" este o dependență funcțională trivială, așa cum este "{name, SSN} -> SSN". Acest tip de dependență funcțională se numește trivial, deoarece poate fi derivat din bunul simț. Este evident că dacă cunoașteți deja valoarea lui B, atunci valoarea lui B poate fi determinată în mod unic de acea cunoaștere.
Dependențe funcționale complete
O dependență funcțională totală apare atunci când îndepliniți deja cerințele pentru o dependență funcțională și setul de atribute din partea stângă a instrucțiunii de dependență funcțională nu mai poate fi redus. De exemplu, "{SSN, age} -> name" este o dependență funcțională, dar nu este o dependență funcțională completă, deoarece puteți elimina vârsta din partea stângă a instrucțiunii fără a afecta relația de dependență.
Dependențe tranzitorii
Dependențele tranzitorii apar atunci când există o relație indirectă care determină o dependență funcțională. De exemplu, "A -> C" este o dependență tranzitivă când este adevărată doar pentru că atât "A -> B", cât și "B -> C" sunt adevărate.
Dependențe multivite
Dependențele multivate au loc atunci când prezența unuia sau mai multor rânduri într-un tabel implică prezența uneia sau a mai multor rânduri în același tabel. De exemplu, imaginați-vă o companie de automobile care produce multe modele de mașini, dar întotdeauna face atât culorile roșu și albastru ale fiecărui model. Dacă aveți un tabel care conține numele modelului, culoarea și anul fiecărei mașini pe care compania o produce, există o dependență multivolită în tabelul respectiv. Dacă există un rând pentru un anumit nume de model și un an cu albastru, trebuie să existe și un rând similar cu versiunea roșie a aceleiași mașini.
Importanța dependențelor
Baza de date a dependențelor este important de înțeles, deoarece ele furnizează blocurile de bază utilizate în normalizarea bazei de date . De exemplu:
- Pentru ca o tabelă să fie în a doua formă normală (2NF) , nu trebuie să existe nici un caz al unui atribut non-prime în tabelul care este funcțional dependent de un subset al unei chei candidate .
- Pentru ca o tabelă să fie în a treia formă normală (3NF) , fiecare atribut non-prime trebuie să aibă o dependență funcțională non-tranzitală față de fiecare cheie candidat.
- Pentru ca o tabelă să fie în forma normală Boyce-Codd (BCNF) , fiecare dependență funcțională (altele decât dependențele triviale) trebuie să fie pe un superkey .
- Pentru ca o masă să fie în a patra formă normală (4NF) , ea nu trebuie să aibă dependențe multivate.