Návrh databáze by měl vycházet z obecnějšího modelu návrhu informací odvozené z koncepčního informačního modelu , nejlépe ve formě diagramů tříd UML (kvůli jejich expresivitě). Následuje koncepční informační model pro váš problém:
Takový model je ještě třeba obohatit o vhodné standardní atributy identifikátorů a datové typy pro získání modelu návrhu informací. Odstraněním asociací a kompozic (jejich nahrazením referenčními vlastnostmi) získáme následující model třídy OO, který lze použít jako základ pro kódování Java/C#/PHP/atd. třídy:
Všimněte si, že jsme přidali podporu pro vícejazyčné kvízy v tomto modelu třídy OO přidáním IsoLanguageCode
výčet a TextItem
třída s dvoudílným primárním klíčem, který se skládá z ID textové položky a kódu jazyka, takže kvízy, otázky a možnosti odpovědí používají ID textové položky pro odkazování na textové položky používané jako jejich název, text otázky a text odpovědi. Všimněte si také, že Quiz
třída má odvozenou vlastnost \availableLanguages
které lze vypočítat pomocí dotazu, který načte všechny jazyky, pro které jsou k dispozici textové položky pro všechny otázky kvízu a všechny možnosti jejich odpovědí.
Návrhový model databáze SQL lze odvodit z takového modelu třídy OO nahrazením referenčních vlastností odpovídajícími atributy cizího klíče: