Episodenguide: Erweiterung der Datenbank für Personen und Charaktere

Letzte Woche habe ich mir mal die Zeit genommen, meinen Star Trek Episodenguide wieder einmal etwas umzubauen. Bisher gab es in der Tabelle „episode“ neben den Spalten wie „titel_deutsch“, „story“, „datum_deutsch“ auch noch eine Spalte für „regie“, eine für „buch“ und eine für „gaststars“. In „regie“ stand – abgesehen von 8 Episoden – immer nur eine Name drin. Bei „buch“ waren es in jeder zweiten Episoden schon mehr als ein Name und bei „gaststars“ war eine Liste von Schauspieler-Charakter-Kombinationen zu finden.

Das ist jedoch unpraktisch, da jede Person, jeder Schauspieler und jeder Charakter somit mehrfach in der Datenbank steht. Teilweise sogar mit unterschiedlicher Schreibweise.

Also ich habe mir einige Scripte geschrieben, welche mir die Spalten auslesen und nach Namen aufteilen. Dabei habe ich Komma, &, “ und “ und “ and “ als Trennzeichen verwendet. Kombinanten wie „Judith & Garfield Reeves-Stevens“ habe ich dann von Hand korrigiert. Auch bei den Daten aus der Spalte „gaststars“ bin ich ähnlich vorgegangen und habe den Wert in der Klammer als Charakter gespeichert.

Schließlich hatte ich dann zwei umfangreiche Listen mit „Personen“ (Autoren, Regisseure, Schauspieler) und „Charaktere“. Diese Listen habe ich dann wieder in die Datenbank (Tabellen „Person“ und „Character“) überführt. Zusätzlich zu den Namen enthielten die Listen auch noch die Informationen, was die Person in welcher Episode gemacht (Regie, Buch) bzw. welchen Charakter sie gespielt hatten. Dazu habe ich in der Datenbank noch zwei Kreuztabellen angelegt. Kreuztabellen enthalten nur die eindeutigen Schlüssel anderer Tabellen, um sie miteinander zu verbinden. Die erste Kreuztabelle habe ich „x_episode_crew“ genannt. Sie besteht aus den Spalten EpisodeId, PersonId und TypeID. Letzteres gibt an, was (Regie, Drehbuch, Idee, Story) die Person in der Episode gemacht hat. In der zweiten Kreuztabelle „x_episode_cast“ gibt es zudem noch die Spalte CharakterId. Bei TypeID gibt es hier die Unterscheidung, ob es sich um einen „Gast“ oder „Hauptdarsteller“ handelt.

Dadurch kann ich jetzt mehrere schöne Datenbankabfragen erstellen und beispielsweise zu jeder Person die Tätigkeiten vor und hinter der Kamera ausgeben.