Autor | Zpráva | ||
---|---|---|---|
strygomil Profil * |
#1 · Zasláno: 17. 2. 2007, 01:35:22
Nazdar...
Robim do skoly nieco ako testovaci system v PHP & MYSQL, v skratke to funguje asi tak ze uzivatel sa po prihlaseni moze testovat z vybranej oblasti, napr. ma na vyber elektroniku, klikne a zobrazi sa mu test s otazkami a odpovedami je to riesene ako formulare s radio buttonmi, test sa po skonceni automaticky vyhodnocuje.....admin zas moze jednotlive testy tvorit, moze editovat otazky a odpovede......Momentalne to pracuje s dvoma databazami v prvej su dve tabulky jedna admins druha users v ktorej su jednotlive nicky a hesla v druhej databaze su samotne testy, kazdy test ma svoju tabulku s troma poliami: Tabulka Ethernet: Otazka Odpoved Spravna Aka je specifikacia Ethernetu? 802.3 1 Aka je specifikacia Ethernetu? 802.11d 0 Teda user si moze vybrat Ethernet a program mu vygeneruje test ze zoberie otazku a vedla toho da rozne mozne odpovede a po odoslani porovnava ci bola oznacena spravna otazka podla stlpca "Spravna" A tu sa dostavam ku svojmu problemu, totizto tato struktura databazy je dost jednoducha na prehlad ale na druhej strane dost nehospodarna....to ze kazda odpoved musi mat vedla seba otazku a to ze sa pri kazdom novom teste musi vytvorit nova tabulka.......predstavujem si to tak ze v jednej tabulke by boli uplne vsetky otazky v druhej uplne vsetky odpovede, kazda otazka by prisluchala testu a kazda odpoved otazke, zial nic takto zlozite som nikdy nerobil, takze ak ste pochopili moj problem, budem velmi vdacny ak mi s tym pomozete.... |
||
Joker Profil |
#2 · Zasláno: 17. 2. 2007, 09:08:18
No, hlavní problémy jsou řečené přímo v dotazu: každý test má svou vlastní tabulku a zbytečně se opakují data (otázka se opakuje u každé odpovědi). Například v případě úpravy znění otázky se musí upravovat řádky se všemi odpověďmi, v nejhorším případě mohou vzniknout nekonzistentní data
Když zkusím něco navrhnout: Tabulka otazky: id_ot, otazka (, pocet_bodu,...) Tabulka odpovedi: id_odp, id_ot, odpoved, spravna Tabulka testy: id_test, id_ot Sloupce otazka a odpoved jsou řetězce (nejspíš VARCHAR), všechny id_něco jsou čísla a spravna bych dal TINYINT(1) A tehle dotaz: SELECT otazka, odpoved, spravna FROM testy t JOIN otazky ot ON t.id_od=ot.id_ot JOIN odpovedi odp ON ot.id_ot=odp.id_odp WHERE t.id_test=$id_testu z toho pak vyrobí tutéž strukturu, jako je ta současná (pro jeden daný test) :-) Pokud by tatáž otázka nemohla být ve dvou různých testech, šlo by zrušit tabulku testy a sloupec id_test přesunout do tabulky otazky. |
||
strygomil Profil * |
#3 · Zasláno: 17. 2. 2007, 16:10:10
Joker: diky moc podobne som si to predstavoval, ale ten dopyt si neviem prelozit takze ak by si bol taky dobry skus mi prosim ta vysvetlit co sa s tymi datami deje a ako sa spoja, s JOIN som este nerobil....vopred diky
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0