Uvod u baze podataka, integralni

Nikako da ispišem članak o UBP-u(*), koji je ujedno i zadnji ispit III semestra koji sam polagao. Ovo je jedini ispit koji sam kod prve parcijale preskočio. Ovo je takođe jedini od ispita koji sam prije samih rokova koliko-toliko iščitao.

UBP je moje najveće razočarenje. Ali, da odmah razjasnim:

UBP nije najbezvezniji ispit na godini, nego je iznevjerio moja očekivanja. Baze podataka su moje interesno područje. Po mnogo čemu, one su mi interesantnije od programiranja(**)

Kada sam napisao br_clanaka_o_FIT_Mostar = a + b1 *p_b + b2 * p_tp +  b3 / p_k , imao sam upravo na umu UBP. UBP ima veoma visok p_b, ali i nizak p_k.

Teoretski i praktični dio, "k'o sjekirom" odsječeno

Tokom spremanja ispita, posebno kod teoretskog dijela, masa stvari mi je stvarala distrakciju. Kod praktičnog dijela, "Access" se u zadnjem dijelu(***) pokazao kao dodatni distraktor.

Sama podjela predmeta na teoretski i praktični dio je neprirodno napravljena. Isto k'o da se nastavnici "teoretičari" i nastavnici "praktičari" ni u putu nisu sreli ...

Što se tiče utiska drugih studenata, tokom odlaska na ispit sam slušao komentare drugih. Ovo je opći dojam drugih studenata:

  • Praktični dio je jasan i interesantan. Za razliku od mene druga raja ne vidi nikakav problem u access-u.
  • Za teoretski dio postoji opći koncenzus: komplikovan i nejasan. Korištena terminologija, date definicije nikome nisu "sjele".

Spremanje ispita

Ispit sam skroz nakaradno spremao. Access sam tri puta otvorio čisto da upratim gdje se šta nalazi. Više sam vremena proveo u ermaster-u, nego li u access-u. Znao sam da mi to nije dobra strategija za polaganje ispita, ali ja jednostavno imam problem da k'o normalan student radim stvari koje me nit' interesuju, nit' ih smatram odveć korisnim.

Što se tiče teoretskog dijela, na kraju sam "uz more" članaka sa interneta uspio preći gradivo ...

Bio sam svjestan od početka svjestan da je ova strategija sa stanovišta uspjeha na ispitu najgora moguća. Većinu vremena sam utrošio na traganje o tome kako drugi obrađuju osnove baza podataka. Međutim, visok parametar bitnosti (p_b) "vukao" je moj rad u neminovno u ovom smjeru ...

Ispit

Ispit je trajao dva sahata. Sastojao se od tri teoretska i tri praktična pitanja.

ER diagram => R shema

Prvo pitanje iz teoretskog dijela je bila konverzija E-R dijagrama u R shemu. Kako sam to na kraju dobro sažvakao (barem mislim da jesam), krenuo sam sa tim zadatkom. Zadatak sam priveo kraju u nekih 50-tak minuta. Već sam osjetio znatan umor. 

Ovaj zadatak je imao praktično dio, koji je zahtjevao da se dobijena R shema prebaci u access.

Bojeći se za moj standardni problem nedostatka vremena, pitao sam asistenta Jasmina  da li da idem na praktični dio (access upiti na pubs bazi). Jasmin mi je preporučio da to ipak ne preskačem.

Krenuo sam "bocati" po access-u tabele ... Sve je išlo dobro do pred kraj. Naime, E-R dijagram je imao dva asocijativna entiteta (gerunda). Po sjećanju je to izgledalo ovako(****):

Oni su uzrokovali kreiranje acocijativnih tabela, koje su sadržale višestruke ključeva. U Access-u isprva nisam mogao naći kako se uopšte višestruki ključevi prave, ali sam to ipak nekako "naboc'o". Međutim, u accessu nikako nisam znao napraviti obje veze sa tabelom ispit(*****). Nakon 10-15 minuta uzaludnih pokušaja, ostavio sam zadatak nezavršen.

Ono što sam zamislio sam u ermaster-u brzo uradio:

Je li ovo ispravno ? Bio bih zahvalan za komentar nekoga ko je "jak" po ovom pitanju. Je li ovo dobro ? Je li moje neznanje access neznanje ili ja ER -> R ne kontam !?

Access queries x 3 

Ostatak praktičnog dijela ispita se sastojao u izradi 3 access query-ja.

Ovo su dva koja se sjećam:

query_1: prikazi prodaju za naslove koji sadrze naslov "Executive" - prodanu kolicinu, i ukupnu vrijednost prodaje

query_2: prikazi sve zaposlene u formi "prezime ime" koji su na poslovima "Manager", a kod kojih je grad Berkeley ili prezime počinje sa "B"

Dobra stvar je da je kod svakog query-ja naveden očekivani broj zapisa, tako da student može svoj rezultat prekontrolisati.

Query_1 sam započeo sa pomisli da to neće biti problem. Ali, moje nepoznavanje access-a zajedno sa umorom dalo je svoj danak. Da budemo pošteni, prvi faktor je bio presudan.

U query dizajner sam nabacao tabele koje su mi *mogle* zatrebati. Greška. To se nikada tako ne radi. Uvijek se kod izrade upita ide tabela po tabela ... Ja sam nabacao šumu tabela, i počeo klikati. Pravi access krkan :(. Falila mi je jedna pregledna shema na papiru. Accesov ima "relationship" pregled, ali mi on nikako nije pasalo. Non stop sam se prebacivao između tog pogleda query-ja ... Ajoj. Na kraju sam nekako uz pomoć asistenta Jasmina naboc'o prvi query. Međutim, muka kojom sam došao do rezultata me je i zatekla i iscrpila.

Na drugom query-ju sam još gore zapeo. Trebalo je napraviti OR između dva različita polja. To u query dizajneru access-a ide tako što se pojedini kriteriji navode u različitim redovima ... ali ja sam se u tome gubio samo tak'o:

Dajte mi moj SQL !

vikao sam u sebi. S obzirm da Access ima i SQL view, prebacio sam se u njega sa nadom da ću tako doći do rješenja. Ali, njegov izgenerisani SQL je bio totalno nepregledan. Svako polje je uokvireno u zagrade ... to je izraz činilo neupotrebljivim za ručne ispravke. S obzirom da sam se GUI dizajneru osjećao još više zagubljen, pokušao sam uraditi ručnu ispravku na SQL-u - bez uspjeha. Kod svake ručne ispravke dobijao sam "syntax error" - il mi fali neka zagrada il' ih imam viška. Blokada totalna ... Jasmin mi je ponovo prišao. Ja mu komentarišem: "Ovo meni definitivno nije familijarno okruženje ...".

Ranije sam ga upoznao da nisam u ljubavi sa access-om kao alatom za UBP. Međutim, to ga nije navelo da mi kaže: "Eto kolega, i access se treba naučiti !". Dapače. Prišao mi je i pomogao da riješim zadatak. Bez njegove pomoći bi sigurno bio "trofać".

Treći query sam nekako sam "skuck'o".

Ostalo mi je još malo vremena za drugo pitanje iz teorije:

Normalizacija

Ovo je bilo je lagano pitanje. Trebalo je konstatovati kako zadana tabela ne zadovoljava 1NF (višestruku vrijednost), kao ni 2NF (parcijalna funkcionalna ovisnost nezavisnog polja o ključu). Nakon te dvije operacije dekompozicije tabela, dobio sam shemu koja je zadovoljavala 3NF.

ER dijagram na osnovu zadanog teksta

Ovo je bilo zadnje teoretsko pitanje. Nisam ga ni takn'o. Nije bilo vremena. Pojeli ga access queries :(

Šteta, mislim da bih ga bez problema riješio.

Jesam li talašika za "Access" ili sam generalna talašika za baze podataka ?!

S obzirom na neslavnu epizodu na ispitu, odlučio sam da uradim import pubs podataka u PostgreSQL, pa da testiram svoje znanje na klasičnoj SQL konzoli. Još ranije sam sa ermaster-om napravio SQL shemu pubs baze.

Prvo sam sve tabele exportovao u csv format, pa sam sa PostgreSQL COPY uradio import. sed unix alat sam iskoristio da csv prebacim na US format (^*) što PostgreSQL COPY zahtjeva.

Do željenih rezultata sam došao očekivano brzo - 10-15 minuta po query-ju(^**):

https://gist.github.com/826489

https://gist.github.com/826487

Kada sam došao do rješenja, osjetio sam olakšanje - ipak nisam generalna nego parcijalna - access talašika :)

Rezultati

"Na guranje", odnosno uz veliku pomoć asistenta Jasmina, dobio sam 6. Ako ne manje - više definitivno nisam ni zaslužio.

Jasmine, velika hvala na pomoći.

Prolaznost na ovom ispitu je bila prilično velika. Ima dosta dobrih ocjena:

  • deset(10) x 7
  • devet(9) x 3
  • osam(8) x 5
  • sedam(7) x 10
  • šest(6) x 13

UBP vs Sociologija

Paradoksalno je studenti na predmetu kakav je UBP imaju 3-4 x bolje ocjene nego li na predmetu kakva je Sociologija. Ima li iko profesoru sa Sociologije reći:

FIT je skraćenica za "Fakultet informacionih tehnologija", a ne "Filozofija i tako to" !?

Ako nema, evo da mu hernad kaže:

Podijeli djeci 9-ke i 10-tke a ne tamo neke 6-ce i 7-ce. Raja bi sa "Sociologijom" trebala popravljati, a ne srozavati prosjek !

Emir je junak druge parcijale

Vezano za raniju konstataciju, moj Emir je iz sociologije dobio 7, a iz UBP-a 10 !

Emir je inače je sve ispite osim PR2 položio u prvom "cugu". A i za PR2 mu je "zehra" falila ... Nadam se da će uspjeti i njega riješiti u drugom roku. S obzirom da je ovaj rezultat postigao i uz činjenicu da se prije par mjeseci zaposlio, želim mu ispred svih sarajevskih DL-ovaca odati priznanje:

Emire ti si naš ponos. Samo tako nastavi !

Dok hvalim Emira, Berina moram naružiti:

Berine, ako mi ubrzo ne javiš da si se kutaris'o barem OEK-a(^***), mahsuz ću ti posvetiti čitav jedan članak !

---

(*) UBP - Uvod u baze podataka

(**) I ovu konstataciju treba uzeti uslovno. Pa i baza podataka se na kraju koristi tako što programer "dohvata" podatke.

(***) Treba naglasiti da je taj dio koji je meni posebno zasmetao nebitan za ispit - rad sa GUI formama se traži u seminarskom radu.

(****) bilo je tu još niz elemenata ali je ovaj dio sa gerundima najinteresantniji

(*****) ispit <-> n_predaje_p, ispit <-> p_slusa_s

(^*) Access radi export u CSV u skladu sa postojećim BH/HR postavkama:  999.999,00. US format je ovaj: 999,999.00

(^**) nisam znao kako ide SQL concat - brzo sam na internetu našao "||"

(^***) OEK - Osnove ekonomije

19193 views and 7 responses

  • Feb 15 2011, 2:39 AM
    Ernad Husremović responded:
    Što se tiče dileme vezano za "ER diagram => R shema", nisam siguran da sam me sjećanje dobro služi. Ko u magli se sjećam da je tabela ispit imala veze (0..1) sa lijeve i desne strane, tako da sam imao na izbor za primarni ključ odabrati pk lijeve ili desne tabele

    [n_predaje_p] (id_nastavnik, id_predmet) -- (0..1) -- [<ispit>] --- (0...1) --- [p_slusa_s] (id_student, id_predmet)

    ja sam recimo uzeo uzeo sam za pk tabele ispit: (id_nastavnik, id_predmet)

    baš ću sada pogledati da li bih imao problem sa implementacijom te sheme u ermaster-u

  • Feb 15 2011, 2:52 AM
    Ernad Husremović responded:
    kako sam očekivao, nisam imao nikakav problem. Jedina stvar je promjena primarnog ključa u generisanom SQL DDL-u:

    https://github.com/hernad/FIT_UBP/commit/a4bc4664bf17ed039aa3ef8be8a256d40d0a...

  • Feb 17 2011, 1:57 PM
    Emir responded:
    Pošto nam je Berin trenutno u offline modu :)

    OEK rezultati 2010/2011
    2662 Kalajdžić Berin 6

  • Feb 17 2011, 3:04 PM
    Ernad Husremović responded:
    E pa znaš kako si me obradovao Emire ... Imaš od mene još jednu vožnju gratis + pogačice na Ostrošcu + sok 1/2 litra.

    Baš smo te pominjali danas kad sam bio u Distiju. Adisa mi je rekla da si zadovoljan sa PR2 ... hajd još to pa da veselje bude potpuno.

  • Feb 17 2011, 11:31 PM
    Emir responded:
    PR2 rezultati 2010/2011
    2663 80 bodova 8
    Izašli rezultati :)
  • Feb 18 2011, 12:01 AM
    Ernad Husremović responded:
    Ma svaka čast majstore.

    Izmjena plana: demo aBd na janjetinu !

  • Feb 18 2011, 12:28 AM
    Emir responded:
    aBd :)