Databasdesign bör följa från en mer allmän informationsdesignmodell härledd från en konceptuell informationsmodell , helst i form av UML-klassdiagram (på grund av deras uttrycksförmåga). Följande är en konceptuell informationsmodell för ditt problem:
En sådan modell måste fortfarande berikas med lämpliga standardidentifieringsattribut och datatyper för att erhålla en informationsdesignmodell. Genom att eliminera associationerna och kompositionerna (ersätta dem med referensegenskaper) får vi följande OO-klassmodell, som kan användas som grund för kodning av Java/C#/PHP/etc. klasser:
Observera att vi har lagt till stöd för flerspråkiga frågesporter i denna OO-klassmodell genom att lägga till en IsoLanguageCode
uppräkning och en TextItem
klass med en tvådelad primärnyckel som består av ett textobjekts-ID och en språkkod så att frågesporter, frågor och svarsalternativ använder ett textobjekt-ID för att referera till de textobjekt som används som deras titel, frågetext och svarstext. Lägg också märke till att Quiz
class har en härledd egenskap \availableLanguages
som kan beräknas med hjälp av en fråga som hämtar alla språk för vilka textobjekt för alla frågor i ett frågesport, och alla deras svarsalternativ, är tillgängliga.
En SQL-databasdesignmodell kan härledas från en sådan OO-klassmodell genom att ersätta referensegenskaperna med motsvarande främmande nyckelattribut: