Prva normalna oblika

Iz Wikipedije, proste enciklopedije
Jump to navigation Jump to search

Prva normalna oblika (1NO ali prva normalna forma - 1NF) je najnižja normalna oblika pri normalizaciji podatkovne baze. Da bi zadoščala 1NO, mora tabela relacijske podatkovne baze spoštovati neki minimalni množici pravil. Pravilno bi bilo uporabiti pojme relacija, n-terica in atribut, vendar bomo zaradi lažjega razumevanja uporabljali pojme tabela, vrstica in stolpec.

Definicija 1NO[uredi | uredi kodo]

Date pravi, da je tabela v 1NO le, če je isomorfična relacija, kar pomeni, za zadošča naslednjim petim pravilom.[1]

1. Ni razvrščanja vrstic od zgoraj navzdol.
2. Ni razvrščanja stolpcev od leve proti desni.
3. Ni ponavljajočih vrstic.
4. V preseku vsake vrstice in vsakega stolpca, je natanko ena vrednost iz uporabljive domene (in nič drugega).
5. Vsi stolpci so regularni [npr. Vrstice nimajo skritih komponent, kot so oznaka vrstice, oznaka objekta ali skriti časovni žig].


Edgar F. Codd: "Relacija je v prvi normalni obliki, če … nobena njena domena ne vsebuje elementov, ki so sami množice. Nenormalizirana relacija je taka, ki ni v prvi normalni obliki."[2]


Raghu Ramakrishnan in Johannes Gehrke: "Relacija je v prvi normalni obliki, če vsako polje vsebuje samo atomarne vrednosti, to je, brez seznamov ali množic."[3]


Opozoriti je treba, da Dateovo 4. pravilo zahteva natanko eno vrednost v vsaki celici. Zato opozarja, da celica ne sme biti prazna (null), kar je v nasprotju z Coddovim prvotnim pogledom na relacijski model, ki izrecno dovoljuje prazne celice.

Atomarnost[uredi | uredi kodo]

Nekatere definicije 1NO (predvsem Edgar F. Codd) omenjajo pojem atomarnosti. Codd pravi: "Vrednosti v domenah, na katerih je definirana vsaka relacija, morajo biti atomarne v primerjavi z SUPB." Codd definira: "Atomarna vrednost je vrednost, ki je SUPB ne more razčleniti na manjše dele (če izključimo posebne funkcije)."

Koncept "atomarne vrednosti" je nekaterim avtorjem dvoumen koncept, ta dvoumnost pa je povzročila zmedo o tem, kako razumeti 1NO. Predvsem je problematična "vrednost, ki je SUPB ne more razčleniti", saj to bi pomenilo, da je redko katera, če sploh katera vrsta podatka atomarna:

  • Niz znakov kaže, da ni atomarna, saj SUPB po navadi ponuja operatorje, ki razčlenijo nize na podnize.
  • Datum ne zgleda atomaren, saj SUPB ponuja operatorje, ki razčlenijo datum na dan, mesec in leto.
  • Itd...

Date pravi, da pojem atomarnosti nima absolutnega pomena. Vrednosti si lahko predstavljamo atomarno v nekaterih primerih, v drugih primerih pa si jih lahko predstavljamo kot sestav več osnovnih elementov v različnih primerih. Tudi množico si lahko predstavljamo kot posamezno vrednost v določeni meri abstrakcije. Če to sprejmemo, 1NO ne more biti definirana s pomočjo atomarnosti. Zato Date dovoljuje, da tabele vsebujejo tabele in v ta namen omeni pojem relacijsko-vrednotenih atributov (RVA).

Ponavljajoče skupine[uredi | uredi kodo]

Koncept "ponavljajočih skupin" različni teoretiki razumejo različno. Iz tega sledi, da ni univerzalnega dogovora o tem, katere lastnosti izključujejo tabelo, da bi bila v 1NO. Nekateri avtorji (npr.Edgar F. Codd) izkjučujejo relacijsko-vrednotene atribute (tabele v tabelah), medtem ko jih drugi dovoljujejo (npr. Chris Date) .

Dateovo 4. pravilo, govori o ponavljajočih skupinah. Naslednji primeri prikazujejo različno načrtovane podatkovne baze, ki vsebujejo ponavljajoče skupine in kršijo 1NO.

Primer 1[uredi | uredi kodo]

Predstavljamo si, da želimo hraniti podatke o opravljenih izpitih za študente na naslednji način.

Vpisna Številka Ime Priimek Opravljen izpit
63000345 Janez Novak Fizika
63020031 Marija Kovač Algebra
63010281 Martin Krpan Analiza

Nato ugotovimo, da se bo s časom število opravljenih izpitov povečalo. Odločimo se, da se tem težavam izognemo tako, da v polje "Opravljen izpit" dodamo več kot eno vrednost.

Vpisna Številka Ime Priimek Opravljen izpit
63000345 Janez Novak Fizika
63020031 Marija Kovač Algebra, Fizika
63010281 Martin Krpan Analiza

Predpostavimo, da smo pri načrtovanju stolpca "Opravljen izpit" izbrali za domeno niz z največ 7 znaki. Tabela zato ni več v 1NO, saj tako 1NO kot SUPB prepoveduje, da bi celica vsebovala več kot eno vrednost iz domene stolpca.


Recimo, da se poskušamo izogniti tej težavi in spremenimo domeno stolpca "Opravljen izpit" tako, da bo mogoče vnesti v celice več kot samo eno vrednost. To sedaj ni več skladno z 1NO in predstavlja več težav v načrtovanju. Opravljen izpit lahko zdaj predstavlja en sam opravljen izpit, seznam izpitov, oziroma nasploh karkoli. Na tak način je zelo težko pisati poizvedbe, s katerimi bi npr. iskali, kateri študenti so opravili isti izpit.


Primer 2[uredi | uredi kodo]

Recimo, da se zdaj odločimo, da bomo uporabili več stolpcev, v katerih bomo hranili opravljene izpite.

Vpisna Številka Ime Priimek Opravljen izpit 1 Opravljen izpit 2 Opravljen izpit 3
63000345 Janez Novak Fizika
63020031 Marija Kovač Algebra Fizika
63010281 Martin Krpan Analiza

Taka zasnova uporablja neobvezne stolpce, kar je v nasprotju z Dateovo definicijo 1NO, saj vsebuje neobvezne stolpce (null). Tudi če dovolimo neobvezne stolpce, ne ustrezamo duhu 1NO, saj imajo "Opravljen izpit 1", "Opravljen izpit 2" in "Opravljen izpit 3" isto domeno in enak pomen. To nas lahko privede do nekaterih logičnih težav npr.

  • Ne moremo zahtevati od sistema za upravljanje relacijske podatkovne baze, da bi bili opravljeni izpiti pri posameznem študentu obvezno drugačni. Npr. študentu bi lahko po pomoti dali "opravljen izpit 2", ki bi bil enak "opravljenemu izpitu 1".
  • Omejeni smo na maksimalno 3 opravljene izpite. Če je študent opravil 4 izpite, moramo dodati nov stolpec.

Zasnova tabele, ki zadošča 1NO[uredi | uredi kodo]

Če želimo neko tabelo prevesti v 1NO, moramo:

  • odstraniti ponavljajoče atribute,
  • določiti funkcionalne odvisnosti,
  • določiti primarni ključ

Zasnova, ki je nedvoumno v 1NO, uporablja 2 tabeli.

Vpisna Številka Ime Priimek
63000345 Janez Novak
63010281 Marija Kovač
63020031 Martin Krpan
Vpisna Številka Opravljen izpit
63000345 Fizika
63010281 Analiza
63010281 Fizika
63020031 Algebra

Ponavljajoče skupine vpisnih številk se v tej zasnovi ne ponavljajo. Namesto tega, se vsaka povezava študenta z opravljenim izpitom pojavi kot nov zapis.

Višje normalne oblike[uredi | uredi kodo]

Tabela, ki je v neki normalni obliki, je po definiciji tudi v vseh nižjih normalnih oblikah, obratno pa ni nujno. Torej je tabela v 1NO lahko ali ne v 2NO, tabela v 2NO je lahko ali ne v 3NO itn.

Višje normalne oblike nam ponujajo manj redundance, boljšo učinkovitost ter zaščitijo podatkovno bazo pred raznimi logičnimi nekonsistentnostmi, ki so posledica brisanja, dodajanja ali spreminjanja podatkov.

Vpisna Številka Ime Priimek Opravljen izpit
63000345 Janez Novak Fizika
63010281 Marija Kovač Algebra
63010281 Marija Kovač Fizika
63020031 Martin Krpan Analiza

Primarni ključ tabele je {Vpisna številka, opravljen izpit}.

Če se Marija poroči in zamenja priimek, moramo spremeniti dve vrstici. Če se sprememba zgodi le na eni vrstici, imamo težave v primeru, da iščemo študenta z vpisno številko 63010281, saj dobimo 2 različna rezultata. 2NO odpravlja to težavo.

Reference[uredi | uredi kodo]

  1. Chris Date, Date on Database: Writings 2000–2006.
  2. Codd, E. F., The Relational Model for Database Management Version 2 (Addison-Wesley, 1990).
  3. Raghu Ramakrishnan and Johannes Gehrke, Database Management Systems, 3rd edition, McGraw-Hill, 2003

Glej tudi[uredi | uredi kodo]