Archive for October, 2009

Prva tablica, MP_VALUTA

Za prvu tablicu odabrao sam tablicu sa valutama. Valute su nacionalne novčane jedinice. Npr. u Hrvatskoj je to hrvatska kuna, u Europskoj uniji euro, u Švicarskoj je švicarski franak itd.

Svaka valuta ima jedinstven broj (brojčanu oznaku odnosno šifru) i slovnu oznaku dodijeljenu od međunarodne organizacije ISO.

Zašto to sve pišem? Zato što ne možete kvalitetno napraviti tablicu ako ne znate što će se zapisivati u nju. Prije nego što napravite tablicu, potrebno je dobro razmisliti što će se zapisivati i tko će zapisivati podatke i na koji način.

Za našu tablicu imamo nekoliko vrijednosti koje moramo zapisati:

  • šifra
  • naziv
  • slovna oznaka

Kako je šifra jedinstvena u tablici, biti će primary key. Kao takva, često vidim da se koriste prefiks ID u takvom polju što smatram suvišno.

mp_valuta_prva_slika

Zašto je VALUTA a ne ID_VALUTA ili SIFRA ili …?

Zato što je to po mojem pravilu. Moje pravilo kaže da je naziv tablice (bez prefiksa) ujedno i naziv PK polja tablice. Pravilo nije jednostavno i kod složenijih tablica se treba paziti, ali u globalu funkcionira odlično.

Zašto je CHAR(3) a ne INT?

Ako se to pitate morate još jednom pogledate šifre valuta. Tamo se vidi da npr. australski dolar ima šifru 036, a to će u INT polje biti zapisano kao 36. Mnogi su spremni na takve kompromise, ja u ovom slučaju nisam.

Zašto je polje NAZIV tipa  VARCHAR i baš duljine 60?

Za sva polja koja nemaju fiksnu duljinu koristim tip VARCHAR. Za string polja fiksne duljine koristim CHAR. Duljina 60 je odabrana slučajno. Kod kreiranja jedne tablice su bili nazivi dulji od 50 znakova i od tada koristim “po defaultu” 60 znakova.

Zašto OZNAKA a ne VALUTA_OZNAKA ili SIMBOL ili SLOVNA_OZNAKA?

U stvari, ja u stvarnosti koristim SIMBOL ali smatram da je primjerenije koristiti OZNAKA. SLOVNA_OZNAKA isto nije loše ali nema potrebe za takvim nazivom u tako maloj i tako jasnoj tablici.

Napomena:

Polja NULL izbjegavam gdje god mogu. Koristim ih samo u nekim tablicama i to za datumska polja koja ne moraju biti popunjena. Za ostale tipove koristim ili 0 (nula) ili ” (prazan string) kao default vrijednost.

No Comments

Nazivi tablica, ima li pravila?

Glavna pravila:

  • svaka tablica MORA imati prefiks
  • naziv tablice treba biti u jednini
  • naziv tablice treba biti imenica
  • riječi unutar naziva odvajaju se znakom “_”
  • naziv tablice MORA biti napisan velikim slovima

Prefiks, čemu to služi?

Kada unutar baze imate 3 tablice svakako da vam prefiks može samo smetati. No, kada unutar baze imate tablice koje nisu dijelovi iste logičke cjeline (videoteka, matični podaci, financije, plaće,…) i kada se broj tablica poveća iznad nekog broja, tada je lakše pratiti tablice preko prefiksa i njihovog naziva. Primjer može biti npr. MP_ za matične podatke (gradovi, države, valute, partneri, artikli,…), PL_ za tablice plaća (radnici, odbici, obustave, zarade,…), SK_ za skladište itd.

Jednina

Za ovo mi je trebalo nekoliko godina da shvatim koliko je korisno. Imate tablicu MP_GRADOVI, pa MP_TVRTKA pa MP_POREZI, MP_STOPA, SK_SKLADISTE i tako nikad kraja i nikad niste sigurni kako ste što nazvali. Ukoliko se držite jednostavnog pravila da je naziv u jednini, problema nema. Imate MP_GRAD, MP_TVRTKA, MP_POREZ i gotovo.

Imenica

Ovo nije teško pravilo. Služi tome da se ne komplicira sa nazivima tablica.

Odvajanje riječi znakom “_” unutar naziva

Tablica MP_POREZ ima svoju “kćer” tablicu MP_POREZ_STOPA koja sadrži arhivu poreznih stopa. Daleko je lakše pratiti nazive tablica kada su riječi unutar njih odvojene znakom “_”.

Bitno je dodati da uvijek mogu postojati neke iznimke ali one obično potvrđuju pravilo.

Prvo polje u tablici se zove isto kao i naziv tablice (bez prefiksa) i to je polje obično i primary key tablice ali o tome nešto kasnije.

2 Comments

Kako dobro imenovati bazu podataka?

Moja praksa je dati ime bazi po nazivu firme čiji se podaci nalaze unutra, napisani velikim slovima i bez znaka “_” umjesto razmaka.

Zašto naziv firme?

Zat0 što unutar jedne baze držim cjelokupne podatke jedne firme i ta baza je cjelina. Vidio sam situacije gdje baze dobivaju imena PLACE, VIDEOTEKA, FINANCIJE i slično. U takvu bazu nije logično staviti ništa osim onoga što predstavlja i kod prvog širenja to predstavlja logički problem.

Zašto velika slova?

Zato što sve baze napisane velikim slovima smatram radnim bazama dok sve baze napisane malim slovima i sa dodatkom godine, mjeseca i dana kristim kao pomoćne baze koje su nastale za potrebe testiranja ili restoranjem za potrebe provjere nekih podataka.

Zašto bez razmaka?

Zato što je sve bilo dobro dok se češće nisu javljale firme s nazivom od dvije ili više riječi. Ispalo je da je teže pogoditi gdje je razmak (odnosno “_”) u nazivu nego sve napisati u komadu. Provjereno.

Ovdje je popis (slučajan) firmi koje u nazivu sadrže riječ sreća.

slucajno_odabrane_firme_sreca

Kako bi ja dao nazive baza:

nazivi_baza_za_slucajne_firme

Kada se radi o restoranoj bazi koja nije radna, naziv može biti npr:

srecaispas_2009_09_12 ili nešto lošija verzija ali isto jasna SRECAISPAS20090912.

No Comments

Koje znakove ne koristiti u nazivima baza podataka

Dijakritički znakovi odnosno “hrvatska slova” (šđčćž)  - izbjegavam korištenje takvih znakova u nazivima jer prije nisu bila uopće podržana, kasnije je bilo problema, a sada mi je bolje bez njih.

wp1

Razmak (”blank”) – lijepo izgleda ali pokazuje svoju ružnu stranu kada morate naziv baze koristiti unutar SQL upita. Tada ste prisiljeni koristiti uglate zagrade da bi se dvije ili više riječi tretiralo kao ime, u ovom slučaju ime baze.

naziv_baze_s_razmakom

Znak minus (”-”) – vrlo slično kao i razmak. Kod korištenja takvih naziva potrebno je koristiti uglate zagrade što se lako može izbjeći ne korištenjem toga znaka u nazivu.

naziv_baze_s_znakom_minus

Sve što je navedeno kao primjer za same nazive baza vrijedi i za nazive tablica kao i za nazive polja.

No Comments