Probabilmente avrai una tabella answers
. Questa tabella dovrebbe avere un question_id
in modo da sapere a quale domanda viene data risposta, e dovrebbe anche aiutarti a capire che tipo di dati c'è nella risposta, assumendo che la tabella questions
abbia una sorta di question_type_id
che si riferisce a uno dei tipi di domande sopra.
Quindi, la soluzione più semplice (IMO): per la maggior parte di questi tipi di risposta, potresti avere un singolo campo di testo per memorizzare la risposta, probabilmente non più lunga della lunghezza massima consentita per le risposte in testo libero (supponendo nient altro di un centinaio di caratteri o giù di lì). Per le risposte più lunghe per il tipo Comprehension, potresti volere una tabella separata, chiamarla large_answers
, per contenere oggetti di testo molto grandi e memorizzare la risposta lì, e nella tua tabella answers
principale fare riferimento a large_answers
di un campo facoltativo large_answer_id
.
Non sono sicuro del motivo per cui XML sarebbe necessario per questo.
Questions
question_id (unique key)
question_type_id
(other fields that don't have an impact on this solution)
Answers
Answer_id (unique key)
question_id (refers to questions.question_id)
answer_text (non-null, but for large_answers, maybe just store the first n characters, as a preview)
large_answer_id (optional, refers to large_answers.large_answer_id)
large answers
large_answer_id (unique key)
large_answer_text (CLOB type)
Oppure potresti farlo in questo modo:
Questions
(as before)
Answers
Answer_id (unique key)
question_id (refers to questions.question_id)
answer_text (nullable)
large answers
large_answer_id (unique key)
answer_id (refers to answers.answer_id)
large_answer_text (CLOB type, non-null)
Nello schema sopra riportato, avresti il large_answers
che si riferisce alla risposta a cui sono associati, invece del answers
che ha un riferimento nullable a un large_answer
. Hmmm più ci penso più mi piace il secondo schema perché non mi piace l'idea di un %ble large_answer_id
, ma sono sicuro che ci sono buoni argomenti da fare per entrambe le parti ...;)