Dependența multivaluată în proiectarea bazei de date

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:

Elevi
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:

Elevi
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:

Studenți și majori
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:

Studenți și 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.