Jeg vil gerne høre din kommentar inden jeg kaster mig ud i noget rod mht. database opbygning og hvor hurtig en side bliver at loade.
Jeg er i gang med at lave en slags luftfartsquiz. Databasen består af 14 fag og i de respektive fag er der flere end 150 spørgsmål. Man skal være logget ind for at kunne tage de enkelte test. Derfor vil jeg gerne høre, hvordan og hvorledes det ville være bedst at bygge databasen op, for siden skal jo kunne fungere, så optimalt og hurtigt som overhovedet muligt!
Hvad er bedst?
- I de enkelte fag laver jeg en tabel med alle de spørgsmål faget skal indeholde ca. 150 poster? Vil det ikke gøre min database alt for stor og langsom?
- Eller ville det være bedre i hvert fag at lave små tabeller af ca. 25 spørgsmål hver? Det synes jeg bare ikke lyder til at være det rigtige løsning?
- Og da man skal være logget ind, vil de så være bedst at lave brugerprofiler/passwords osv i en database for sig selv?
Det er min ide at en test skal være på ca. 25 spørgsmål i det respektive fag. Kan man ved en database connection ved f.eks airlaw1.asp hive data ud fra record 1-25 og f.eks. på airlaw2.asp hive fra records 25-50? Så ville løsning 1 jo være perfekt? Eller hvad?
Indtil videre har jeg fået lavet en side som tager et random record fra databasen (i det respektive fag) og samtidigt fået sørget for at den ikke vil tage det samme spørgsmål to gange, hvis der nu er to personer som sidder ved hver sin pc ved siden af hinanden, så får de ikke de samme spørgsmål!
Siden skal fungere på den måde, at man får et random spg og ikke de samme to gange, derefter skal den tage ca. 25 spørgsmål. Efter dette skal man gå til f.eks. results.asp som sammenligner brugerens svar med det rigtige svar og til sidst giver en procentscore og resultatet gemmes i hans bruger profil.
Hvordan vil det være bedst at opbygge databasen? Kan i se nogle problemer som jeg vil løbe ind i? Og hvordan skal ASP delen opbygges?
Her er mit bud på hvordan siden skal opbygges:
Spg.asp - Her kommer random spørgsmål med radio knapper hvor brugerens svar gemmes i en session.
Results.asp – her sammenlignes der og der gives score og der gemmes i brugerprofil.
Håber på lidt(MEGET) professionel rådgivning fra jer eksperter J….
Det vil være nemmest at samle alle spørgsmål i en enkelt tabel, og have et felt 'Fag' som indikerer hvilket fag spørgsmålet tilhører. Hvis det er tale om ca. 14*150 spørgsmål, så er det små mængder for en database, enten det er Access eller en serverbaseret databse som SQL Server, MySQL eller Oracle.
Du skal nok også have en tabel hvor du den enkelte bruger bliver registreret, og også en tabel der viser hvilke spørgsmål den enkelte bruge har haft. I den siste tabel skal du registrere ID'en på brugeren, ID'en på spørgsmålet, og TestNr (se nedenfor), så du senere kan gruppere de spørgsmål brugeren fik i den enkelte test.
Jeg ville også lavet en tabel hvor jeg registrerer en enkelt linie for hver gang en bruger laver en test. Denne tabel kunne indeholde: TestNr - ID felt med Autonummerering, som viser en record for alle startede tests BrugerID Dato Procentscore
Okay. Så du mener det ville være klogest at lave en stor database. Så det vil sige at databasen skal indeholde: Bruger oplysninger (password, brugernavn osv) En tabel til når en bruger laver en test og til sidst fagene med de respektive spørgsmål?
Men rent kodemæssigt, hvordan ville du så sætte det op? Hvilke sider ville du lave?
Jeg ville haft fire tabeller: -tblPerson: En table med brugeroplysninger (navn, password og andre oplysninger som kun findes en gang på hver bruger) -tblTest: En tabel der indeholder oplysninger om den endkelte test for en person (PersonID, TestID, Dato, procentscore og øvrige oplysninger vedrørende hver enkelt test, med undtag af hvilke spørgsmål personen fik, da jeg vil anbefale at have disse oplysninger i en egen tabel) -tblSprgsmlTest: En tabel der viser hvilke spørgsmål den enkelte bruger har fået til hver test (SpørgsmålID, TestID, PersonID - PersonID er egentlig ikke nødvendig, da denne oplysninger findes i tblTest, og du har TestID med i denne tabel, men det kan nogle ganer være nemmere at have PersonID med for at undgå at linke til tblTest tabellen hvis du skal se hvilke oplysninger den enkelte person har haft) tblSprgsml: Her har du dine spørgsmål, og også et felt til at definere hvilket fag det er. Måske har du en 5. tabel med fag, og så kan du referere til FagID i denne tabel.
Jeg vender tilbage lidt senere med en kommentar ang. dine asp-sider.
Opbygnign af asp-sider afhænger lidt af om du vil oprette stamdata direkte i Access, eller om dette også skal gøres i asp. Det nemmeste vil være at lave en formularer i Access til dette.
Du skriver at du i spg.asp vil genne resultaterne i en session, med resultaterne bør også gemmes tilbage til en Access-tabel (som tblSprgsmlTest beskrevet i tidligre svar). Resultatet ville jeg gemt i tblTest som beskrevet tidligere. Er du kommet videre med din luftfartsquiz?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.