Ero sivun ”Tietokannan normalisointi” versioiden välillä

p
+kh
p (kielenhuoltoa ohjelmalla AWB)
p (+kh)
'''Tietokannan normalisointi''' on vaiheittainen malli, jota seuraamalla saadaan [[relaatiotietokanta|relaatiotietokannan]] rakenne parhaiten tukemaan tietojen ehjää tallennusta ja tiedon tehokasta saatavuutta. Vaiheet vähentävät tiedon [[redundanssi|redundanssia]] (samaa tietoa tallennettaisiin useaan kertaan) ja parantavat tallennetun tiedon [[eheys|eheyden]] (keskinäisen konsistenssin) säilymistä.
 
Kuitenkin monista relaatiotietokannoista puuttuu puhdas erottelu tietokannan loogisen rakenteen ja tiedon fyysisen tallennuksen toteutustavan välillä, jolloin kyselyt täydellisesti normalisoituun tietokantaan voivat olla suoritukseltaan hitaita. Siinä tapauksessa [[Tietokannan denormalisointi|denormalisointia]] voidaan käyttää tehokkuuden parantamiseen – hintanatällöin saavutetustasaavutetun tehokkuudestatehokkuuden hintana on tiedon eheyden säilymisen hallintahallinan vaikeutuuvaikeutuminen.
 
== Lyhyt yhteenveto normaalimuodoista ==
 
Relaatiotietokannan taulun sanotaan olevan tietyssä normaalimuodossa, jos se täyttää kyseisen normaalimuodon ehdot. Normalisointi toteutetaan järjestämällä taulurakenne[[taulu|taulu_(tietokanta)]]rakenne uudestaan siten, että ehto toteutuu. Tämä tapahtuu siirtämällä [[attribuutti|attribuutteja]] toiseen jo olemassa olevaan tauluun tai luomalla uusi taulu.
Normaalimuodot on järjestetty niin, että järjestysluvultaan seuraava normaalimuoto esittää aina vahvemman ehdon kuin edellinen. Lisäksi pitää täyttää myös jokaisen järjestysluvultaan pienemmän normaalimuodon ehdot. Relaatiomallin kehittäjän [[Edgar F. Codd]]in alkuperäinen julkaisu määritti kolme ensimmäistä, mutta jälkikäteen on määritelty lisää normaalimuotoja.
Yleisesti käytännön toteutuksissa tietokantaa pidetään normalisoituna, jos se täyttää ehdot kolmanteen normaalimuotoon asti.
 
:''Ensimmäinen normaalimuoto'' (''1NF'') vaatii, että tietokannan jokaisen taulun sarakkeiden eli relaatioiden attribuuttien arvot ovat ''atomisia'' (toisin sanoen moniarvoiset attribuutit on poistettava – esimerkiksi numeronumeroarvo on atominen arvo, kun taas lista numeroita ei ole). Normalisointi tehdään siirtämällä moniarvoiset attribuutit omiin erillisiin tauluihinsa.
 
:''Toinen normaalimuoto'' (''2NF'') kieltää ei-avainattribuuttien ei-triviaalit funktionaaliset riippuvuudet avainehdokkaan osaan.
:''Kolmas normaalimuoto'' (''3NF'') kieltää attribuuteilta, jotka eivät ole avaimia, ei-triviaalit toiminnalliset riippuvuudet muihin kuin avainehdokkaiden superjoukkoon.
 
Tämä tarkoittaa sitä, että taulun muiden kuin ei-avainkenttien pitää riippua avainkentistä. Jos taulussa on kentät ''PartID'', ''Valmistaja'', ja ''Valmistajan osoite'', niin taulu ei täytä kolmatta normaalimuotoa. Valmistajan osoite ja itse osa eivät millään lailla riipu toisistaan. Valmistajan tiedot (esimerkiksi osoite ja muut) pitää viedä toiseen tauluun.
 
:''Boyce-Coddin normaalimuoto'' (''BCNF'') on kolmatta normaalimuotoa tiukempi määrittely. Millään attribuutilla ei saa olla riippuvuutta muualle kuin kokonaiseen avainattribuuttiin (pois lukien triviaalit riippuvuudet, kuten A->A).
639

muokkausta