Normalizuokite savo duomenų bazę: pirmoji įprastinė forma

Šios dvi paprastos taisyklės padės normalizuoti jūsų duomenų bazę

Pirmoji normalioji forma (1NF) nustato pagrindines organizuotos duomenų bazės taisykles:

Ką reiškia šios taisyklės, kai svarstomas praktinis duomenų bazės dizainas? Tai iš tikrųjų yra gana paprasta.

1. Pašalinkite dubliavimą

Pirmoji taisyklė nurodo, kad neturime dubliuoti duomenų toje pačioje lentelės eilutėje. Bendruomenės duomenų bazėje ši sąvoka vadinama lentelės atomizmu. Lentelės, kurios atitinka šią taisyklę, laikomos atominėmis. Išnagrinėsime šį principą klasikiniu pavyzdžiu: lentelėje esančioje žmogiškųjų išteklių duomenų bazėje, kurioje saugomi vadovo ir pavaldžių santykių ryšiai. Pavyzdžiui, mes nustatysime verslo taisyklę, pagal kurią kiekvienas valdytojas gali turėti vieną ar kelis pavaldinius, o kiekvienam pavaldėjui gali būti tik vienas valdytojas.

Intuityviai, kurdami sąrašą ar skaičiuoklę, kad stebėtumėte šią informaciją, galėtume sukurti lentelę su šiais laukais:

Tačiau prisiminkite pirmąją taisyklę, kurią taiko 1NF: pašalinkite pasikartojančius stulpelius iš tos pačios lentelės. Aišku, stulpeliai Subordinate1-Subordinate4 dubliuojami. Paimkite akimirką ir apsvarstykite problemas, iškilusias pagal šį scenarijų. Jei valdytojas turi tik vieną pavaldžią, Subordinato2-Subordinate4 stulpeliai yra tiesiog švaistomi saugojimo vieta (vertinga duomenų bazės prekė). Be to, įsivaizduokite atvejį, kai valdytojui jau yra keturi pavaldiniai - kas atsitiks, jei ji priims kitą darbuotoją? Visa lentelės struktūra turėtų būti pakeista.

Šiuo metu antroji šviesi idėja paprastai atsiranda duomenų bazių naujokams: nenorime turėti daugiau nei vieno stulpelio, o mes norime leisti lankstų duomenų saugyklų kiekį. Pabandykite kažką panašaus:

Tada pavaldžių lauke būtų keli įrašai formos "Mary, Bill, Joe".

Šis sprendimas yra arčiau, bet taip pat trūksta ženklo. Pavaldžiųjų stulpelis vis dar yra dubliuojamas ir neatominis. Kas atsitinka, kai mes turime pridėti ar pašalinti pavaldžią? Mums reikia skaityti ir parašyti visą lentelės turinį. Tai nėra didelė situacija šioje situacijoje, bet kas, jei vienam valdytojui būtų šimtas darbuotojų? Be to, tai apsunkina duomenų rinkimo iš duomenų bazės ateityje užklausų procesą.

Štai lentelė, atitinkanti pirmąją 1NF taisyklę:

Šiuo atveju kiekvienas pavaldinis turi vieną įrašą, tačiau vadovai gali turėti kelis įrašus.

2. Nustatykite pagrindinį raktą

Dabar, kaip antroji taisyklė: identifikuoti kiekvieną eilutę su unikaliu stulpeliu ar stulpelių rinkiniu ( pagrindiniu raktu )? Galite pažvelgti į aukščiau pateiktą lentelę ir pasiūlyti naudoti pavaldinį stulpelį kaip pirminį raktą. Iš tikrųjų, pavaldumo stulpelis yra geras kandidatas į pirminį raktą dėl to, kad mūsų verslo taisyklėse nurodyta, kad kiekvienas pavaldinis gali turėti tik vieną valdytoją. Tačiau duomenys, kuriuos pasirinkome laikyti mūsų lentelėje, yra mažiau nei idealus sprendimas. Kas nutiks, jei samdysime kitą darbuotoją, vardu Jim? Kaip mes saugome savo vadybininko pavaldinius santykius duomenų bazėje?

Geriausia naudoti originalų identifikatorių (pvz., Darbuotojo ID) kaip pirminį raktą . Mūsų finalinis stalas atrodys taip:

Dabar mūsų stalas yra pirmoje įprastoje formoje! Jei norėtumėte ir toliau mokytis apie normalizavimą, perskaitykite kitus šios serijos straipsnius: