29.06.2015 | 17:02
Kad si već načeo temu normalizacije - prvo, da ne bude zabune, to JEST, uz relacije, temelj razumijevanja baza podataka.
Ali ne mogu se oduprijeti dojmu da je baš normalizacija uvijek iznova "u školi" idealan teren za pametovanjem otjerati i onu jedva okupljenu šaku potencijalno zainteresiranih ljudi od baza podataka.
Jer, izuzev s korisničke strane, kad prvi put čuje za "normalizaciju", većina u životu još nije vidjela bazu podataka "iznutra" pa im graniči s nemogućim povezati nešto (njima) toliko apstraktno s korisnošću koja iz toga proizlazi. To pak ne sprječava predavače da ih uredno provedu kroz sve normalizacije i u jednom trenutku onaj dio publike koji se uspio probiti kroz apstrakciju normalizira primjere sve u 16, drugi dio tupo gleda u predavača, a nikome zapravo nije jasno što zapravo rade i kako će im to pomoći u životu.
Zapravo je tužno za vidjeti koliko pritom dolazi do izražaja razlika između teoretičara (koji najčešće "zapnu u vremenu") i praktičara. Isključivi teoretičari će baze podataka poučavati bottom-up - što na prvi pogled izgleda potpuno logičan pristup. Prvo ćemo organizirati podatke, potom ćemo ih koristiti.
Praktičari pak znaju da ćemo ih u konačnici 99,9% vremena koristiti i da sve drugo mora biti podređeno tome. A kad je podređeno tome, onda query nije nešto do čega će se "tek doći" već nešto što mora diktirati kako arhitektura te baze uopće mora izgledati. Pritom ne mislim samo na organizaciju podataka već na funkcioniranje svih segmenata baze (u najširem smislu, uključno sa svom potrebnom infrastrukturom), kao cjeline.
Da ne odlutam daleko od normalizacije - u konačnici će pretpostavljeno raspoloživo vrijeme za pojedini query (koje proizlazi iz "tolerancije" korisnika i raspoložive infrastrukture za ga izvršiti) diktirati i primjenu normalizacije, odnosno donošenje niza common sense odluka koje, svjesno kršeći pravila normalizacije, optimiziraju nešto konkretno. Naravno, i ovdje vrijedi ono da prvo treba pravila poznavati, a tek ih onda kršiti.
Zato preporučam prvo shvatiti što je baza podataka, odnosno što može (i što ne može). Potom neku blisku real-life situaciju prakticirati kroz bazu podataka (adresar kojeg si spomenuo je uvijek dobar primjer) i na temelju poznatog (u slučaju adresara to su "očite" veze između kontakata) otvarati dodatna pitanja i graditi temelje znanja tražeći odgovore na njih.
Putem će se očešati i o normalizaciju bez bauka "matematičke teorije" van konteksta (jer to uglavnom JEST bauk većini), a onome tko dovoljno misli svojom glavom, pojasnit će se kompletna normalizacija (jer je savršeno logična) do onog stupnja do kojeg je iskoristiva u praksi.
Zato mi je uvijek draži početak tipa: "Ovo je svemirski brod i to nije ništa komplicirano. Sad ću ti pokazati kako radi." Pa onda redom, do limita (i granice interesa) sugovornika. Ili predavača.