Avatar billede jeffe Nybegynder
04. juni 2003 - 12:45 Der er 1 kommentar og
4 løsninger

MySQL databaseopbygning

Hej !
Jeg er ok inde i MySQL efterhånden, men jeg har et projekt jeg ikke helt ved hvordan skal se ud i praksis;
Jeg har en masse brugere (en brugertabel med div. info) og en spørgsmål-tabel (spørgsmål der hver især har et ID).
Jeg kan ikke rigtigt finde den letteste metode at gemme oplysninger om, hvilke brugere der har svaret på hvilke spørgsmål. Jeg kan sådan set godt gemme dataene, eksempelvis i et felt i brugertabellen, der hedder "besvaret", som som så indeholder alle de ID for de spørgsmål den enkelte bruger har besvaret, kommasepereret (001, 003, 009, 004 eksempelvis).
Problemet er at hente disse data ud igen.
Eks.:
Brugeren besøger en side på hp'en. Der skal komme liste med links til alle spørgsmål, bortset fra dem vedkommende allerede har besvaret. Eller omvendt for den sags skyld. Det drejer sig altså om at kunne filtrere i spørgsmålstabellen udfra nogle oplysninger der er gemt for hver enkelt bruger om hvad han har besvaret. Hvor og hvordan skal dette gemmes (og hentes frem) lettest ?

På forhånd tak !
Avatar billede mufoxe Nybegynder
04. juni 2003 - 13:27 #1
Det nemmeste (og mest oplagte) ville være at have en BrugerID felt på besvarelser.
Avatar billede mufoxe Nybegynder
04. juni 2003 - 13:29 #2
på besvarelse har du sikkert et SpørgsmålsID, herefter er det nemt at finde frem til hvilke spm en bruger har besvaret:

SELECT *
FROM spørgsmål s INNER JOIN besvarelse b on s.id = b.spørgsmålsID INNER JOIN bruger br on b.brugerID = br.brugerID
WHERE
brugerID = 2
Avatar billede roo104 Nybegynder
04. juni 2003 - 16:08 #3
du skal vist have 3 tabeller.
bruger, svar og sprg

bruger
------
brugerid
fornavn
efternavn

svar
-----
brugerid
sprgid


sprg
-----
sprgid
sprg
svar


på den måde får du kun redundans i svar tebellen. Select sætningen ser uf lidt som mufoxe's.
Avatar billede nsmnsm Nybegynder
06. juni 2003 - 11:53 #4
Hej jeffe - jeg må tilslutte mig roo104s svar - med de 3 tabeller.

Alt efter hvilken faktor, som er kendt skal du indsætte brugerid, sprgid i rigtig rækkefølge i svar tabel. Husk på, at der vil forefindes redundant data i brugerid kollonen (brugerid i svartabel) - og måske lige overveje, om ikke rækkeføglen mht. attributter i svartabel skal være omvendt. Så kunne du køre sprgid som primær.
Den måde, som roo104 viser - så er det jo let at trække data ud - du overholder normaliseringformer og har en god og solid database/tabel opbygning, som også er nem at vedligeholde.

mvh nsmnsm
Avatar billede jeffe Nybegynder
27. juni 2003 - 15:06 #5
Undskyld ventetiden, jeg har ikke meget fritid :/
Jeg har ikke engang tid til at kigge på det...men I får 50 point hver for svar ! Så kigger jeg på det senere...
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