Avatar billede jeffe Nybegynder
15. december 2002 - 21:10 Der er 8 kommentarer og
1 løsning

Hvordan klarer jeg dette problem nemmest?

Jeg er igang med en hp hvor folk skal oprette en bruger, disse oplysninger ryger ind i min MySQL-db. Når folk logger ind skal de så have nogle valgmuligheder (spørgsmål med unikt ID til hver). Hver valgmulighed (spørgsmål) kan kun "bruges" én gang, hvilket betyder at der for hver bruger skal gemmes hvilke spørgsmål der har været svaret på, og derefter så kun gøre de ubesvarede tilgængelige...Selve koden kan jeg godt (tror jeg da), men hvordan vil det være smartest at gemme alt den information i databasen??
Avatar billede jeffe Nybegynder
15. december 2002 - 21:11 #1
Hvis løsningen er noget lignende at lægge alle unikke ID's for spørgsmål ind i samme felt for hver enkelt bruger, vil jeg også gerne vide, hvordan jeg "bruger" det felt i asp. DVS. sorterer de kommaseparerede ID's fra, og viser resten...
Avatar billede jeffe Nybegynder
15. december 2002 - 21:12 #2
Det er faktisk ligesom www.vindenhund.dk (og andre) hvor den har set hvilke konkurrencer man allerede har deltaget i...og sørger for at man ikke kan tage dem igen med samme bruger.
Avatar billede arne_v Ekspert
15. december 2002 - 21:41 #3
Nemmeste løsning:

Kræv at spørgsmålene skal besvares i rækkefølge-
Så kan du:
  - nummerere spørgsmålene
  - tilføje et felt i bruger tabellen der fortæller hvor langt de er kommet
  - lade din applikation kun vise de spørgsmål der er senere

Den fleksible løsning:

Nummerer spørgsmålene.
Lav en tabel med:
  - bruger ID
  - spørgsmål nummer
  - besvaret true/false

Den er ret nem at bruge.

Men du skal huske at oprette en masse records ved
oprettelse af både brugere og spørgsmål !
Avatar billede jeffe Nybegynder
15. december 2002 - 21:56 #4
Jeg ville gerne have at spørgsmålene blev stillet tilfældigt...
Så jeg går mere efter den fleksible løsning :)
Dermed:
Nummerer spørgsmålene.
Lav en tabel med:
  - bruger ID
  - spørgsmål nummer
  - besvaret true/false

Alle spørgsmål har unik ID, alle brugere får unik ID...
Men den tabel der vil da få uanede proportioner, hvis der f.eks. er 500 spørgsmål og 50 brugere...eller har jeg forstået det forkert ?
Avatar billede arne_v Ekspert
15. december 2002 - 22:05 #5
Du har fotsået det rigtigt.

500 spørgsmål x 50 brugere = 25000 records
25000 records x 10 bytes per record = 250 KB

Ikke noget problem !

5000 spørgsmål og 5000 brugere => 250 MB hvilket
formentligt heller ikke er noget problem med dagens
computere.
Avatar billede arne_v Ekspert
15. december 2002 - 22:07 #6
PS: Du kan spare en hel del, hvis du nøjes med felterne:
  - bruger ID
  - spørgsmål nummer
og kun tilføjer når de har besvaret - manglende record
betyder så ikke besparet. Men jeg tror at det vil gøre
din applikations-logik mere kompleks.
Avatar billede jeffe Nybegynder
15. december 2002 - 22:13 #7
Altså, skal lige have det helt på det rene (sorry):
Skal jeg lave en tabel med 2 felter bare, eller ?
(gående ud fra at der bliver tilføjet kun ved true...?
Avatar billede arne_v Ekspert
15. december 2002 - 22:28 #8
Min anbefaling vil være:
  3 felter og fylde i både ved true og false

Alternativ:
  2 felter og kun fylde i ved true

Det sidste kræver mindre plads i databasen, men
vil muligvis være lidt mere bøvlet i nogle queries.
Avatar billede jeffe Nybegynder
17. december 2002 - 20:27 #9
Undskyld, Arne....for ventetiden altså !
Mange tak for hjælpen !
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester