Normalizarea bazei dvs. de date: Prima formă normală

Aceste două reguli simple vă vor ajuta să normalizați baza de date

Prima formă normală (1NF) stabilește regulile de bază pentru o bază de date organizată:

Ce înseamnă aceste reguli atunci când se dorește proiectarea practică a unei baze de date? De fapt este destul de simplu.

1. Eliminați duplicarea

Prima regulă dictează că nu trebuie să duplicăm date în același rând dintr-un tabel. În cadrul comunității bazei de date, acest concept este denumit atomicitatea unei mese. Tabelele care respectă această regulă se consideră a fi atomice. Să explorăm acest principiu cu un exemplu clasic: un tabel din cadrul unei baze de date a resurselor umane care stochează relația manager-subordonat. În scopul exemplului nostru, vom impune regula de afaceri că fiecare manager poate avea unul sau mai mulți subordonați, în timp ce fiecare subordonat poate avea doar un singur administrator.

Intuitiv, atunci când creați o listă sau o foaie de calcul pentru a urmări aceste informații, am putea crea un tabel cu următoarele câmpuri:

Cu toate acestea, reamintiți prima regulă impusă de 1NF: Eliminați coloanele duplicative din același tabel. În mod evident, coloanele Subordonate1-Subordonate4 sunt duplicative. Luați o clipă și analizați problemele ridicate de acest scenariu. Dacă un manager are doar un subordonat, coloanele Subordonate2-Subordonate4 sunt pur și simplu spații goale de stocare (o bază de date prețioasă de baze de date). Mai mult decât atât, imaginați-vă cazul în care un manager are deja 4 subordonați - ce se întâmplă dacă ia un alt angajat? Structura întregului tabel ar necesita modificări.

În acest moment, o altă idee luminată apare, de obicei, la începătorii bazei de date: nu vrem să avem mai mult de o coloană și dorim să permitem o cantitate flexibilă de stocare a datelor. Să încercăm așa ceva:

Și câmpul Subordonați ar conține mai multe intrări în forma "Mary, Bill, Joe".

Această soluție este mai aproape, dar, de asemenea, este mai mică decât marcajul. Coloana subordonaților este încă duplicativă și non-atomică. Ce se întâmplă atunci când trebuie să adăugăm sau să eliminăm un subordonat? Trebuie să citim și să scriem întregul conținut al tabelului. Nu e mare lucru în această situație, dar dacă un manager avea o sută de angajați? De asemenea, complică procesul de selectare a datelor din baza de date în interogările viitoare.

Iată un tabel care satisface prima regulă de 1NF:

În acest caz, fiecare subordonat are o singură intrare, dar managerii pot avea mai multe intrări.

2. Identificați cheia primară

Acum, ce este despre a doua regulă: identificați fiecare rând cu o coloană unică sau un set de coloane ( cheia primară )? Puteți să aruncați o privire la tabelul de mai sus și să sugerați utilizarea coloanei subordonate ca cheie primară. De fapt, coloana subordonată este un bun candidat pentru o cheie primară, datorită faptului că regulile noastre de afaceri specifică faptul că fiecare subordonat poate avea doar un singur manager. Cu toate acestea, datele pe care le-am ales să le stocăm în tabelul nostru fac ca aceasta să fie o soluție mai puțin decât ideală. Ce se întâmplă dacă angajăm un alt angajat numit Jim? Cum stocăm relația manager-subordonată în baza de date?

Este mai bine să utilizați un identificator cu adevărat unic (cum ar fi un ID de angajat) ca cheie primară . Masa noastră finală ar arăta astfel:

Acum, tabelul nostru este în prima formă normală! Dacă doriți să continuați să învățați despre normalizare, citiți celelalte articole din această serie: