Aufgabe 08 - Mongoose und Datenmodell-Vergleich (Fuhrpark)
Aufgabe 08 - Mongoose und Datenmodell-Vergleich (Fuhrpark)
Abschnitt betitelt „Aufgabe 08 - Mongoose und Datenmodell-Vergleich (Fuhrpark)“Worum geht es?
Abschnitt betitelt „Worum geht es?“Diese Übung bringt mit Mongoose eine Schema- und Validierungsschicht über die schemalose MongoDB und stellt die Datenmodelle einander gegenüber (siehe Kapitel 4 - NoSQL und alternative Datenmodelle). Szenario ist der Fuhrpark eines Lieferdienstes mit Fahrzeugen und Fahrten. Im Expertenteil wird eine begründete Wahl zwischen relationalem und dokumentenorientiertem Modell getroffen.
Was Sie dafür brauchen
Abschnitt betitelt „Was Sie dafür brauchen“- Kapitel 4 - NoSQL und alternative Datenmodelle, Abschnitte Datenmodelle vergleichen und Mongoose.
- Node.js mit installiertem
mongooseund eine MongoDB-Instanz.
Welche Kompetenzen Sie erwerben und zeigen
Abschnitt betitelt „Welche Kompetenzen Sie erwerben und zeigen“- Sie ordnen einem Anwendungsfall das passende Datenmodell zu.
- Sie definieren ein Mongoose-Schema mit Typen, Pflichtfeldern und erlaubten Werten.
- Sie bilden Beziehungen mit
refundpopulateab. - Sie treffen und begründen eine Entscheidung zwischen relational und NoSQL.
Pädagogische Einordnung
Abschnitt betitelt „Pädagogische Einordnung“- Reproduktion: Datenmodelle zuordnen (Teil A).
- Reorganisation und Transfer: ein Schema definieren und validieren (Teile B und C).
- Reflexion, Problemlösung und Urteilsbildung: relational gegen NoSQL abwägen (Teil D).
Arbeitsaufträge
Abschnitt betitelt „Arbeitsaufträge“Die Übung ist auf etwa zwei Stunden ausgelegt. Teil D ist der Expertenteil.
Teil A - Datenmodelle zuordnen
Abschnitt betitelt „Teil A - Datenmodelle zuordnen“Ordnen Sie jedem Anwendungsfall das am besten passende Datenmodell zu (relational, Dokument, Key-Value, Graph) und begründen Sie in einem Satz:
- Ein Zwischenspeicher (Cache) für Sitzungsdaten, der extrem schnell antworten muss.
- Ein soziales Netzwerk mit „Freund-von-Freund”-Beziehungen.
- Die Buchhaltung mit strengen, verknüpften Konten und Transaktionen.
- Ein Produktkatalog, bei dem jedes Produkt andere Eigenschaften hat.
Teil B - Mongoose-Schema definieren
Abschnitt betitelt „Teil B - Mongoose-Schema definieren“Definieren Sie ein Schema fahrzeugSchema mit:
kennzeichen(String, Pflicht, eindeutig),typ(String, nur erlaubt:PKW,Transporter,LKW),baujahr(Number, nicht kleiner als 1990),sitze(Number, Standardwert 5),aktiv(Boolean, Standardwerttrue).
Erzeugen Sie daraus ein Model Fahrzeug und speichern Sie ein gültiges Dokument.
Teil C - Validierung, ref und populate
Abschnitt betitelt „Teil C - Validierung, ref und populate“- Versuchen Sie, ein Fahrzeug mit
typ: 'Fahrrad'undbaujahr: 1980zu speichern. Notieren Sie die Fehlermeldungen und erklären Sie, welche Datenbank hier prüft — MongoDB oder Mongoose. - Definieren Sie ein zweites Schema
fahrtSchemamit einem Feldfahrzeugals Referenz (Schema.Types.ObjectId, ref: 'Fahrzeug'). - Legen Sie eine Fahrt an und lesen Sie sie einmal ohne und einmal mit
populate('fahrzeug'). Beschreiben Sie den Unterschied im Ergebnis.
Teil D - Expertenteil: Relational oder NoSQL?
Abschnitt betitelt „Teil D - Expertenteil: Relational oder NoSQL?“Der Lieferdienst wächst. Es kommen Anforderungen dazu: monatliche Abrechnungen mit strengen Summen, Auswertungen über viele Beziehungen (Fahrer, Fahrzeug, Kunde, Route) und ein Berichtswesen.
- Stellen Sie in einer Tabelle gegenüber, welche dieser Anforderungen eher für ein relationales und welche eher für ein dokumentenorientiertes Modell sprechen.
- Erklären Sie am Beispiel
populate, warum viele Beziehungen über viele Dokumente in MongoDB spürbar langsamer werden als einJOINim relationalen System. - Geben Sie eine begründete Empfehlung ab: ein Modell, eine Kombination aus beiden — und warum. Beziehen Sie den Satz „Die Wahl folgt der Aufgabe, nicht der Mode” ein.
Wissenscheck
Abschnitt betitelt „Wissenscheck“- Was ist ein ODM, und welche Rolle spielt Mongoose?
- Welche Prüfungen kann ein Mongoose-Schema erzwingen, die MongoDB von sich aus nicht macht?
- Wozu dient
populate, und warum ist es kein echter Join? - Für welche Art von Daten ist ein Graphmodell besonders geeignet?
- Nennen Sie je einen typischen Fall für relational und für dokumentenorientiert.
- Die Datei
aufgabe08_mongoose.jsmit Schema, Model und den Beispielen aus Teil B und C. - Die Gegenüberstellung und Empfehlung aus Teil D als kurzer Text.
HTL Villach, Schuljahr 2026-2027,
https://www.htl-villach.at