Datenbestand
Leider kann ich euch immer noch nichts grafisches bieten. Allerdings will ich nun mal in schriftlicher Form zeigen, welche Daten ich im Endeffekt über die Anwendung erstellen (lassen) möchte.
Als erstes kommt das User Model. Dieses beinhaltet den Account des Nutzers, also im wesentlichen sein Passwort sowie seine eMail-Adresse (Login über eMail). Dies ist der Dreh- und Angelpunkt der Datenschicht, denn praktisch jedes Model wird mit diesem Model verknüpft. So ist es auch nicht verwunderlich, dass jeder schreibenden Zugriff auf die Datenbank eine Authentifizierung voraus setzt.
Da das User Model wie gesagt sehr spartanisch gehalten ist, steht es in direkter Beziehung mit einem Profile Model, welches dann private Daten der jeweiligen Accounts beinhaltet, z.B.: Name, Kontaktmöglichkeiten, usw.
Geschäftsdaten
Im Mittelpunkt steht hier wohl das Artist Model. Dieses repräsentiert sozusagen die Bands, wobei Solo Künstler ebenfalls als Band angesehen werden. Dies ist hierarchisch gesehen der unterste Knoten in der Struktur.
Zusätzlich dazu gibt es das Person Model, welches die einzelnen Mitglieder der Band repräsentiert. Es besteht also eine n:n Beziehung zwischen Person und Artist. Die Verbindungen der beiden Modelle sind durch das Eintritts- bzw. Austrittsdatum der Mitglieder begrenzt, sodass daraus später eine Historie der Mitglieder abgeleitet werden kann.
Hierarchisch über den Künstlern stehen die Alben. Sie sind immer einem Künstler zugeordnet und bündeln einzelne Songs (dazu gleich mehr).
Allerdings ist es in der Realität meist nicht so einfach, denn manchmal nehmen Bands zusammen ein Album auf, sodass man es keinem Künstler direkt zuordnen kann. Daher ist die Beziehung zwischen Artist und Album nicht 1:n sondern wieder n:n.
Schlussendlich kommen die Songs. Das Song Model steht zum einen mit dem Album Model in einer Beziehung n:1, allerdings gibt es noch eine weitere Beziehung, und zwar eine 1:n zum Artist Model – und zwar wenn mehrere Künstler an einem Song beteiligt waren. Diese können dann später als Features zum Album aufgeführt werden.
Specials
Erstes wären hier natürlich die Kommentare. Dieses Model kann mit jedem Model verbunden werden, dass eine Detailseite erstellt. Somit ist es möglich, Kommentarlisten allgemein, nach Model sowie nach Detailseite zu erstellen.
Schlussendlich wird noch eine Versionierung zu allen Models gefügt, die öffentlich von jedem registrierten bearbeitet werden können. So ist es möglich, eine Historie in die Einträge zu bekommen, aber auch im Falle von Verunstaltung einen Datensatz zurück zu setzen.