Uvod u baze podataka, hello world, non-microsoft toolset

Nakon početnih predavanja, došao sam i do konkretnih stvari. Međutim, početne dojmove: "ne kontam", "nelogično", "gubim se" nikako nisam mogao izbiti.

Imao sam očekivanja da će stvari kod na kraju ipak početi "lijegati na svojem mjesto". Međutim, do tačke "aha - kontam" nikako nisam mogao doći :(

Uvod u baze podataka, hello world

Tražio sam "hello world" predmeta ali ga nikako nisam mogao naći.  Video materijali su dobri, ali oni nemaju nikakvu logičku vezu sa teorijskim dijelom, posebno ER dijagramima. Možda sam nešto ispustio !? Loš kvalitet, nekonzistentnost materijala su mi stvorili veliki problem. Pokušao sam to iskompenzirati traženjem pojašnjenja po internetu ... Ali, koliko god mi neki internet materijal pomogao, svjestan sam da za polaganje ispita prije svega moram "sažvakati" ono što materijali govore. Ma koliko to meni  bilo konfuzno ...

Zato sam danas nakon što sam priveo čitanje materijala kraju, odlučio da na par praktičnih primjera utvrdim šta sam "pohvatao".

Hello world 1

Prvi zadatak koji sam sebi postavio je izrada R dijagrama na osnovnu ER dijagrama sa entitetima i relacijama(*): Putnik (kupuje) Karta (važi) Let (vodi) Kapetan.

Nisam se baš  proslavio. Trebalo mi je najmanje 45 minuta da to uradim. Napravio sam dosta grešaka, ali sam na kraju dobio ispravno rješenje:

Jedina stvar koja mi je u materijalima ostala nejasna je to što u (MS access) primjeru grafičkog prikaza relacijske sheme stoji KAPETAN(1) -> LET(beskonačno). MS Access nema posebnu oznaku za relaciju za (0..1), ili se radi o grešci u materijalima ? 

Hello world 2

U prvom primjeru sam uočio da najviše dilema imam u tome da li će relacija sa ER dijagrama u relacionoj shemi biti tabela ili neće.

Time sam došao do toga da mi je najbitnije preraditi materijal "Prevođenje ER modela u R model". Materijal po principu pravila objašnjava kako karakteristične elemente ER dijagrama  treba prebaciti u R model. Tako je svaka od kombinacija binarnih veza ( (1..1) : (1..1) ; (0..1) : (1..1); (0..1) : (0..1)  ...) posebno obrađena. 

Nakon prolaska kroz materijal, nisam mogao uočiti zajedničku nit, a memorisanje napamet pojedinih hem mi teško ide, hem smatram najobičnijom glupošću da mozak za takvo šta rezervišem.

Skont'o sam strategiju:

Napraviću "hello world 2". Uzeću jedan od primjera i "rastaviti ga do crvenih krvnih zrnaca". Kada to uradim, valjda ću skontati u čemu je fol' - šta je pozadina ovih pravila.

Uzeo sam nasumice primjer binarne veze sa (0..N) : (0..1)  spojevima. Entuzijastično sam napravio u dia-i dijagram:

Nakon toga sam uzeo ER master i sa njim napravio ovaj R dijagram:

Međutim, moja verzija nije zadovoljavala rješenje koje se navodi materijalima. U materijalima se navodi ovo rješenje:

strukturalna komponenta (tabele):

  • predmet(id_predmet, naziv)
  • udzbenik(id_udzbenik, naslov)
  • koristi(id_udbzenik, id_predmet)

integritetna komponenta R modela (relacije među tabelama):

  • koristi[id_udbzenik]  FK(**) <- udbzenik[id_udbzenik]
  • koristi[id_predmet]  FK <- predmet[id_predmet]

 

Rad prema mom "feeling"-u nije sadržavao ovu tabelu koristi. Što će im ova tabela ?! Zato sam se odlučio da nastavim sa svojim "hello world 2". ERmaster mi nudi DDL(***) pa ću u PostgreSQL(****) bazi napraviti ove tabele.

https://gist.github.com/783370

Onda sam sa pgAdmin unio testne podatke:

Jedina stvar koja se može uslovno spornom nazvati jesu NULL stavke, međutim, tabele i struktura su po meni "čiste k'o suza".

Rješenje sa tabela "koristi" je takođe ispravno, ali ja nikakvu anomaliju ne vidim ni u svom rješenju. Dapače. Moje rješenje ima dvije tabele, za razliku od ponuđenih tri iz materijala. Što manje tabela, to je buduće održavanje sistema jednostavnije(*****).

Ostaje mi da se raspitam da li je ovo ispravno. U materijalima nisam našao da li je ovo "jedno od rješenja" ili se navedeno smatra jedino ispravnim rješenjem.

Rezime

Dobra stvar je da sam napokon prošao par konkretnih stvari, te da sam sam dobio aplikacijski toolset koji bi mi trebao omogućiti da predmete iz oblasti baza podataka  radim bez Microsoftovih alata. Pokušaću i seminarski rad uz pomoć ovih alata u najvećoj mjeri uraditi.

Moj toolset u ovom trenutku je:

1) dia - izrada ER dijagrama

  • image export - ok

2) ER master - izrada R dijagrama 

  • (omogućava kreiranje DDL SQL komandi)
  • kvalitetan image export dijagrama
  • pamćenje pojedinih revizija modela - ekstra korisna opcija

3) PostgreSQL kao testna relacijska baza

4) pgAdmin - GUI client za PostgreSQL

  • create database
  • create tables sa SQL DDL-om
  • direktni unos podataka u tabele
    (nije "user friendly" kao MS access; nema validacijske kontrole - input maske kao MS access ovo je ipak čisti frontend baze podataka - za takve validacije je pretpostavljam neophodno pisati  PL/SQL server-side procedure)
  • filter podataka
    (slično kao MS access filteri)
  • query - nema neki gui dizajner upita kao MS Access - samo klasični SQL upiti sa WHERE/JOIN

Toolset za seminarski, "gdje je ba zapelo"

Glavna stvar koja mi nedostaje za izradu seminarskoj je alat za grafički dizajn korisničkog interfejsa. Tu mi baš i nije jasno šta se u stvari od nas uopšte želi.

Nisam načisto da li se tu očeku pravljenje MS Access formi, korištenje makroa i sl. Valjda ne. To bi mi baš bila muka "ganjati".

Ako bih mogao sav posao završiti sa ovim toolsetom, pa na kraju ručno napraviti MS Access bazu (taman da to izvježbam za ispit) i dodati par onih input maski i constraint-a prema video materijalima, to bi bilo skroz ok.

Računam da bih na ovaj način realizirao glavne ciljeve predmeta, bez prekomjernog "mučenja" sa  MS Access i  VBA(******). Gradivo koje pokriva ovaj, a sigurno i budući predmeti iz oblasti baza podataka, može se savladati i bez striktnog baziranja Microsoft tehnologijama. Mora moći - moja trial licenca za MS office ističe za heftu :)

----

(*) Materijal pod naslovom ER model -> Relacioni model -> relationship

(**) FK - foreign key, u materijalima se koristi znak za podskup da bi se ovo opisalo - meni ta notacija nikako ne sjeda

(***) DDL - SQL data definition language

(****) PostgreSQL se koristim u knowhow projektu

(*****) U praksi ne prezam od tabela koje ne zadovoljavaju ni 1NF ako znam da će one biti male po broju redova, i da će mi takav dizajn olakšati održavanje sistema.

(******) VBA - Visual basic for aplications, skriptni jezik koji se koristi u Microsoft Office aplikacijama.

3669 views and 4 responses

  • Jan 17 2011, 1:17 PM
    Ernad Husremović responded:
    Obratio sam se kolegama asistentima sa predmeta po pitanjima koja su mi ostala otvorena:

    ---

    Poštovane kolege, u članku http://hernad.bring.out.ba/uvod-u-baze-podataka-konverzija-er-u-r-model, pojavljuju se pitanja za koje trebam vašu pomoć

    1) Na kraju poglavlja "Hello world 1" stoji pitanje 1:

    > Jedina stvar koja mi je u materijalima ostala nejasna je to što u (MS access) primjeru grafičkog prikaza relacijske sheme stoji KAPETAN(1) -> LET(beskonačno). MS Access nema posebnu oznaku za relaciju za (0..1), ili se radi o grešci u materijalima ?

    2) Poglavlje "Hello world 2" sadrži naredno pitanje.

    3) Molio bih pojašnjenje po seminarskog rada, posebno vezano za dizajn grafičkog interfejsa, odnosno stavki koje se trebaju uraditi mimo dizajna same baze podataka.

    U zadnjem poglavlju članka "Toolset za seminarski, 'gdje je ba zapelo'" su detalji ovog pitanja.

    Nadam se da vam neće predstavljati problem što sam se obratio na obje adrese. Nisam bio siguran koja je prava.

    Unaprijed hvala na pomoći

    ---

  • Jan 17 2011, 1:36 PM
    Ernad Husremović responded:
    ako je u seminarskom potrebno uraditi forme, da li se može pokušati sa nekih alatom kao što glom (http://www.glom.org/wiki/index.php?title=Screenshots) ?

    bez obzira što je to "100x" veći posao, više bih volio vrijeme utrošiti na proučavanje ovakvih alata nego li na MS Access.

  • Jan 18 2011, 1:34 AM
    Ernad Husremović responded:
    Počeo sam čitati video materijale za Database GUI koji se očekuje na seminarskom:

    * I dio(http://www.youtube.com/watch?v=8Pb4hURpwqk)
    * II dio(direktan link: http://www.youtube.com/watch?v=fQqAIft1pd8 )
    * III dio (direktan link: http://www.youtube.com/watch?v=7ayjcvL13B4 )
    * IV dio (direktan link: http://www.youtube.com/watch?v=2odsWmphmAg )

    Uhh ... počeo sam sa prvim materijalom ... i po svemu sudeći pomoći mi nema - intenzivno access-anje mi ne gine :(

  • Jan 19 2011, 4:17 AM
    Ernad Husremović responded:
    Što se tiče pitanja 2), tu sam stvar u međuvremenu djelimično razjasnio:

    http://hernad.bring.out.ba/autenticnost-materijala