Dependența de mai multe ori distruge a patra formă normală
Într-o bază de date relațională, o dependență are loc 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. O dependență multivită are loc atunci când prezența unuia sau a mai multor rânduri într-un tabel implică prezența uneia sau a mai multor rânduri în același tabel. Altfel, două atribute (sau coloane) într-o tabelă sunt independente una de alta, dar ambele depind de un al treilea atribut.
O dependență multivolară împiedică formarea normală standard 4 (4NF). Bazele de date relaționale urmează cinci forme normale care reprezintă orientări pentru designul înregistrărilor. Acestea împiedică anomaliile și neconcordanțele de actualizare a datelor. A patra formă normală se referă la relațiile multiple într-o bază de date .
Dependența funcțională vs. dependența multivolită
Pentru a înțelege o dependență multivită, este util să revedeți ce este dependența funcțională.
Dacă un atribut X determină în mod unic un atribut Y, atunci Y este funcțional dependent de X. Acesta este scris ca X -> Y. De exemplu, în tabelul Studenți de mai jos, Student_Name determină majore:
Numele studentului | Major |
---|---|
Ravi | Istoria artei |
Beth | Chimie |
Această dependență funcțională poate fi scrisă: Student_Name -> Maior . Fiecare Student_Name determină exact un Major, și nu mai mult.
Dacă doriți ca baza de date să urmărească, de asemenea, sporturile pe care acești studenți le iau, s-ar putea să vă gândiți că cel mai simplu mod de a face acest lucru este doar să adăugați o altă coloană intitulată Sport:
Numele studentului | Major | sportiv |
---|---|---|
Ravi | Istoria artei | Fotbal |
Ravi | Istoria artei | Volei |
Ravi | Istoria artei | Tenis |
Beth | Chimie | Tenis |
Beth | Chimie | Fotbal |
Problema este că atât Ravi cât și Beth joacă mai multe sporturi. Este necesar să adăugați un nou rând pentru fiecare sport suplimentar.
Această tabelă a introdus o dependență multivolită, deoarece principalul și sportul sunt independenți unul de altul, dar ambii depind de student.
Acesta este un exemplu simplu și ușor de identificat, dar o dependență multivalueală ar putea deveni o problemă într-o bază de date complexă și complexă.
O dependență multivită este scrisă X -> -> Y. În acest caz:
Numele studenților -> -> Maior
Student_Name -> -> Sport
Acesta este citit ca "Student_Name multidetermines Major" și "Student_Name multidetermines Sport".
O dependență multivolită necesită întotdeauna cel puțin trei atribute deoarece constă în cel puțin două atribute care depind de oa treia.
Dependență și normalizare multivaluează
Un tabel cu o dependență multivalabilă încalcă standardul de normalizare a Formei 4 Normale (4NK), deoarece creează concedieri inutile și poate contribui la date inconsistente. Pentru a aduce acest lucru până la 4NF, este necesar să rupă aceste informații în două tabele.
Tabelul de mai jos are acum o dependență funcțională a Student_Name -> Major și nu există dependențe multivate:
Numele studentului | Major |
---|---|
Ravi | Istoria artei |
Ravi | Istoria artei |
Ravi | Istoria artei |
Beth | Chimie |
Beth | Chimie |
În timp ce acest tabel are de asemenea o dependență funcțională unică a Student_Name -> Sport:
Numele studentului | sportiv |
---|---|
Ravi | Fotbal |
Ravi | Volei |
Ravi | Tenis |
Beth | Tenis |
Beth | Fotbal |
Este clar că normalizarea este adesea abordată prin simplificarea tabelelor complexe, astfel încât acestea să conțină informații referitoare la o singură idee sau temă, în loc să încerce să facă o singură masă, să conțină prea multe informații disparate.