Files
2026-05-02 08:28:31 +02:00

25 lines
2.6 KiB
Markdown

# Das Datenmodell
Die Autor*innen eines Liedes werden im Header eines Liedbausteins mit einer Referenz auf die `authors.yml` und einer Rolle angegeben:
authors = #(("IdaTextor" text)("BenSinger" melody))
Dabei können in der YAML-Datei grundsätzlich beliebige Daten angegeben werden, für die Ausgabe im Lied-Layout wird allerdings nur eine Auswahl verwendet.
Dieses flexible Datenmodell galt es relational abzubilden, was nie hundertprozentig möglich ist.
Im Mittelpunkt steht die `Person`, die mindestens eine Identität (`Identity`) hat. Die Identität steht für die Zugehörigkeit zu einer Organisation (`organization`, z.B. Jugendbund oder Musikgruppe), womit der Alias (`Identity.alias`, YAML: `trail_name`, Fahrtenname/Spitzname) verbunden ist. Personen ohne Alias und Gruppenzugehörigkeit haben trotzdem eine Identität für die ID, die im Lied-Header verwendet wird (`Identity.author_id`, meist „VornameNachname“).
In der `authors.yml` sind mehrere Identitäten mithilfe von `inherits` umgesetzt; dabei können beliebige Felder überschrieben werden. Hier gibt es eine feste Zuordnung für die Felder, die bisher tatsächlich in diesem Sinne verwendet wurden.
Die Lebensdaten und den bürgerlichen Namen mit verschiedenen Varianten betrachten wir als Eigenschaften der Person.
Eine Person, die etwas veröffentlicht hat, ist in verschiedenen öffentlichen Datenbanken registriert. Diese Datenbank-IDs erfassen wir als `AuthorID`. Die Liste der Datenbanken ist derzeit im Modell hartcodiert, da uns nicht jegliche Nationalbibliothek interessiert. Sie ließe sich aber leicht flexibler gestalten, falls wir weitere IDs erfassen möchten. Einen Sinn haben diese IDs für die Verlinkung der Personen in einer öffentlichen Schnittstelle (Website „Liederquelle 2.0“), zur weiteren Recherche und zur Unterscheidung von Personen mit gleichem Vor- und Nachnamen bzw. Alias.
Ebenso können einer Person mehrere URLs (`AuthorURL`) zugeordnet sein, z.B. die eigene Homepage, eine Band-Homepage und eine Wikipedia-Seite.
Dies und die folgenden Daten gehen über die `authors.yml` hinaus und sind für die zukünftige Verwendung in öffentlicher Schnittstelle und Rechte-Verwaltung konzipiert.
Schließlich können wir Kontaktdaten (`Contact`) zur Person erfassen, gedacht für die Kontaktaufnahme bei Abdruckanfragen. Das Kontakt-Modell ist so gestaltet, dass es sich auch an andere Modelle anhängen lässt, z.B. einen Verlag.
Zu den Kontaktdaten gehören Kontaktmedien (`Medium`) wie Telefon, Email und Messenger; ähnlich wie bei `AuthorID` ist die Liste der möglichen Medien derzeit hartcodiert.