Uvod u baze podataka, "zbrkizacija"
Juče smo imali konsultacije iz predmeta Uvod u baze podataka.
Iskoristio sam te konsultacije da pročitam materijale. Kod prošlog čitanja, materijali mi nikako "nisu legli". Tada nisam bio mogao razlučiti da li je taj negativan utisak rezultat umor i nedostatak vremena, materijali na hrvatskom ili loš sadržaj.
Ovo je jedini ispit na koji nisam izašao na prvom parcijalnom. Baze su moj fah, to sam želio čestito iščitati. Juče sam stigao sam pročitati prvih par predavanja. Kako to je to normalno sa predmetima koji imaju prefiks "Uvod", početna predavanja uvode i objašnjavaju temeljne pojmove predmeta.
Background
U informatičko zanimanje sam sam ušao "navrat-nanos". Slobodno se može reći i naopako - od kraja ka početku. Odmah sam krenuo od konkretnih projekata i zaduženja.
Iz tog razloga morao sam se boriti na "dva fronta" istovremeno:
- upoznavanjem sa domenom samih projekata (kadrovska evidencija - personalni poslovi, finansije, računovodstvo)
- učiti se informatici
Ne znam ni sam u čemu sam bio tanji :). Student treće godine telekomunikacija ETF-a o informatici ne zna puno. U svemu mi je možda i najviše pomogla nadmenost koju sam kroz 20 položenih ispita stekao:
Ako znam uraditi integral, mogu se i sa ovim množenjima i dijeljenjima izboriti ...
Sva sreća da pojma nisam imao kolika sam "truba" bio :). Dobra je stvar da je tu nadmenost brzo zamijenila upornost i želja za učenjem novih stvari.
Komandant za računare
To ratno doba je po mnogo čemu bilo čudno. Komandatni su postajali "ljudi sa ledine".
Po istom principu po kome su radni komandanti mogli postati metalski radnici, tako sam i ja postao programer. Programer III. korpusa Armije RBiH. Interesantno zar ne ? Razbježali se inžinjeri, pa došao red na studente ...
Svi mi smo praktično učili prve korake zanata - oni u vođenju čete, bataljona ili brigade, ja u programiranju.
Rat je po definiciji generator ekstremnih stvari i događaja. Takvo okruženje iz ljudi izvlače ili ono najbolje ili ono najgore. Zato je sasvim prirodno da je rat iznjedrio "Zajke", ali i "Cace".
Sistematizacija i "zbrkizacija"
Hah gdje ja odoh ... A sve što sam prvobitno htio reći jeste to da u informatiku i baze podataka nisam ušao na sistematski način :)
Ono što mene razlikuje inih priučenih informatičara (a takvih je u informatici "more"), jeste to da nikada nisam bio pobornik teze:
Ma pusti teoriju, bitna je praksa !
Teorija obezbjeđuje sistematski pristup rješavanju problema. Da li je neko sposoban da bez formalnog obrazovanja sistematski pristupi rješavanju problema ili ne, to je drugo pitanje.
Činjenica je da teoretsko znanje nikada nije viška. Čak i kada niste saglasni sa određenom teoretskom postavkom, ona vam pomaže da svoje stavove i način rada "istešete". Na kraju krajeva, ne možete osporavati stvari koje i ne poznajete.
Zato kod svakog novog predmeta na FIT-u, kao način samomotivacije kažem sebi:
Dobro je da ono što znaš - sistematiziraš. A ono što ne znaš, a misliš da ti ne treba - ma ko zna šta te sutra čeka ?!
Nažalost, mnogi od tih predmeta me vrlo brzo "razoružaju" time što mi umjesto sitematizacije prije nude "zbrkizaciju".
E ovaj članak bezpovratno prelazi u čaršaf ... ali dobro. Za one najupornije, idemo dalje ...
"Zbrkizacija" u predmetu "Uvod u baze podataka"
Jedno od mojih prvih pitanja bila je definicija pojma baze podataka:
Baza podataka je skup međusobno zavisnih i/ili nezavisnih podataka koja može biti organizovana ili ne organizovana(*): klasična ili digitalna.
Ovo je po meni sasvim pogrešna definicija. Zbunjujuće. Svaki atribut u definiciji prati i njegov antonim. Pa šta se onda time definiše ?! Ništa.
Svrha definicije je da istakne ono što taj pojam izdvaja od drugih.
Ovo bi mogla biti defiinicija skupa podataka, ili jednostavno podataka. Termina database mene (a vidim na wikipediji i većinu svijeta) asocira na uređeni skup podataka.
Zato ovu "definiciju" označavam kao zbrkizacija No1.
Asistentica je kasnije rekla da ovo nije materijala predavanja nego vježbi, te da ona na te materijale nema uticaj. Na to sam upitao:
Pa ko ima ?!
Ah da ... materijali Uvoda u baze imaju taj problem. Nisu dobro označeni. Na DL sistemu kod pretrage materijala postoji selekcija Predavanja/Vježbe/Workshop. Kod UBP materijala niz materijala iz vježbi su označeni kao "Predavanja".
Poštovane kolege, uzmite materijale kolege Denisa sa Programiranja (PR1, PR2). Zaglavlje svakog materijala počinje sa Vježba/Workshop No taj i taj.
Nama DL (distance learning) studentima, koji smo redovno "kampanjci", to nije nebitno.
Bez obzira na čitaoca, materijali moraju imati sistem označavanja koji će omogućiti da se iz hrpe tih materijala na stolu jednostavno napravi uređen set podataka - baza podataka :)
Dolazim do moje asocijacija No2, vezano za baze podataka: RED.
Materijali UBP-a su u popriličnom neredu.
Pismenost
Asistentica Emina je vezano za seminarski rad rekla jednu stvar:
Ja puno polažem na "pismenost". Vi kao budući inžinjeri morate znati napraviti dokumentaciju projekta. Često vidim odličnu bazu ili odličan program koji nije dokumentovan ... Ja znam da vi mislite da dokumentacija nije , ali mi na to puno polažemo ...
Poštovana asistentice, ja ne da dijelim vaše mišljenje da je pismenost bitna, nego smatram da atribut "odlična" ne ide uz bazu ili program koji nije dokumentovan.
Ako dijelimo mišljenje o tome da je pismenost bitna, siguran sam da smo takođe saglasni da nastavni materijali trebaju biti primjer pismenosti.
Preciznost
U istom materijalu sam našao ovo:
Baze podataka susrećemo svugdje:
- web mail sistemi (hotmail, gmail, yahoo ...)
- web portali
- FIT online DL servisi
- online kupovina (amazon ebay...)
- itd ...
Onda sam se prisjetio da u sam u jednoj skripti koja kruži među studentima, a vezano za praksu UBP-a teorije našao ovo pitanje:
Danas je teško osmisliti bilo koji IS koji iza sebe ima neku vrstu baze sa podacima. Međutim, da li sve navedeno ima u pozadini relacionu bazu podataka:
- web mail servisi
- online zajednice (portali, forumi)
- FIT online servisi
- POS kasa
- MS Excel
- MS Access
- Bankonmat
Usporedbom sa materijalom, pretpostavljam da se očekuje odgovor: "Uljez je MS Excel"(***)
Odgovor međutim nije tačan.
Tačan je odgovor za stavke 1, 2, 4, 7 je:
Zavisi od implementacije. U navedenim rješenjima se podaci najčešće pohranjuju u relacijsku bazu podataka.
Između pitanja i odgovora ima još jedna nepreciznost: U materijalima se navodi primjeri gdje se susreću baze podataka, a u pitanju se govori o rješenjima koje u pozadini imaju relacionu bazu podataka. To su dva pojma.
S druge strane, da je u pitanju bilo navedeno samo baza podataka bez "relaciona", onda uljez ne bi bila spreadsheet aplikacija. Spreadsheet aplikacija radi sa uređenim setom podataka.
Na ovo pitanje mi je asistentica dogovorila da je i ona par puta predlagala da se ovo pitanje ukloni, ali nije imala saglasnost drugih kolega.
Baza podataka je baza podataka - i u Bosni i u Hondurasu
Kakvo god bilo pitanje, po meni ono mora zadovoljavati sljedeći kriterij:
Ako poznajem nastavnu temu, bez obzira da li sam čitao nastavne materijale ili ne, formulacija pitanja mora biti takva da pouzdano, bez nagađanja, mogu dati tačan odgovor.
Ja na ovakva pitanja ne mogu pouzdano dati tačan odgovor. A temu poznajem. Znači pitanje ima "formulacijski bug".
Da ovo pisanje ne bi greškom bilo uzeto kao "neselektivna paljba", želim da napravim jasnu gradaciju: "Uvod u baze podatka" ne stavljam pod istu kapu kao predmete koji su označeni kao "antiznanje". Barem ne još.
Nedostataka ima, ali se oni mogu otkloniti. Kod predmeta kao što su "Uvod u operativne sisteme", "Statistika i vjerovatnoća" to nije moguće. To su predmeti koje treba sve pobrisati pa krenuti od nule sa pitanjem:
Šta su glavni ciljevi ovog predmeta ?
Greške
U materijalu 3 (kod mene označen P-3) postoji skroz taksonomija (kategorizacija):
Tipovi i strukture baze podataka
- Centralizirana baza podataka - terminalski pristup
- Client - server pristup
- Paralelna struktura baze podataka
E ovo je skroz pogrešno.
Ovakve taksonomije/kategorizacije (ali nigdje nešto ovakvo) se u IT literaturi pominju kod navođenja arhitekture aplikacije. Aplikacija <> Baza podataka.
Primjer client server modela aplikacije:
The client-server model of computing is a distributed application structure ...
Tu o bazi podataka ni riječi nema - sasvim opravdano. U data sloju (backend) može da se "vrti" bilo kakva baza podataka, ili nikakva(****)
Što se tiče tačke tri, "parallel computing" se vezuje opet uz arhitekturu aplikacije - način kako aplikacija vrši zahtjevne proračune (sekvencijalno, paralelno).
Dodatno tačka tri generalno ne pripada ovoj klasifikaciji. Ako bi zanemarili mješanje aplikacija - baza podataka, dio ovakve podjele bi najprije bila troslojna, odnosno višeslojna aplikacijska struktura. Odakle god krenuo, ovo je zbrkizacija No2.
Asistentica je prihvatila moju argumentaciju vezano za ovo, pa mi se zahvalila na korisnoj sugestiji za popravku materijala.
U istom predavanju, slijedi poglavlje "Modeli podataka". E ono je "grozota" :(!
Tu ima svega ... nekakvih taksonomija ... pa umetnutih definicija .... pa opet taksonomija. Ama zbrka totalna. Nakon svakog novog čitanja stvar mi je bila sve manje i manje jasna :(. Time dolazimo do zbrkizacije No3.
Pitao sam ko je radio ovaj materijal - rekla je: "Profesorica":
E pa profesorice: halalite, al' ja ovaj materijal označavam "ništa-ni-sa-čim". A vi provjerite je li razlog taj što pripadam manjini koja nije kadra shvatiti ovaj materijal, ili sam jedan od rijetkih koji je bez uspjeha pokušao shvatiti ovaj materijal.
Relacija poveznika
U materijalu sa naslovom "Model entiteta i poveznika" došao sam do jedne semantičke nelogičnosti:
Primjer 2.2 .... U tabelama su prikazane odgovarajuće relacije entiteta i relacija poveznika ...
Čitavo vrijeme sam se patio sa translacijom poveznik => relacija. Gunđao sam u sebi:
joj šta me sa ovom hrvaštinom "handre" ...
Ne ... nije to zato što sam bosanski nacionalista. Ja to jesam, ali svoj nacionalizam ispoljavam na drugi način.
Radi se o problemu praktične prirode: ja koristim termine "relacija" umjesto "poveznik", i atribut umjesto "obilježje" zato što svakodnevno čitam englesku literaturu (koja opet koristi termine "relation" i "attribute"). Ali koliko go mi to išlo na živce - prihvatam.
Međutim, kada sam naišao na ovu rečenicu moj sistem prevođenja je "čučn'o":
relacija poveznika => relacija relacije. Molim ?!
Asistentica mi je objasnila:
Mi koristimo "relaciona šema", ili skraćeno "relacija". Primjer relacione šeme radnika : RADNIK(mbr, ime, prz, god)
Uzvratio sam:
Ok, ali terminologija mora biti jedinstvena. Ili koristite relacija ili koriste poveznik. Konstrukcija "relacija poveznika" je semantički besmislena. "Trpate" dvije riječi koje su sinonimi u jednu konstrukciju. To je isto kao da kažem "djelatnikov radnik".
Pokušaću sada ono što se u pomenutim tabelama prikazuje (i čiji mi je sadržaj potpuno jasan) doći do nečega što je i u pisanoj formi smislena konstrukcija.
U wikipedia članku "Relational model" se pominje relaciona shema. Shema očekivano označava strukturu podataka. Instanca te sheme su konkretni podaci - uzorak podataka.
Tabele pokazuju instance (uzorke konkretnih podataka) relacijskih sheme entiteta "radnik", "radno mjesto", te relacije "raspoređen", što je bilo vidljivo i na prvi pogled.
Relacijske sheme su: Radnik(ime, prz, god); Radno_Mjesto(naz, bri, brb, spr); Raspoređen(mbr, naz).
Instance sheme - tabele uzorci podataka su:
- T1: Radnik( [88, Eva, Pap, 1950], [50, Ivo, Ban, 1950], [01, Mile, Srdanovic, 1960], [81, Muhamed, Konjić, 1970] ) (*****)
- T2: Radno_Mjesto( [Programer, 5, 530, VSS], [Daktilograf, 3, 700, SSS], [Projektant, 3, 700, VSS], [Kurir, 1, 300, NSS])
- T3: Raspoređen( [88, Daktilograf], [01, Programer], [81, Programer])
E sada kada sam sve ovo lijepo ispisao, pokušaću napraviti konstrukciju koja ima nema semantički problem:
Primjer 2.2 .... U tabelama T1-T3 prikazane su uzorci podataka (instance relacijskih shema) za sve entitete i relacije ER dijagrama
E ovo već shvatam ...
Relacijska shema i instanca relacijske sheme su dvije različite stvari. Temeljno različite. Kao što su u programiranju klasa i objekat. Radi jasnosti se u izlaganju ove stvari moraju jasno razgraničiti.
Skraćeni naziv "relacija", a da se pri tome misli na "relacijska shema" nije problematičan ako se ne pominje zajedno sa relacijom kao elementom ER dijagrama. Ako se pominje, onda se ne smije ispustiti informacija da se misli na relaciju - element ER dijagrama.
"Relacija poveznika" je besmislica. Nema te konvencije u kojoj je ovakva konstrukcija prihvatljiva. Ovo zbrkizacija No4.
Rezime
Pojmovi i taksonomije (kategorizacije) su bitni elementi usvajanja materije. Ako se njima ne posveti pažnja, postoji velika opasnost da student u materiju uđe "naopako".
Kako je asistentica Emina rekla: "Pismenost je bitna". Preciznost, jasnost, kvaliteta izražavanja su atributi pismenog materijala.
Kolege sa UBP-a, potrudite se da nastavni materijali budu primjer pismenosti. To sada nije slučaj.
---
(*) tako piše u materijalu, treba "neorganizovana"
(**) Asistentica Emina na vježbama je bila maksimalno susretljiva. Istinski se trudila da mi objasni šta se u materijalima željelo reći.
(***) Ovdje mi smeta "microsoftalizacija" FIT-a. Ne, ne očekujem da piše: "Gnumeric" ili "Openoffice Calc". Korektno je napisati "Spreadsheet aplikacija" ili "Program za tabelarne proračune" ... ali ovo je posebna tema
(****) Aplikacija može podatke uzimati iz nekog eksternog web resursa, tako da uopšte nema sopstvene podatke. U tim situacijama imamo samo keš (cache) eksternih podataka, ako je funkcija keširanja implementirana.
(*****) Kako je kod nas u Bosni sve po nacionalnom ključu, ja sam u odnosu na originalni materijal napravio ispravke - stavio jednog Srbina i jednog Bošnjaka
4851 views and 6 responses
-
Jan 12 2011, 6:57 AMErnad Husremović responded:Asistentica Emina mi je putem email-a ukazala na drugu definiciju baze podataka:
> Imate u materijalima predavanja i ovu definiciju (P2_Model podataka_10_11):
> "Baza podataka je skup relevantnih podataka za jednu organizaciju koji su organizirani na određeni način tako da među njima postoji određena logička veza"
-
Jan 12 2011, 6:58 AMErnad Husremović responded:Da, ima. Uočio sam je. Baš to predavanje sam detaljno u svom članku opisao (zbrkizacija No2, zbrkizacija No3).
Ta definicija je definitivno bolja one koju sam naveo ali mi ni ona ne "odskače" previše": nejasna i komplikovana konstrukcija, previše generalizacije.
Svakako možemo uočiti da materijali imaju dvije bitno različite definicije baznog pojma što samo po sebi nije dobro.
Kada sam već toliko "trunio" o definiciji baze podataka, red je da kažem šta bi to po meni bila korektna definicija:
> Baza podataka je organizovani skup podataka. U informatici se pri tome najčešće misli na podatke pohranjenje u digitalnoj formi.
Jednostavna i dovoljno precizna u kontekstu onoga što mi izučavamo.
-
Jan 12 2011, 7:13 AMErnad Husremović responded:Odlična prezentacija na temu "Entity Relationship" modeling:
http://www.scribd.com/doc/7500847/entity-relationship-diagram
u ovom materijalu se koristi "Candidate key" - atribut ili kombinacija atributa koji jedinstveno određuju svaku instancu nekog entiteta
U našim materijalima se za ovo koristi termin "superključ".
Superključ mi je baš nelogičan ... dok mi je "candidat key" od prve "leglo" - kandidat za primarni ključ (odnosno "identifier", termin koji se u gornjem materijalu koristi)
Siguran sam da naši nastavnici nisu izmislili termin "superkey", ali "kvaka" dobre terminologije jeste odabir pojmova koji ljudima najbolje "ulaze u glavu" .
Kvalitetna, konzistentna terminologija je bitna.
Iz tog razloga svaki ozbiljniji projekat (bio on informatički ili ne) sadrži riječnik termina - glossary.
-
Jan 12 2011, 7:58 AMErnad Husremović responded:Gerund or Associative Entity.
Gerund je bio termin koji sam prvi put u životu čuo ...
U ovom materijalu sam našao odlične primjere za taj gerund, i ono što ću definitivno lakše zapamtiti: "Associative Entity".
http://www.siue.edu/~dbock/cmis450/3-ermodel.htm
Evo i jednostavne forme identifikacije asocijativnog entiteta:
> if a relationship has attributes (intersection attributes), then you may have an associative entity or gerund.
sada sam i u wikipediji našao ovaj termin: http://en.wikipedia.org/wiki/Associative_Entities
U tom članku piše:
The following guidelines may be used when considering the use of an associative entity:
* All relationships for the associative entity should be many.
* The associative entity could have meaning independent of the other entities.
* The associative entity preferably has a unique identifier, and should also have other attributes.
* The associative entity may participate in relationships other than the entities of the associated relationship.Asocijativni entitet ER modela korelira sa junction (spojnim) tabelama u relacijskom modelu:
-
Jan 12 2011, 8:04 AMErnad Husremović responded:U našim materijalima pod naslovom "Heuristička uputstva za projektovanje modela realnog sistema putem ER modela", tačka 7 kaže:
> 7. Potreba takvog *selektivnog* povezivanja entiteta tri ili više skupova, kod kojeg u vezi mogu učestovati samo entiteti, koji su već u nekakvoj drugoj vezi sa entitetima jednog (ili više) drugih skupova, ukazuje na neophodnost korištenja gerunda, kao modela tih drugih veza
E sada sam se baš sjetio da sam nakon ove rečenice, kada sam pripremao 1. parcijalne rekao: "na UBP neću izaći, ja ovo ništa ne kontam".
Evo sam ponovo pročitao i ovu rečenicu par puta i opet isto: "Ništa ne kontam".
-
Jan 28 2011, 10:41 AMErnad Husremović responded:> "Candidate key" ... U našim materijalima se za ovo koristi termin "superključ".
Nisam u pravu.
Evo sada čitam ponovo UBP materijale i postoje dva termina:
1) super-ključ koji predstavlja podskup atributa koji jednoznačno identificiraju svaki član iz skupa entiteta2) kandidati za ključ kao minimalni podskupovi atributa koji su takođe super-ključ
primjer: student( jmbg, br_index, ime, prezime)
super-ključevi: jmbg, br_index, jmbg+br_index, jmbg+ime, jmbg+br_index+ime, ...
iz gornjeg skupa superključeva kandidati za ključ:
jmbg, br_indexza primarni ključ odabiremo jedan od kandidata za klljuč zavisno od onoga što smatramo prikladnijim u kasnijoj primjeni.
tako recimo, u skupu entiteta "studenti" sigurni smo da za svaki element tog skupa možemo biti sigurni da ćemo imati br_indeksa, a da nam podatak jmbg neće biti dostupan. tada biramo br_indeksa za primarni ključ entiteta.