Filmdatenbank, Teil 1: Datenmodell

Eine Filmdatenbank ist ein tolles Beispiel für eine Datenbank, die einmal nicht überwiegend beruflich eingesetzt wird, sondern auch für Hobbyprogrammierer interessant ist. In dieser Artikelreihe wollen wir eine Datenbank programmieren, die Filme inklusive Darstellern, Regisseuren, Genres und vielen weiteren Daten speichert und die Suche darin erlaubt. Auch brauchen wir uns diesmal keine Sorgen um das Bereitstellen von Beispieldaten zu machen: Die Internet-Filmdatenbank IMDB bietet ihre kompletten Daten zum Download an. Das liefert uns gleichzeitig prima Material für die Beschreibung des Imports von Daten aus Textdateien in eine Access-Datenbank. Im ersten Teil der Beitragsreihe schauen wir uns die Daten an, die IMDB bereitstellt, und entwerfen das Datenmodell für die Filmdatenbank.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 2005_Filmdatenbank.accdb.

Beispieldaten aus dem echten Leben

Die Internetfilmdatenbank IMDB enthält sehr viele Filme (zum Zeitpunkt der Erstellung dieses Artikels ca. 7,3 Millionen Einträge in der Filme-Datei, allerdings sind dort auch Serien mit Staffeln enthalten) inklusive weiteren Daten wie Darstellern, Regisseuren, Genres und so weiter.

Die Beispieldaten finden Sie unter dieser Internetadresse:

https://datasets.imdbws.com/

Hier finden Sie sieben gezippte Textdateien vor (siehe Bild 1). Diese sind unterschiedlich groß – die größte enthält gepackt über 300 MB, entpackt sogar über 600MB! Das heißt, dass wir an die Grenzen einer Access-Datenbank von 2 GB stoßen könnten.

Download der Filmdaten von IMDB

Bild 1: Download der Filmdaten von IMDB

Allerdings können wir diese Datenmenge vermutlich durch geschicktes Aufteilen auf verknüpfte Datenbanken reduzieren.

Tabellen des Datenmodells

Die Haupttabelle heißt natürlich tblFilme, denn um diese dreht es sich hauptsächlich. Die Tabelle tblFilme sieht im Entwurf wie in Bild 2 aus. Sie hat keine Fremdschlüsselfelder zu Lookup-Tabellen – noch nicht einmal zur Auswahl eines Genres. Der Grund ist einfach: Jeder Film kann mehreren Genres zugeordnet werden, daher verwenden wir eine Verknüpfungs-tabelle zwischen den Einträgen der Tabelle tblFilme und der noch zu erstellenden Tabelle der Genres.

Entwurf der Tabelle tblFilme

Bild 2: Entwurf der Tabelle tblFilme

Wie dem Bild zu entnehmen ist, verwenden wir keinen eindeutigen Schlüssel für das Feld Titel. Sollten wir nicht eigentlich dafür sorgen, dass jeder Film nur einmal in die Tabelle aufgenommen werden kann Ja, normalerweise ist die Logik korrekt, aber bei Filmen kann es durchaus vorkommen, dass zwei Filme den gleichen Titel tragen oder der gleiche Film als Remake wiederveröffentlicht wird.

Tabelle zum Speichern der Genres

Die zweite Tabelle, die wir anlegen, heißt tblGenres. Diese Tabelle ist eine einfache Lookup-tabelle, die neben dem Primärschlüsselfeld GenreID nur das Feld Genre zum Speichern der Bezeichnung enthält.

Dieses Feld versehen wir mit einem eindeutigen Index, den wir über die Eigenschft Indiziert mit dem Wert Ja (Ohne Duplikate) festlegen (siehe Bild 3).

Entwurf der Tabelle tblGenres

Bild 3: Entwurf der Tabelle tblGenres

Tabelle zum Verknüpfen von Filmen und Genres

Die Daten der IMDB halten Informationen darüber bereit, welcher Film welchem Genre zugeordnet ist. Diese Information bilden wir in einer Verknüpfungstabelle ab, welche jeweils einen Eintrag der Tabelle tblFilme mit einem Eintrag der Tabelle tblGenres zusammenführt.

Die Verknüpfungstabelle soll tblFilmeGenres heißen und enthält neben dem Primärschlüsselfeld jeweils ein Fremdschlüsselfeld zur Auswahl des Films und eines zur Auswahl des Genres. Wir richten diese beiden Fremdschlüsselfelder als Nachschlagefelder ein, damit diese beim Hinzufügen zu Formularen später direkt als Kombinationsfelder implementiert werden. Bei Einrichten der Nachschlagefelder achten wir insbesondere darauf, dass die Beziehung zwischen den Tabellen tblFilme und tblFilmeGenres mit referenzieller Integrität angelegt und die Löschweitergabe für diese Beziehung aktiviert wird. Diese sorgt dafür, dass beim Löschen eines Films auch direkt die mit diesem Film verknüpften Einträge der Tabelle tblFilmeGenres gelöscht werden.

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar