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]:
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.