Zidar Canada
Moderator Član broj: 15387 Poruke: 3085 *.100.46-69.q9.net.
|
Lepa tema :-)
@ itf:
1) Pretpostavicu da postoji vise kolegijuma (kolegijum = katedra ?). OK, treba tabela (sifranik) koji cuna nazive kolegijuma.
2) Svaki kolegijum ima svoju 'bazu' ispitnih pitanja ('question pool') iz koje se konstruisu ispiti.
3) Receno je da su pitanja sa visetrukim odgovorima, dakle 'multipe choice'.
4) Ova vrsta pitanja ne daje se nikad po jedno pitanje, nego se pitanja grupisu u testove to jest ispite. Dakle, ispit je skup pitanja.
5) Svaki ispit je jednoznacno definisan nekakvom sifrom i svaki ispit pripada odedjenom kolegijumu. Lepo je da znamo i datum ispita, ali nebitno za ovaj nivo analize. Sto lep rece Getsbi, dodaj atribute koji ti trebaju.
6) Posto su pitanaj multiple choice, negd treba da cuvamo ponudjene odgovore.
7) Za svako pitanje samo jedan odgovor je tacan. Treba i to negde da zapisemo.
8) Svaki student moze da uzme bilo koji ispit. Da li bas? Pre bih rekao ovako "studenti koji su registrovani za odredjenu katedru mogu uzeti ispite sa te kateder (kolegijuma)
9) Student koji uzme odredjen ispit moze odgovoriti samo na pitanja koja pripadaju tom ispitu
10) Negde moramo da zapisemo sta je student odgovorio, to jest koji je od ponudjenih odgovora izabrao.
Na osnovu ovih 10 tacaka sledi prva iteracija logickog model baze, strukture baze ili sta je vec pravilan izraz:
1) Pretpostavicu da postoji vise kolegijuma (kolegijum = katedra ?). => Treba nam tabela (sifranik) koji cuna nazive kolegijuma. neka ima samo jednu kolonu, i ona je PK: tblKolegijumi(Kolegijum) Atribut 'Kolegijum' dakle jednoznacno definise nas kolegijum. Tip podataka je absolutno nebitan u ovom momentu.
2) Svaki kolegijum ima svoju 'bazu' ispitnih pitanja ('question pool') iz koje se konstruisu ispiti. => treba nam tabela za bazu ispitnih pitanja. Nazovimo je tblMogucaIspitnaPitanja (Kolegij, Pitanje, TacanOdgovor) PK = (Kolegij, Pitanje) Na ovaj nacin se tacno zna kom kolegiumu pripada koje pitanje. Atribut Pitanje moze biti text pitanja ili nekakav ID, nebitno za ovaj nivo analize. Atribut TacanOdgovor nam kazuje koji je odgovor od ponudjenih odgovora onaj pravi. Ovim smo resili i tacku 7). Pomenimo Foreign Key (relacija u Accessu) tblKolegijum.Kolegijum REFERENCES tblPitanja.Kolegijum, 1:vise
3) Receno je da su pitanja sa visetrukim odgovorima, dakle 'multipe choice'. => za svako pitanje, treba nam tabela koja cuva ponudjene odgovore, evo je
tblPonudjeniOdgovori (Kolegij, Pitanje,PonudjeniOdgovor), svi zajeno su PK. Ako za PonudjeniOdgovor uzmemo ono a,b,s,d, ond anam treba i dodatni atribut 'textOdgovora'. Nebitno za ovaj nivo, pa ostajemo sa tri atributa, sva tri cine PK.
5) Svaki ispit pripada odedjenom kolegijumu => tabela tblIspiti (Kolegijum, Ispit, datum) PK (Kolegijum,ISpit), takodje i FK tblKojegijumi.Kolegijum REFERENCES tblIspiti .Kolegijum, 1:vise
4) Ova vrsta pitanja ne daje se nikad po jedno pitanje, nego se pitanja grupisu u testove to jest ispite. Dakle, ispit je skup pitanja. Odavde sledi tabela tblIspitnaPitanja (Kolegijum, Ispt, Pitanje),PK cine sve tri kolone. Ovde imamo dva FK (dve relacije), jednu sa tabele tblIspiti, kolone (Kolegijum, Ispt) i drugu sa tabela tblPitanja po kolonama (Kolegijum Pitanje)
8) Student mora bii registrovan za odredjeni kolegijum da bi mogao da polaze ispite sa tog kolegijuma. Ovde su dve stvari sakrivene. Studenti koji su registrovani na kolegijmu i ko od njih je uzeo koji ispit. Evo tabela tblStudentiNaKolegijumu (Kolegijum, Student), sve kolone su PK. Imamo i FK tblKojegijumi.Kolegijum REFERENCES tblStudenti.Kolegijum, 1:vise. Jos jedna tabela, tblStudentiIspiti (Kolegijum, Student,ISpit), sve tri kolone su PK i ima dva FK (dve relacije) Prva relacija iz tabele tblStudentiNaKolegijumu na tblStudentiIspiti perko Kolegijum, Student), jedan prema vise. Druga relacija sa tabelom.a tblIspiti na tblStudentiIspiti preko kolona (Kolegijum, Ispit)
9) Student koji uzme odredjen ispit moze odgovoriti samo na pitanja koja pripadaju tom ispitu. Iz ovoga sledi tabela tblStudentiIspitiPitanja, koja za svakog students u tabeli tblStudentiIspiti ima onoliko redova koliko je reova u tabeli tblIspitaPitanja. dakle imamo tblStudentiIspitiPitanja (Kolegijum, ispit, Student, Pitanje, OdgovorStudenta) Kolone cine PK, a u OdgovorStudents upisujemo sta je student izabrao od ponudjenih (a/b/c/d) odgovora. Ovim smo resili i zahtev 10)
I ovde imamo dva FK (dve relacije). Prva je sa tabele tblStudentiIspiti a druga sa tabele tblIspitnjaPitanja, po respektivnim PK kolonama u roditelj tabelama. Mozemo da imamo i trecu relaciju, u slucajevima kada pitanja nemaju isti broj ponudjenih odgovora (sto je veoma retko u praksi), sa tabele tblPonudjeniOdgovori. ako sva pitanaj imaju isti broj ponudjenih odgovora, recimo 4, onda je dovoljno postaviti za OdgovorStudenta jedna CHECK cinstraint:OdgovorStudenta BETWEEN 1 and 4. ako je broj ponudjenih odgovora razlicit od pitanja do pitanja, treba nam relacija sa tblPonudjeniOdgovori po kolonama (Kolegijum, Pitanje, Odgovor). To je da ne bismo nekome upisali odgovor 'h' ako su odgovri samo (a,b,c,d)
Naravno da ovo ne pricam napamet, imam sliku koju sam na brzinu nacrtao olovkom na papiru. nemam vremena da sad crtam to sve u Visiu ili Accessu, pa ostavljam tebi d apokusas da se snadjes. posto je ovo tek prva iteracija, moguca su i potrebna neka poboljsanja. to bi trebalo da nam otkrije sledeca faza analize u kojoj proveravamo da li nase tabele i relacije zadovoljavaju pravila normalizacije. Ima stosta da se poradi jos, ali bi moglo da prodje i ovako.
Slozeni klucevi su neophodni da bi se obezbedio integritet podataka. Dodavanje surogat kljucebva na model nece model uciniti niti jasnijim niti brzim, pa to ne preporucujem. Potpuna zamena slozenih kljuceva (izbacivanje 'suvisnih' kolona i zamena po jednom autonumber kolonom) nekakvim autonumber bila bi katastrofa za model - izgubio bi se inetgritet podataka.
Za kontrolu, ima do sada 8 tabela:
tblKolegijumi (1), roditelj za tblPitanja (2), tblIspiti (3), tblStudentiNaKolegijumu (4)
tblPitanja je roditelj za tblPonudjeniOdgovori (5)
tblIspitnaPitanja (6) ima dva roditelja (tblIspiti i tblPitanja)
tblStudentiIspiti (7) ima 2 roditelja tblStudentiNaKolegijumu i tblIspiti
tblStudentiIspitiPitanja (8) ima dva a mozda i tri roditelja. Sigurni roditelji su tblStudentiIspiti i tblIspitnaPitanja , a mozda se umesa i tblPonudjeniOdgovori
Normalizacija bi mogla da proizved verovatno jos dve, ali nije obavezno, moze i ovako.
Slicne konfiguracije se dobijaju kad se modeliraju ankete. Iamli smo pitanje o anketnim listovima na ovom forumu ili na bazama podataka, ne secam se tacno. Potrazi pa mozda i nadjes.
Srecan rad.
:-)
|