/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
opbygning af avanceret afstemning
Fra : Martin


Dato : 29-05-06 16:38

Hej

Jeg sidder og tænker lidt på hvordan jeg skal opbygge en database til
følgende.


Case
Lave en avanceret afstemning hvor det er muligt at sige at hvis man
svarer X til spørgsmål 1 så skal den hoppe til spørgsmål 3, ellers hoppe
til spørgsmål 2.

Der skal kunne laves "uendelig" med spørgsmål, samt "uendeligt" med
svarmulighed til hvert spørgsmål. (Dette er ikke det store problem, det
er bare med noget ID og parent_id)

Der skal være mulighed for både textfields, textareas, radioknapper og
checkbokse til at vælge imellem svarmulighederne.

Mit store problem ligger i det første, jeg kan ikke rigtig se en løsning
med at kunne springe rundt i spørgsmålene.

Så nu tyr jeg til hjælp her. Håber på at en kan få knaldet en mulighed
ind i hovedet på mig :)

 
 
Per Thomsen (29-05-2006)
Kommentar
Fra : Per Thomsen


Dato : 29-05-06 19:36

Martin wrote:
> Hej
>
> Jeg sidder og tænker lidt på hvordan jeg skal opbygge en database til
> følgende.
>
>
> Case
> Lave en avanceret afstemning hvor det er muligt at sige at hvis man
> svarer X til spørgsmål 1 så skal den hoppe til spørgsmål 3, ellers hoppe
> til spørgsmål 2.
>
> Der skal kunne laves "uendelig" med spørgsmål, samt "uendeligt" med
> svarmulighed til hvert spørgsmål. (Dette er ikke det store problem, det
> er bare med noget ID og parent_id)
>
> Der skal være mulighed for både textfields, textareas, radioknapper og
> checkbokse til at vælge imellem svarmulighederne.
>
> Mit store problem ligger i det første, jeg kan ikke rigtig se en løsning
> med at kunne springe rundt i spørgsmålene.
>
> Så nu tyr jeg til hjælp her. Håber på at en kan få knaldet en mulighed
> ind i hovedet på mig :)

Hvad med noget i denne stil:


CREATE TABLE Question(
questionId INT UNSIGNED NOT NULL,
title VARCHAR(255) NOT NULL,
note TEXT,
parentQuestionId INT UNSIGNED,
defaultNextQuestionId INT UNSIGNED NOT NULL,
FOREIGN KEY (parentQuestionId) REFERENCES Question (questionId),
FOREIGN KEY (defaultNextQuestionId) REFERENCES Question (questionId),
PRIMARY KEY (questionId),
UNIQUE UC_questionId (questionId)
);


CREATE TABLE Option(
optionId INT UNSIGNED NOT NULL,
subIndex INT UNSIGNED NOT NULL,
title VARCHAR(255) NOT NULL,
note TEXT,
type ENUM('textfield','textarea','radiobutton','checkbox'),
radioGroup VARCHAR(16),
optionFor INT UNSIGNED NOT NULL,
leadTo INT UNSIGNED,
FOREIGN KEY (optionFor) REFERENCES Question (questionId),
FOREIGN KEY (leadTo) REFERENCES Question (questionId),
PRIMARY KEY (optionId,optionFor),
UNIQUE UC_optionId (optionId)
);


Princippet er at der er to tabeller, en til spørgsmål, og en til
svarmuligheder.

Der er to relationer mellem disse tabeller. Den ene relation fortæller,
hvilket spørgsmål svarmuligheden, er en svarmulighed til. Den anden
relation fortæller, hvilket spørgsmål en svarmulighed fører til.

Ydermere har tabellen til spørgsmål, to relationer til sig selv. Den ene
angiver den hierarkiske struktur. Den anden angiver, hvilket spørgsmål
der springes til, hvis det ikke er givet af den valgte svarmulighed.

Jeg er lidt usikker på hvorvidt det er 'pænt' at gøre sådan, men det
burde da vist kunne fungere.

Håber du forstår (og kan bruge) ideen.

NB! Ovenstående SQL er til MySQL og autogenereret, så det kan godt være,
der er noget der skal oversættes til det DBMS du bruger.

MVH Per Thomsen,
<http://www.pert.dk/>

Troels Hansen (30-05-2006)
Kommentar
Fra : Troels Hansen


Dato : 30-05-06 19:22

Hvad med phpsurveyor? Der fungerer ret godt, og kan lige det du
efterspørger.
http://www.phpsurveyor.org/

Søg
Reklame
Statistik
Spørgsmål : 177458
Tips : 31962
Nyheder : 719565
Indlæg : 6408173
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste