Skip to main content

Un ghid pentru înțelegerea dependențelor bazei de date

191st Knowledge Seekers Workshop - Sept 28, 2017 (Aprilie 2025)

191st Knowledge Seekers Workshop - Sept 28, 2017 (Aprilie 2025)
Anonim

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.

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, 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ț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ă atunci 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 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.

Importanța dependențelor

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:

  • Pentru ca un tabel să fie în a doua formă normală (2NF), nu trebuie să existe nici un caz de atribut nonprime în tabel care să depindă funcțional de un subset al unei chei candidate.
  • Pentru ca o masă să fie în a treia formă normală (3NF), fiecare atribut nonprime trebuie să aibă o dependență funcțională nontransitivă 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.