Normalisering van u databasis: Eerste Normale Vorm

Hierdie twee eenvoudige reëls sal help om jou databasis te normaliseer

Eerste Normale Vorm (1NF) stel die basiese reëls vir 'n georganiseerde databasis:

Wat beteken hierdie reëls wanneer die praktiese ontwerp van 'n databasis oorweeg word? Dit is eintlik redelik eenvoudig.

1. Elimineer duplisering

Die eerste reël bepaal dat ons nie data binne dieselfde ry van 'n tabel moet dupliseer nie. Binne die databasisgemeenskap word hierdie konsep verwys as die atoom van 'n tafel. Tabelle wat aan hierdie reël voldoen, word as atoom beskou. Kom ons ondersoek hierdie beginsel met 'n klassieke voorbeeld: 'n tabel in 'n menslike hulpbron databasis wat die bestuurder-ondergeskikte verhouding stoor. Vir die doeleindes van ons voorbeeld stel ons die besigheidsreël op wat elke bestuurder een of meer ondergeskiktes mag hê, terwyl elke ondergeskikte slegs een bestuurder mag hê.

Intuïtief, wanneer u 'n lys of sigblad skep om hierdie inligting op te spoor, kan ons 'n tabel skep met die volgende velde:

Onthou egter die eerste reël wat deur 1NF opgelê is: Verwyder duplikatiewe kolomme uit dieselfde tabel. Dit is duidelik dat die Subordinate1-Subordinate4 kolomme duplikatief is. Neem 'n oomblik en dink aan die probleme wat hierdie scenario veroorsaak. As 'n bestuurder net een ondergeskiktes het, word die ondergeskikte2-ondergeskikte4 kolomme net bergruimte verlore ('n waardevolle databasisproduk). Verbeel jou ook die geval waar 'n bestuurder reeds 4 ondergeskiktes het - wat gebeur as sy 'n ander werknemer aanneem? Die hele tafelstruktuur sal aanpassing vereis.

Op hierdie stadium kom 'n tweede blink idee gewoonlik voor die beginners van die databasis: Ons wil nie meer as een kolom hê nie en wil 'n soepel hoeveelheid data stoor. Kom ons probeer soos volg:

En die Subordinate-veld bevat veelvuldige inskrywings in die vorm "Mary, Bill, Joe."

Hierdie oplossing is nader, maar dit val ook nie van die punt nie. Die ondergeskikte kolom is steeds duplikatief en nie-atoom. Wat gebeur wanneer ons 'n ondergeskikte moet byvoeg of verwyder? Ons moet die hele inhoud van die tabel lees en skryf. Dit is nie 'n groot probleem in hierdie situasie nie, maar wat as een bestuurder honderd werknemers gehad het? Dit bemoeilik ook die proses om data uit die databasis te kies in toekomstige navrae.

Hier is 'n tafel wat voldoen aan die eerste reël van 1NF:

In hierdie geval het elke ondergeskikte 'n enkele inskrywing, maar bestuurders kan verskeie inskrywings hê.

2. Identifiseer die primêre sleutel

Nou, wat van die tweede reël: identifiseer elke ry met 'n unieke kolom of stel kolomme (die primêre sleutel )? U kan die bogenoemde tabel kyk en die gebruik van die ondergeskikte kolom as 'n primêre sleutel voorstel. Trouens, die ondergeskikte kolom is 'n goeie kandidaat vir 'n primêre sleutel as gevolg van die feit dat ons besigheidsreëls bepaal het dat elke ondergeskikte slegs een bestuurder mag hê. Die data wat ons in ons tafel gekies het, maak dit egter 'n minder as ideale oplossing. Wat gebeur as ons 'n ander werknemer wat Jim genoem word, huur? Hoe stoor ons sy bestuurder-ondergeskikte verhouding in die databasis?

Dit is die beste om 'n werklike unieke identifiseerder (soos 'n werknemer-ID) as primêre sleutel te gebruik . Ons finale tafel sal só lyk:

Nou is ons tafel in die eerste normale vorm! As jy voortgaan om te leer oor normalisering, lees die ander artikels in hierdie reeks: