Tietokannan normalisoinnin perusteet
Jos olet työskennellyt tietokantojen parissa jonkin aikaa, olet todennäköisesti kuullut termin normalisointi. Ehkä joku on kysynyt sinulta: "Onko tietokanta normalisoitu?" tai "Onko se sisällä BCNF?" Normalisointia pidetään usein luksusta, johon vain akateemikoilla on aikaa. Normalisoinnin periaatteiden tunteminen ja niiden soveltaminen päivittäisiin tietokannan suunnittelutehtäviin ei kuitenkaan ole kovin monimutkaista, ja se voi parantaa DBMS-järjestelmän suorituskykyä huomattavasti.
Tässä artikkelissa esittelemme normalisoinnin käsitteen ja tarkastelemme lyhyesti yleisimpiä normaalimuotoja.
Mikä on normalisointi?
Normalisointi on prosessi, jossa tiedot järjestetään tehokkaasti tietokannassa. Normalisointiprosessilla on kaksi tavoitetta: ylimääräisten tietojen poistaminen (esimerkiksi saman tiedon tallentaminen useampaan kuin yhteen taulukkoon) ja sen varmistaminen tietoriippuvuudet järkevää (vain liittyvän tiedon tallentaminen taulukkoon). Molemmat ovat arvokkaita tavoitteita, koska ne vähentävät tietokannan käyttämää tilaa ja varmistavat, että tiedot tallennetaan loogisesti.
Normaalit muodot
Tietokantayhteisö on kehittänyt joukon ohjeita tietokantojen normalisoinnin varmistamiseksi. Näitä kutsutaan normaaleiksi muodoiksi ja ne on numeroitu yhdestä (alin normalisoinnin muoto, jota kutsutaan ensimmäiseksi normaalimuodoksi tai 1NF) viiteen (viides normaalimuoto tai 5NF). Käytännön sovelluksissa näet usein 1NF, 2NF ja 3NF sekä satunnaiset 4NF. Viides normaalimuoto nähdään hyvin harvoin, eikä sitä käsitellä tässä artikkelissa.
Ennen kuin aloitamme keskustelun normaaleista lomakkeista, on tärkeää huomauttaa, että ne ovat vain ohjeita ja ohjeita. Joskus on välttämätöntä poiketa niistä, jotta ne täyttäisivät käytännön liiketoiminnan vaatimukset. Kun muunnelmia kuitenkin tapahtuu, on välttämätöntä arvioida mahdolliset seuraukset, joita niillä voi olla järjestelmääsi, ja ottaa huomioon mahdolliset epäjohdonmukaisuudet. Sen sijaan tutkitaan normaaleja muotoja.
Ensimmäinen normaalimuoto (1NF)
Ensimmäinen normaalimuoto (1NF) asettaa perussäännöt järjestetylle tietokannalle:
- Poista päällekkäiset sarakkeet samasta taulukosta.
- Luo erilliset taulukot kullekin liittyvien tietojen ryhmälle ja tunnista jokainen rivi ainutlaatuisella sarakkeella tai sarakejoukolla ( pääavain).
Toinen normaalimuoto (2NF)
Toinen normaalimuoto (2NF) käsittelee edelleen päällekkäisten tietojen poistamisen käsitettä:
- Täytä kaikki ensimmäisen normaalilomakkeen vaatimukset.
- Poista tietojen osajoukot, jotka koskevat useita taulukon rivejä, ja sijoita ne erillisiin taulukoihin.
- Luo suhteita näiden uusien taulukoiden ja niiden edeltäjien välille käyttämällä vieraita avaimia.
Kolmas normaalimuoto (3NF)
Kolmas normaalimuoto (3NF) menee yhden merkittävän askeleen pidemmälle:
- Täytä kaikki toisen normaalilomakkeen vaatimukset.
- Poista sarakkeet, jotka eivät ole riippuvaisia ensisijaisesta avaimesta.
Boyce-Coddin normaalimuoto (BCNF tai 3.5NF)
Boyce-Coddin normaalimuoto, jota kutsutaan myös "kolmas ja puolikas (3.5) normaalimuoto", lisää vielä yhden vaatimuksen:
- Täytä kaikki kolmannen normaalilomakkeen vaatimukset.
- Jokaisen determinantin on oltava a ehdokasavain.
Neljäs normaalimuoto (4NF)
Lopuksi neljännellä normaalimuodolla (4NF) on yksi lisävaatimus:
- Täytä kaikki kolmannen normaalilomakkeen vaatimukset.
- Relaatio on 4NF: ssä, jos sillä ei ole moniarvoisia riippuvuuksia.
Muista, että nämä normalisointiohjeet ovat kumulatiivisia. Jotta tietokanta olisi 2NF: ssä, sen on ensin täytettävä kaikki 1NF-tietokannan kriteerit.
Pitäisikö minun normalisoida?
Vaikka tietokannan normalisointi on usein hyvä idea, se ei ole ehdoton vaatimus. Joissakin tapauksissa normalisointisääntöjen tahallinen rikkominen on hyvä käytäntö.
Jos haluat varmistaa, että tietokanta normalisoituu, aloita oppimalla lisäämään tietokanta Ensimmäinen normaalimuoto.