Normalizarea bazei de date (explicată în engleză simplă)
Introducere în normalizarea bazei de date
Normalizarea bazei de date este un proces utilizat pentru a organiza o bază de date în tabele și coloane. Ideea principală este că un tabel ar trebui să se refere la un subiect specific și să includă doar subiecte de sprijin. Luați o foaie de calcul care conține informații ca exemplu, în care datele conțin agenți de vânzări și clienți care servesc mai multe scopuri:
- Identificați agenții de vânzări din organizația dvs.
- Enumerați toți clienții la care apelează compania dvs. pentru a vinde un produs
- Identificați vânzătorii care apelează la anumiți clienți.
Limitând un tabel la un singur scop, reduceți numărul de date duplicat conținute în baza de date. Acest lucru elimină unele probleme care rezultă din modificările bazei de date.
Pentru a atinge aceste obiective, vom folosi câteva reguli stabilite. Pe măsură ce aplicați aceste reguli, se formează noi tabele. Progresia de la neregulată la optimizată trece prin mai multe forme normale.
Există trei forme normale pe care majoritatea bazelor de date le respectă. Deoarece tabelele satisfac fiecare formă succesivă de normalizare a bazei de date, acestea devin mai puțin predispuse la anomalii de modificare a bazei de date și sunt mai concentrate către un singur scop sau subiect. Înainte de a trece mai departe, asigurați-vă că înțelegeți definiția unui tabel de baze de date.
Motive pentru normalizarea bazei de date
Există trei motive principale pentru a normaliza o bază de date. Primul este de a minimiza datele duplicate, al doilea este de a minimiza sau evita problemele de modificare a datelor și al treilea este de a simplifica interogările.
Pe măsură ce parcurgem diferitele stări de normalizare, vom discuta despre modul în care fiecare formular abordează aceste probleme, dar, pentru început, să analizăm câteva date care nu au fost normalizate și să discutăm câteva potențiale capcane.
Cred că odată ce ați înțeles problemele, mai bine apreciați normalizarea. Luați în considerare următorul tabel:
Primul lucru de observat este că acest tabel servește mai multe scopuri, inclusiv:
- Identificarea agenților de vânzări ai organizației
- Listarea vânzărilor birouri și numere de telefon
- Asocierea unui agent de vânzări cu un birou de vânzări
- Afișarea clienților fiecărui agent de vânzări
Ca DBA, acesta ridică un steag roșu. În general, îmi place să văd tabele care au un singur scop. Faptul că masa servește multor scopuri introduce multe dintre provocări; și anume, duplicarea datelor, probleme de actualizare a datelor și un efort sporit de interogare a datelor.
Duplicarea și modificarea anomaliilor datelor
Observați că pentru fiecare SalesPerson am enumerat atât SalesOffice, cât și OfficeNumber. Există date despre vânzătorul duplicat. Informațiile duplicate prezintă două probleme:
- Crește stocarea și scade performanța.
- Devine mai dificilă menținerea modificărilor de date.
De exemplu:
Luați în considerare dacă mutăm biroul din Chicago la Evanston, IL. Pentru a reflecta corect acest lucru în tabelul nostru, trebuie să actualizăm intrările pentru toți vânzătorii care se află în prezent în Chicago. Tabelul nostru este un mic exemplu, dar puteți vedea dacă ar fi mai mare, care ar putea implica sute de actualizări.
Aceste situații sunt anomalii de modificare. Normalizarea bazei de date le remediază. Există trei anomalii de modificare care pot apărea:
Insert Anomaly
Există fapte pe care nu le putem înregistra până nu cunoaștem informații pentru întregul rând. În exemplul nostru, nu putem înregistra un nou birou de vânzări până nu cunoaștem și persoana de vânzări. De ce? Deoarece pentru a crea înregistrarea, trebuie să oferim o cheie primară. În cazul nostru, acesta este ID-ul angajatului.
Actualizați anomalia
În acest caz avem aceleași informații în mai multe rânduri. De exemplu, dacă numărul biroului se schimbă, atunci sunt necesare mai multe actualizări. Dacă nu actualizăm toate rândurile, atunci apar neconcordanțe.
Anomalie de ștergere
Ștergerea unui rând determină eliminarea mai multor seturi de fapte. De exemplu, dacă John Hunt se retrage, atunci ștergerea acelui rând ne face să pierdem informații despre biroul din New York.
Probleme de căutare și sortare
Ultimul motiv pe care îl vom lua în considerare este facilitarea căutării și sortării datelor. În tabelul SalesStaff, dacă doriți să căutați un anumit client, cum ar fi Ford, ar trebui să scrieți o interogare precum
SELECT SalesOfficeFROM SalesStaffWHERE Customer1 = ‘Ford’ OR Customer2 = ‘Ford’ OR Customer3 = ‘Ford’
În mod clar dacă clientul ar fi cumva într-o singură coloană interogarea noastră ar fi mai simplă. De asemenea, luați în considerare dacă doriți să executați o interogare și să sortați după client.
Tabelul nostru actual face acest lucru dificil. Trebuie să utilizați trei interogări separate UNION!Puteți elimina sau reduce aceste anomalii separând datele în diferite tabele. Aceasta plasează datele în tabele care au un singur scop.
Procesul de reproiectare a tabelului este normalizarea bazei de date.
Definiția normalizării bazei de date
Există trei forme comune de normalizare a bazei de date: prima, a doua și a treia formă normală. De asemenea, acestea sunt prescurtate ca 1NF, 2NF și respectiv 3NF.
Există mai multe forme suplimentare, cum ar fi BCNF, dar le consider avansate și nu prea necesare pentru a învăța la început.
Formele sunt progresive, ceea ce înseamnă că pentru a te califica pentru a 3-a formă normală, un tabel trebuie să îndeplinească mai întâi regulile pentru a 2-a formă normală, iar a 2-a formă normală trebuie să adere la cele pentru prima formă normală. Înainte de a discuta în detaliu diferitele forme și reguli, să rezumăm diferitele forme:
- Prima formă normală – informațiile sunt stocate într-un tabel relațional cu fiecare coloană conținând valori atomice. Nu există grupuri de coloane care se repetă.
- Al doilea formular normal – Tabelul este în prima formă normală și toate coloanele depind de cheia primară a tabelului.
- Al treilea formular normal – tabelul este în a doua formă normală și toate coloanele sale nu depind tranzitiv de cheia primară
Dacă regulile nu au prea mult sens, nu vă faceți griji. M-am conectat la articol pentru a vă ajuta să le înțelegeți.
Deocamdată este important să înțelegeți că există trei reguli de normalizare a bazelor de date care sunt reciproc. Unii oameni fac ca normalizarea bazei de date să pară complicată.
dar nu trebuie să fie și, odată ce ați înțeles-o, devine intuitivă.