O dependență este o constrângere care se aplică sau definește relația dintre atribute. 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.
Dependențele bazelor de date confundă adesea atât studenții, cât și profesioniștii bazei de date. Din fericire, ele nu sunt la fel de complicate cum ar părea. Acestea pot fi cel mai bine explicate folosind câteva exemple. Aici vom examina tipurile comune de dependență a bazei de date.
Dependențele bazei de date și dependențele funcționale
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 fiind:
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 depinde de SSN (sau SSN -> name) deoarece numele angajatului poate fi determinat în mod unic de un 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 au întotdeauna SSN-uri diferite. 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. 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, numele {SSN, age} -> 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ț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ă atunci când este adevărată doar pentru că atât A -> B, cât și B -> C sunt adevărate. 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 o masă care conține numele modelului, culoarea și anul fiecărei mașini pe care compania o produce, există o dependență multivită î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. Baza de date a dependențelor este important de înțeles deoarece acestea furnizează blocurile de bază utilizate în normalizarea bazelor de date, procesul de organizare eficientă a datelor într-o bază de date. De exemplu: Definiții funcționale triviale
Dependențe funcționale complete
Dependențe tranzitorii
Dependențe multivite
Importanța dependențelor