[SQL] Multiple choice met 'anders' optie

Pagina: 1
Acties:

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 24-11 23:24
Het gaat dus om een x aantal voorgedefinieerde antwoorden, plus de mogelijkheid om een open antwoord te geven, en hoe deze netjes in de database op te slaan.

Naar mijn weten zijn er twee mogelijke oplossingen voor dit probleem:

1:
- Je maakt twee tabellen, een met voorgedefinieerde antwoorden en een met open antwoorden
- Open en voorgedefinieerde gegeven antwoorden allebei splitsen en naar hun eigen 'gegeven antwoorden' tabellen wegschrijven

Voordeel:
- Makkelijk te onderhouden
- Minder vervuiling in de database met voorgedefinieerde antwoorden

Nadeel:
- Lastig te joinen


2:
- Je maakt een tabel met antwoorden, en je geeft aan via een TINYINT (bool) of het een voorgedefinieerd antwoord is of niet
- Als er een open antwoord gegeven wordt, wordt deze zonder de 'voorgedefinieerd' flag in de antwoorden tabel weggeschreven, en de tabel met gegeven antwoorden wordt op dezelfde manier gevuld

Voordeel:
- Makkelijk te joinen

Nadeel:
- Veel open antwoorden tussen je voorgedefinieerde vragen in de tabel
- Voorzichtiger zijn met code om er voor te zorgen dat je individuele open antwoorden en voro iedereen zichtbare voorgedefinieerde antwoorden niet door elkaar gaan lopen

iOS developer


  • TeH_oNe
  • Registratie: Oktober 2001
  • Laatst online: 15-06-2024

TeH_oNe

YEAH RIGHT

wat is nu je vraag ?

what?


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 01-12 13:02

Dido

heforshe

En als je "Anders, namelijk" nou gewoon als voorgedefinieerd antwoord opneemt?
Vervolgens 1 tabel met alle gegeven (voorgedefinieerde) antwoorden, en 1 tabel met de "extra" ingevoerde text bij alles waarop "Anders, namelijk" is geantwoord.

Lijkt me ook niet echt ingewikkeld wat joinen betreft?

Wat betekent mijn avatar?


Verwijderd

[ANTWOORD]
-> user_id
-> question_id
-> standard_answer_id (nullable).
-> answer_comment (varchar2)


de answer_comment wordt gebruikt als de gebruiker géén standaard antwoord geeft (en null komt dan als 'standard answer'.

select user_id, question_id, nvl(standard_answers.descr, answer_comment) answer
from antwoord
left outer join standard_answers

lijkt me ook een mogelijk oplossing, maar die past misschien niet in je huidige ontwerp?

Het lijkt me ook makkelijker. Je kan later als 'admin' een nieuwe categorie invoeren en de volledige tekst laten staan. Ook zijn "ja, maar's" mogelijk waar gebruikers hun antwoord kunnen toelichten. (afhankelijk van je systeemeisen)

[ Voor 20% gewijzigd door Verwijderd op 04-05-2007 11:24 ]


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 24-11 23:24
De vraag is eigenlijk dat er een x aantal manier zijn om het 'probleem' mee op te lossen en er geen een eigenlijk echt helemaal lekker aanvoelt. Ik gebruik zelf de laatste tijd versie 2 van mijn voorbeelden om het zeg maar relationeel kloppend te maken. Maar ik vroeg me af hoe mensen hier het probleem meestal tackelen.
Verwijderd schreef op vrijdag 04 mei 2007 @ 11:22:
[ANTWOORD]
-> user_id
-> question_id
-> standard_answer_id (nullable).
-> answer_comment (varchar2)


de answer_comment wordt gebruikt als de gebruiker géén standaard antwoord geeft (en null komt dan als 'standard answer'.

select user_id, question_id, nvl(standard_answers.descr, answer_comment) answer
from antwoord
left outer join standard_answers

lijkt me ook een mogelijk oplossing, maar die past misschien niet in je huidige ontwerp?

Het lijkt me ook makkelijker. Je kan later als 'admin' een nieuwe categorie invoeren en de volledige tekst laten staan. Ook zijn "ja, maar's" mogelijk waar gebruikers hun antwoord kunnen toelichten. (afhankelijk van je systeemeisen)
Ja die heb ik inderdaad ook nog als alternatief wel eens gebruikt.

iOS developer


  • attiks
  • Registratie: Augustus 2006
  • Laatst online: 20-12-2021
ik gebruik voor een online enquetetool hetzelfde systeem als voodoochile en dit werkt vlotjes, de voorgedefinieerde antwoorden staan gewoon in een aparte tabel.
Pagina: 1