PDA

Pogčedajte punu verziju : Mapiranje vrednosti atributa na kolone ili redove?


Petar Marić
13. 10. 2008., 14:02
U izradi svog Master rada sam naišao na jednu dilemu - da li je pametnije mapirati vrednosti atributa na kolone ili redove u tabeli? Slede primeri mapiranja na značajno pojednostavljenim modelima:

Mapiranje na redove: upitnik(id, kreirao_korisnik_fk, naziv)
pitanje(id, upitnik_fk, tekst_pitanja, redosled, ...)
ponudjeni_odgovor(id, pitanje_fk, tekst_odgovora, redosled, ...)
korisnikov_odgovor(id, korisnik_fk, pitanje_fk, ponudjeni_odgovor_fk, ...)
Mapiranje na kolone:upitnik(id, kreirao_korisnik_fk, naziv)
pitanje(id, upitnik_fk, tekst_pitanja, odgovori*, redosled, ...)
korisnikov_odgovor(id, korisnik_fk, upitnik_fk, odgovor1, odgovor2, ..., odgovorN**, ...)
* polje je tekstualnog tipa i u njemu su pojedinačni odgovori međusobno razdvojeni karakterom za novi red.
** odgovorX je odgovor na X-to pitanje upitnika. Takođe se unapred pri projektovanju baze mora postaviti ograničenje na maksimalni mogući broj ponuđenih odgovora na 1 pitanje.

Mapiranjem na kolone se postiže manji broj redova, ali su tada neke kolone NULL. Takođe se unapred mora odrediti maksimalni podržani broj ponuđenih odgovora na 1 pitanje.

Baza za koju sam dao 2 potencijalna modela je primarno namenjena za prihvatanje podataka (OLTP), ali bi bilo lepo kada bi bila prilagođena i za osnovno OLAP korišćenje da bi se izbeglo korišćenje 2 baze i njihova sinhronizacija, bar u početku.

Šta vi mislite?

Dejan Topalovic
13. 10. 2008., 20:41
Mapiranje na redove - tačka.

pkrstic
14. 10. 2008., 14:01
korisnikov_odgovor(id, korisnik_fk, upitnik_fk, odgovor1, odgovor2, ..., odgovorN**, ...)


zasto i ove odgovore ne kodiras u string, tako ces moci da imas promenljivu duzinu upitnika, ovde ces imati fiksnu duzinu uvek (ne znam da li ti je to cilj, tj da li je tako i zamisljeno).

Petar Marić
18. 10. 2008., 22:35
@Dejan: Da li bi mogao da mi obrazložiš svoje mišljenje i/ili da me uputiš na literaturu? Želeo bih da imam pokriće na odbrani.

@pkrstic: Neka od tih polja bi bila NULL tako da upitnik i dalje može biti promenljive dužine. Iz priče sa psiholozima smo došli do zaključka da upitnici treba da imaju konačan broj pitanja (30-ak je maksimum u većini slučajeva) inače dovodi do rasplinjavanja i smaranja ispitanika.

Inače, jedini razlog razmišljanja o mapiranju na kolone je da onda struktura podataka "liči" na OLAP data cube - ne znam da li je takav pristup dobar jer u ovom trenutku nemam praktičnog iskustva.