Jūsu datubāzes normalizēšana: pirmā normālā forma

Šie divi vienkāršie noteikumi palīdzēs normalizēt jūsu datubāzi

Pirmā normālā forma (1NF) nosaka pamatregulējumu organizētai datubāzei:

Ko šie noteikumi nozīmē, domājot par datubāzes praktisko dizainu? Tas tiešām ir diezgan vienkārši.

1. Novērst dublēšanu

Pirmais noteikums nosaka, ka nedrīkstam dublēt datus tajā pašā tabulas rindā. Datubāzes kopienā šis jēdziens tiek dēvēts par tabulas atomitāti. Tabulas, kas atbilst šim noteikumam, tiek uzskatītas par atomu. Izpētīsim šo principu ar klasisku piemēru: tabulu cilvēkresursu datubāzē, kurā tiek saglabātas vadītāja pakļautās attiecības. Mūsu piemēra nolūkos mēs noteiksim uzņēmējdarbības noteikumus, ka katram vadītājam var būt viens vai vairāki padotie, bet katram pakārtotam var būt tikai viens pārvaldnieks.

Intuitīvi, izveidojot sarakstu vai izklājlapu, lai izsekotu šo informāciju, mēs varētu izveidot tabulu ar šādiem laukiem:

Tomēr jāatceras pirmais noteikums, ko uzliek 1NF: no vienas tabulas noņemiet atkārtotas kolonnas. Skaidrs, ka slejas Subordinate1-Subordinate4 ir dublēšanās. Veikt kādu brīdi un apdomāt problēmas, kas rodas šajā scenārijā. Ja vadītājam ir tikai viens padotais, slejas Subordinate2-Subordinate4 ir vienkārši izšķērdēta uzglabāšanas telpa (vērtīga datu bāze). Turklāt iedomājieties gadījumu, kad vadītājam jau ir 4 padotie - kas notiek, ja viņa uzņem citu darbinieci? Visa tabulas struktūra būtu jāmaina.

Šajā brīdī otrā spilgtākā ideja parasti rodas datu bāzes iesācējiem: mēs nevēlamies, lai būtu vairāk nekā viena kolonna, un mēs vēlamies pieļaut elastīgu datu glabāšanas apjomu. Mēģināsim kaut ko līdzīgu:

Un pakārtoto lauku varētu būt vairāki ieraksti formā "Mary, Bill, Joe".

Šis risinājums ir tuvāk, bet tas arī neatbilst marķējumam. Pakārtoto kolonna joprojām ir dublējoša un nav atomu. Kas notiek, kad mums jāpievieno vai jānoņem padotais? Mums ir jālasa un jāraksta viss tabulas saturs. Šajā situācijā tas nav liels darījums, bet, ja vienam vadītājam būtu simts darbinieku? Arī tas sarežģī datu atlases procesu no datubāzes turpmākajos vaicājumos.

Šeit ir tabula, kas atbilst pirmajam 1NF noteikumam:

Šajā gadījumā katram pakārtotājam ir viens ieraksts, bet vadītājiem var būt vairāki ieraksti.

2. Identificējiet primāro atslēgu

Tagad, kā ar otro noteikumu: identificēt katru rindu ar unikālu kolonnu vai kolonnu kopu ( primāro atslēgu )? Jūs varat apskatīt iepriekš minēto tabulu un ieteikt izmantot pakārtoto kolonnu kā primāro atslēgu. Faktiski pakārtotā aile ir labs primāro atslēgu kandidāts, jo mūsu uzņēmējdarbības noteikumi noteica, ka katram pakārtotam var būt tikai viens pārvaldnieks. Tomēr dati, kurus mēs esam izvēlējušies glabāt mūsu tabulā, padara to par mazāk par ideālu risinājumu. Kas notiks, ja mēs pieņemam darbā citu darbinieku ar nosaukumu Jim? Kā mēs saglabājam viņa vadītāja pakļautās attiecības datu bāzē?

Vislabāk ir izmantot patiesi unikālu identifikatoru (piemēram, darbinieku ID) kā primāro atslēgu . Mūsu gala galds izskatās šādi:

Tagad mūsu galds ir pirmajā normālajā formā! Ja vēlaties turpināt mācīties par normalizēšanu, izlasiet citus šīs sērijas rakstus: