In quale formato devo inviare i valori nel database in PHP?

1

Sto sviluppando un'applicazione che si basa sul concorso a quiz per gli esami di competenza. L'utente può fornire diverse categorie di test, che conterranno diversi tipi di domande dei seguenti tipi:

  1. selezione singola,
  2. Selezione multipla,
  3. Creazione corrispondenze,
  4. Comprensione (la domanda sarà un paragrafo e sulla base di ciò ci saranno domande),
  5. Testo libero (l'utente dovrà digitare la risposta),
  6. Intervallo (l'utente deve selezionare un numero compreso tra 1 e 10).

La mia preoccupazione è che durante la creazione di domande dal sito di amministrazione, come posso gestire il database per il tipo di domande sopra riportato?

Ho una colonna di risposta nella tabella delle domande ma ci sono sei tipi di domande, quindi quale dovrebbe essere il modo conveniente per salvare le risposte nel databse in modo che quando l'utente darà una risposta, posso facilmente verificare se la risposta corrisponde? / p>

Sto pensando di salvare la risposta sotto forma di tag XML. Sarà un buon approccio?

    
posta Sumit Neema 14.02.2012 - 19:34
fonte

2 risposte

2

Ogni tipo di domanda dovrà essere gestita in modo diverso nella tua applicazione e utilizzerà una diversa selezione di dati, sarebbe meglio creare più tabelle per ogni parte della domanda che sono tutte correlate a una tabella di domande centrale, piuttosto che provare ad avere un tavolo enorme.

vorrete almeno una tabella di domande, una tabella di opzioni MC, una tabella per leggere le selezioni, una tabella per memorizzare le regole su come classificare le risposte di testo libero; o una tabella con abbastanza colonne per tutto questo.

    
risposta data 14.02.2012 - 20:00
fonte
1

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 ...;)

    
risposta data 14.02.2012 - 19:44
fonte

Leggi altre domande sui tag