Das Datenbankdesign sollte einem allgemeineren Informationsdesignmodell folgen abgeleitet von einem konzeptionellen Informationsmodell , vorzugsweise in Form von UML-Klassendiagrammen (wegen ihrer Aussagekraft). Das Folgende ist ein konzeptionelles Informationsmodell für Ihr Problem:
Ein solches Modell muss noch mit geeigneten Standardkennungsattributen und Datentypen angereichert werden, um ein Informationsdesignmodell zu erhalten. Durch Eliminieren der Assoziationen und Kompositionen (Ersetzen durch Referenzeigenschaften) erhalten wir das folgende OO-Klassenmodell, das als Grundlage für die Codierung von Java/C#/PHP/etc. verwendet werden kann. Klassen:
Beachten Sie, dass wir in diesem OO-Klassenmodell Unterstützung für mehrsprachige Quiz hinzugefügt haben, indem wir einen IsoLanguageCode
hinzugefügt haben Aufzählung und ein TextItem
Klasse mit einem zweiteiligen Primärschlüssel, der aus einer Textelement-ID und einem Sprachcode besteht, so dass Quizze, Fragen und Antwortoptionen eine Textelement-ID verwenden, um die als Titel, Fragetext und Antworttext verwendeten Textelemente zu referenzieren. Beachten Sie auch, dass das Quiz
Klasse hat eine abgeleitete Eigenschaft \availableLanguages
die mit Hilfe einer Abfrage berechnet werden kann, in der alle Sprachen abgerufen werden, für die Textelemente für alle Fragen eines Quiz und alle Antwortoptionen verfügbar sind.
Aus einem solchen OO-Klassenmodell kann ein SQL-Datenbank-Designmodell abgeleitet werden, indem die Referenzeigenschaften durch entsprechende Fremdschlüsselattribute ersetzt werden: