Ar trebui să normalizez baza de date?

Normalizarea în lumea reală

Baza de date normalizare este una dintre vacile sacre de dezvoltare a aplicațiilor. Fiecare curs de programare de licență pe care l-ați luat sau pe care l-ați citit probabil predică importanța normalizării bazelor de date .

Este timpul să contestăm acel truism. Uneori este bine să denormalizați baza de date!

Când trebuie să normalizați?

Baza de date normalizează protecția integrității datelor. Este o idee minunată în multe cazuri și ar trebui să începeți orice încercare de proiectare a bazelor de date cu normalizarea în minte. Dacă vă puteți normaliza baza de date, mergeți la el! De fapt, iată câteva sfaturi practice despre cum să vă normalizați baza de date pe acest site:

Linia de jos este că ar trebui să vă normalizați baza de date cu excepția cazului în care aveți un motiv foarte bun să nu faceți acest lucru. Normalizarea este, de obicei, o practică de design de sunet. Reduce informațiile redundante, optimizează performanța și reduce probabilitatea ca veți avea probleme legate de integritatea datelor care rezultă din faptul că aceleași date sunt stocate în diferite colțuri ale bazei dvs. de date.

Unele motive bune pentru a nu normaliza

Acestea fiind spuse, există câteva motive bune pentru a nu normaliza baza de date. Să ne uităm la câteva:

  1. Conectările sunt scumpe . Normalizarea bazei de date implică adesea crearea de mulțimi de mese. De fapt, puteți să terminați cu ușurință ceea ce credeți că ar trebui să fie o interogare simplă care să cuprindă cinci sau zece tabele. Dacă ați încercat vreodată să faceți o adunare de cinci mese, știți că funcționează în principiu, dar cu încetinitorul în practică. Dacă construiți o aplicație web care se bazează pe interogări multiple în combinație cu mesele mari, s-ar putea să vă gândiți "Dacă această bază de date nu a fost normalizată!" Când auziți acel gând în cap, este un moment potrivit pentru ia în considerare denormalizarea. Dacă puteți lipi toate datele utilizate de această interogare într-o singură masă, fără a vă pune într-adevăr în pericol integritatea datelor, mergeți la ea! Fiți un rebel și denormalizați baza de date. Nu te vei uita înapoi!
  2. Proiectarea normalizată este dificilă . Dacă lucrați cu o schemă complexă de baze de date, probabil veți găsi că vă bateți capul în fața mesei peste complexitatea normalizării. Ca o regulă simplă, dacă petreceți toată ziua încercând să vă dați seama cum să treceți la a patra formă normală, s-ar putea să fiți prea normalizați. Întoarceți-vă și întrebați-vă dacă merită să continuați.
  1. Rapidă și murdară trebuie să fie rapidă și murdară . Dacă doar dezvoltați un prototip, faceți tot ce funcționează rapid. Într-adevăr. Este bine. Dezvoltarea rapidă a aplicațiilor este uneori mai importantă decât designul elegant. Nu uitați să vă întoarceți și să examinați cu atenție designul dvs. odată ce sunteți pregătit să treceți dincolo de faza de prototipare. Prețul pe care îl plătiți pentru un design rapid și murdar al bazei de date este că ar putea fi necesar să îl aruncați și să începeți atunci când este timpul să construiți pentru producție.
  2. Dacă utilizați o bază de date NoSQL , normalizarea tradițională nu este de dorit. În schimb, proiectați-vă baza de date folosind modelul BASE , care este mult mai iertător. Acest lucru este util atunci când stocați date nestructurate, cum ar fi e-mailuri, imagini sau videoclipuri.

Unele cuvinte de prudență

Baza de date este, în general, o idee bună. Ar trebui să încercați să respectați principiile normalizării atunci când pare rezonabil să faceți acest lucru. Dar dacă toți indicatorii indică faptul că normalizarea este prea complexă pentru a fi implementată, luați în considerare o abordare care va face lucrul în timp ce vă protejează în același timp datele.

În cele din urmă - dacă alegeți să vă îndepărtați de regulile de normalizare, fiți vigilenți cu privire la modul în care impuneți integritatea bazei de date. Dacă stocați informații redundante, puneți declanșatoarele și alte controale pentru a vă asigura că informațiile rămân în concordanță.