We hebben een (Drupal) systeem waarin studenten vragen maken. Antwoorden op die vragen worden opgeslagen in de tabel:
waarbij nid = de node id van de vraag. So far so good.
Nu kunnen vragen door docenten ook in andere "pagina's" (nodes) gehangen worden. Deze nodes kunnen zelf weer childnodes hebben waar ook weer vragen in gehangen kunnen worden. Childnodes's kunnen ook weer kinderen hebben, enz. Tenslotte: studenten kunnen in sommige nodes instellingen doen, die van invloed zijn op het antwoord op de vraag. De relatie tussen nodes, childnodes, instellingen en vragen is altijd many-to-many maar wel hiërarchisch (kinderen hebben niet hun voorouders als kind).
Docenten willen overzichten krijgen van antwoorden op vragen. De context (dus: of een vraag in een pagina hangt, welke dan en wat waren de evt instellingen) is hierbij erg belangrijk.
Hoe slaan we dit een beetje netjes op in de database? Onze huidige oplossing is dat we een context-string aanmaken, volgens het volgende stramien:
bijv.
wat dus wil zeggen: deze vraag is beantwoord in de context van een book met nid 1 met als child page met nid 4 met als child met nid 8, waarop studenten voor de setting 'temperature' 50 heeft ingesteld en voor 'valve' de setting 'open'. Settings worden alfabetisch gesorteerd.
In de database wordt context opgeslagen als text-kolom. Het idee is dat we nu m.b.v. queries met reguliere expressies kunnen opvragen:
- geef mij alle antwoorden bij book 1
- geef mij alle antwoorden voor setting temperature 50 in page met nid 8
- enz.
Wat we feitelijk dus doen is een relationele hiërarchische structuur opslaan als platte tekst, om vervolgens daar met regulier expressies in te zoeken. Dit voelt niet zo goed, maar een goed alternatief weet ik ook niet, aangezien we niet van te voren weten hoe lagen een hiërarchie heeft. Wat denken jullie
code:
1
2
3
| (int) nid (int) studentId (text) antwoord |
waarbij nid = de node id van de vraag. So far so good.
Nu kunnen vragen door docenten ook in andere "pagina's" (nodes) gehangen worden. Deze nodes kunnen zelf weer childnodes hebben waar ook weer vragen in gehangen kunnen worden. Childnodes's kunnen ook weer kinderen hebben, enz. Tenslotte: studenten kunnen in sommige nodes instellingen doen, die van invloed zijn op het antwoord op de vraag. De relatie tussen nodes, childnodes, instellingen en vragen is altijd many-to-many maar wel hiërarchisch (kinderen hebben niet hun voorouders als kind).
Docenten willen overzichten krijgen van antwoorden op vragen. De context (dus: of een vraag in een pagina hangt, welke dan en wat waren de evt instellingen) is hierbij erg belangrijk.
Hoe slaan we dit een beetje netjes op in de database? Onze huidige oplossing is dat we een context-string aanmaken, volgens het volgende stramien:
code:
1
| (<nodeType>_<nid>)(#<settingKey>_<settingValue>) |
bijv.
code:
1
| book_1-page_4-page_8#temperature_50#valve_open |
wat dus wil zeggen: deze vraag is beantwoord in de context van een book met nid 1 met als child page met nid 4 met als child met nid 8, waarop studenten voor de setting 'temperature' 50 heeft ingesteld en voor 'valve' de setting 'open'. Settings worden alfabetisch gesorteerd.
In de database wordt context opgeslagen als text-kolom. Het idee is dat we nu m.b.v. queries met reguliere expressies kunnen opvragen:
- geef mij alle antwoorden bij book 1
- geef mij alle antwoorden voor setting temperature 50 in page met nid 8
- enz.
Wat we feitelijk dus doen is een relationele hiërarchische structuur opslaan als platte tekst, om vervolgens daar met regulier expressies in te zoeken. Dit voelt niet zo goed, maar een goed alternatief weet ik ook niet, aangezien we niet van te voren weten hoe lagen een hiërarchie heeft. Wat denken jullie