Avatar billede kipolaks Nybegynder
20. april 2009 - 12:53 Der er 8 kommentarer

hjælp til tables og relations

Hej alle

Jeg har fået til opgave at lave en mindre database til indtastning af en række spørgeskemaer.

jeg har lavet en tabel der hedder "samples" der indeholder:

id: primær nøgle
navn: testpersonens navn..
alder: alder..
osv..

nogle af spørgsmålene er lidt specielle idet man kan svare på flere måder, eks:

Personlig indkomst?
her kan man vælge at skrive ens indkomst eller man kan krydse af i "ved ikke / vil ikke svare" eller hvis spørgsmålet slet ikke er besvaret skal det i databasen være registreret som ubesvaret..

hvordan laver jeg det ?
Avatar billede j3ppah Novice
20. april 2009 - 12:59 #1
Hvordan sender du talene til databasen ?hvis det er via en hjemmeside, kan du jo bare kode ind i hjemmesiden at

if (PersonligInkomstFelt == NULL)
{
PersonligInkomst = "Ubesvaret";
}

Kræver jo at formatet i din tabel er en string, eller ligenende.
Avatar billede pgroen Nybegynder
20. april 2009 - 13:02 #2
umiddelbart ville jeg nok lave en 'indkomstkategori' tabel

á la:

INDKAT_ID      BESKRIVELSE

0              ved ikke / vil ikke svare
1              0-100.000
2              100-200.000
osv, osv.


Hvor din 'samples' tabel så har en INDKAT_ID kolonne med en fremmednøgle til 'indkomstkategori'...
Avatar billede kipolaks Nybegynder
20. april 2009 - 13:11 #3
det må helst ikke være en streng i databasen..
jeg har et andet spm på skemaet der hedder: civilstatus?

til dette har jeg tænkt mig at oprette en tabel med 2 felter:

id: INT primær nøgle
description: STRING beskrivelse af status

og fylde de forskellige svarmuligheder deri:

1:gift
2:Ugift
3:Samlevende
4:Ved ikke / vil ikke svare
osv.

og så bare skrive id'et til civilstatus i min samples tabel hvor det hele bliver samlet.

men kan man gøre noget lignende med indkomst ?
Avatar billede kipolaks Nybegynder
20. april 2009 - 13:13 #4
2# ja det kunne man godt gøre.. men så støder jeg alligevel ind i problemet igen ved:

alder?
vægt?
osv..
Avatar billede pgroen Nybegynder
20. april 2009 - 15:14 #5
OK, så kunne en mere generel løsning være at oprette en 'svar' tabel:

SVAR_ID    SVAR_TYPE      BESKRIVELSE
1          INDKOMSTKLASSE  0-100.000
2          INDKOMSTKLASSE  ved ikke / vil ikke svare
.
.
.
17        VÆGTKLASSE      75-70 kg
18        VÆGTKLASSE      ved ikke / vil ikke svare
.
.
.
.
32        ALDERSKLASSE    30-39 år
osv.
osv.


Og ja, så kunne man også normalisere SVAR_TYPE, men bare for eksemplets skyld...
Avatar billede kipolaks Nybegynder
20. april 2009 - 16:50 #6
hmm.. det lyder knap så tilfredsstillende :P tror jeg ender med at lave en tabel til hvert spm. med de forskellige svarmuligheder således:

AGE_TABLE:
ID  DESCRIPTION
1000 Ved ikke / Vil ikke svare
1001 Ubesvaret

her bruger jeg nogle id's som ihvertfald ikke er gyldige som alder og så må jeg smide noget af logikken i skemaet hvor der indtastes.. Så hvis der i SAMPLES tabellen står 43 i alder hvis det er hvad folk har indtastet..
Avatar billede kipolaks Nybegynder
20. april 2009 - 16:59 #7
og det er jo bare en hul-i-hovedet løsning.. :)
Avatar billede arne_v Ekspert
21. april 2009 - 03:18 #8
Du skal ikke have en tabel til hvert spørgsmål. En enkelt tabel med en foreign key som peger på spørgsmålet er bedre.
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