Zum Inhalt

Eigene Filmdatenbank (MoviesDB)

Von Lars

Ziel der Aufgabe

Das Ziel ist die Erstellung einer strukturierten Film-Collection, die sowohl einfache Metadaten als auch komplexe, verschachtelte Objekte für Bewertungen und Kommentare enthält.


🏗️ Physisches Modell & Schema

Um die Struktur der Dokumente zu veranschaulichen, finden Sie hier das Schema in zwei Darstellungsformen.

Das Diagramm zeigt die 1:n Beziehungen (z.B. ein Film zu vielen Kommentaren).

classDiagram
    class Movie {
        String title
        String releaseDate
        String genre
        Object imdb
        Object tomatoes
        Array comments
    }
    class Imdb {
        Decimal rating
        Int votes
    }
    class Tomatoes {
        Object viewer
        Object critics
        Int fresh
        Int rotten
    }
    class Comment {
        String name
        String email
        String text
        Date date
    }
    Movie *-- Imdb
    Movie *-- Tomatoes
    Movie *-- Comment

Die physische Repräsentation eines Dokuments in der Collection movies.

{
  "title": "String",
  "imdb": { "rating": "Decimal", "votes": "Int" },
  "tomatoes": {
    "viewer": { "rating": "Decimal", "numReviews": "Int" },
    "critics": { "rating": "Decimal", "numReviews": "Int" },
    "fresh": "Int", "rotten": "Int"
  },
  "comments": [
    { "name": "String", "email": "String", "text": "String", "date": "Date" }
  ]
}

Implementierungs-Details

Hier sind die wichtigsten technischen Entscheidungen aus dem Jupyter Notebook zusammengefasst:

Reproduzierbarkeit sicherstellen

Wie verhindern wir doppelte Einträge?

[cite_start]Damit das Notebook bei jedem "Run All" ein sauberes Ergebnis liefert, wird zu Beginn die Collection geleert[cite: 10, 11]:

movies_col.delete_many({})
Dies stellt sicher, dass das Notebook idempotent ist und keine Redundanzen erzeugt.

Datenstruktur für Kommentare

Warum ein Array für Kommentare?

[cite_start]Für die User-Kommentare wurde ein Array von Objekten innerhalb des Filmdokuments gewählt[cite: 55, 74]. * Vorteil: Die Kommentare werden atomar mit dem Film geladen (kein zusätzlicher Join/Lookup nötig). * [cite_start]Struktur: Name, E-Mail, Text und Datum sind direkt im Dokument gekapselt [cite: 59-62, 66-70].


📄 Jupyter Notebook Dokumentation

Das vollständige Notebook habe ich als PDF exportiert und enthält den gesamten Code ink. Ausgaben.