La progettazione del database dovrebbe seguire un modello di progettazione delle informazioni più generale derivato da un modello informativo concettuale , preferibilmente sotto forma di diagrammi di classe UML (a causa della loro espressività). Quello che segue è un modello informativo concettuale per il tuo problema:
Tale modello deve ancora essere arricchito con attributi identificativi standard adeguati e tipi di dati per ottenere un modello di progettazione delle informazioni. Eliminando le associazioni e le composizioni (sostituindole con proprietà di riferimento), otteniamo il seguente modello di classe OO, che può essere utilizzato come base per la codifica Java/C#/PHP/etc. classi:
Nota che abbiamo aggiunto il supporto per i quiz multilingue in questo modello di classe OO aggiungendo un IsoLanguageCode
enumerazione e un TextItem
classe con una chiave primaria in due parti costituita da un ID elemento di testo e un codice lingua in modo tale che quiz, domande e opzioni di risposta utilizzino un ID elemento di testo per fare riferimento agli elementi di testo utilizzati come titolo, testo della domanda e testo della risposta. Nota anche che il Quiz
la classe ha una proprietà derivata \availableLanguages
che può essere calcolato con l'aiuto di una query che recupera tutte le lingue per le quali sono disponibili elementi di testo per tutte le domande di un quiz e tutte le loro opzioni di risposta.
Un modello di progettazione di database SQL può essere derivato da un tale modello di classe OO sostituendo le proprietà di riferimento con gli attributi di chiave esterna corrispondenti: