Dies ist eine alte Version des Dokuments!
LB03 - Projektauftrag
Einleitung
In den ersten zwei Dritteln des Moduls M290 haben Sie sich intensiv mit relationalen Datenbanken, SQL (DDL, DML, DCL), ERM/ERD, Tabellenbeziehungen, JOINs und Aggregatfunktionen beschäftigt.
In der dritten und letzten Leistungsbeurteilung (LB03) verknüpfen wir dieses Wissen mit einem Backend-Server: Sie implementieren einen Node.js/Express-Server, der über eine REST-API auf Ihre MySQL-Datenbank zugreift. Das Frontend wird nicht programmiert – stattdessen simulieren wir es mit Postman.
Auftrag
Sie wählen im 2er-Team einen der beschriebenen Use Cases aus (pro Klasse: jedes Thema nur einmal). Zu diesem Use Case entwickeln Sie:
- ein sauberes Datenmodell (ERM/ERD),
- eine passende MySQL-Datenbank mit Startdaten und einem AppUser,
- einen Express-Server, der die wichtigsten Funktionen als CRUD-REST-API bereitstellt,
- ein Video-Tutorial (ca. 15 Minuten), in dem Sie Ihre Lösung erklären und demonstrieren.
Zielpublikum des Tutorials sind Ihre «Mit-Auszubildenden» aus dem 2. Lehrjahr, die die Themen
- Daten & Datenbanken,
- Zugriff auf Daten in einer 3-Schichten-Architektur (Client – Server – Datenbank),
- CRUD-Operationen in SQL und über eine REST-API
besser verstehen sollen.
Inhalt des Videotutorials
Das Video soll strukturiert und nachvollziehbar sein und mindestens folgende Teile enthalten:
- Einleitung
- Kurzvorstellung des Use Cases (Problem / Idee)
- Was Ihre App grob können soll
- Analyse & Datenmodell
- Erklärung des ERM (Entitäten, Beziehungen, Kardinalitäten)
- Erklärung des ERD in Crow’s-Foot-Notation (Tabellen, PK/FK, Datentypen)
- Datenbank
- Anlegen der Datenbank & Tabellen per SQL-Skript/Befehlen (DDL)
- Import der Startdaten per SQL-Skript/Befehlen (DML)
- Anlegen und Berechtigen eines AppUsers (DCL)
- Backend / Server
- Aufbau des Node.js/Express-Projekts (wichtigste Dateien kurz erklären)
- Erklärung der wichtigsten Routen (z.B. GET /api/…, POST /api/…)
- Tests mit Postman
- Vorführen der wichtigsten REST-Endpunkte mit Postman (Create, Read, Update, Delete) inkl. zeigen der Änderungen in der Datenbank (in Webstorm mit Datenbank-Plugin)
- Anzeigen eines Beispiels mit JOIN (Daten aus 2 Tabellen)
- Anzeigen eines Beispiels mit Aggregatfunktion (z.B. COUNT, AVG, MAX)
- Sinnvolle Verwendung von HTTP-Statuscodes (z.B. 200, 201, 400, 404, 500 …)
- Reflexion
- Jede Person im Team nennt mindestens 2 Learnings (positiv / herausfordernd)
- Was würden Sie beim nächsten Mal anders machen?
- Schluss
- Kurze Zusammenfassung Ihrer Lösung
- Ausblick / mögliche Erweiterungen
Wichtige Hinweise
Frontend: Die Programmierung eines eigenen Frontends ist kein Bestandteil des Auftrags. Alle Funktionen werden mit Postman getestet und demonstriert.
- Fokus liegt auf:
- sauberem Datenmodell (ERM/ERD, richtige Datentypen, PK/FK),
- korrekten SQL-Skripten (DDL, DML, DCL),
- funktionierendem Express-Server mit CRUD-Endpunkten,
- sinnvollen Fehlermeldungen und HTTP-Statuscodes,
- vollständigen Datenbank-Dump,
- verständlicher Erklärung im Video.
- Es reicht, wenn Ihr Server Daten erstellen, lesen, ändern und löschen kann (CRUD) und mindestens einen JOIN und eine Aggregat-Abfrage bereitstellt.
- Der Backend-Server darf nicht über den Root-User in der Datenbank Änderungen machen, sondern „nur“ via AppUser.
Abgabe – Zu liefernde Lernprodukte
Das gesamte Projekt ist als ein ZIP-File in Moodle abzugeben.
Im ZIP-File müssen enthalten sein:
- Video-Tutorial (ca. 15 Minuten, gängiges Format: MP4, H.264 Codec, max. FullHD Auflösung (1920x1080px), min. Auflösung: 1280x720px, max. Video-Grösse: 500 MB, Bitrate: ca. 3000-5000kbps)
- ERM und ERD als PDF-Datei
- SQL-Skript (DDL): Anlegen der Tabellenstruktur
- SQL-Skript (DML): Import / Insert der Startdaten
- SQL-Skript (DCL): Anlegen und Berechtigen eines AppUsers zur DB (inkl. Kommentar zu den vergebenen Rechten)
- Datenbank-Dump: Erstellen Sie mit mysqldump ein SQL-File, woraus die Datenbank inkl. Daten und Tabellen-Struktur wiederhergestellt werden kann.
- Node.js-Projektordner:
- package.json
- Server-Datei(en) (z.B. app.js / index.js)
- ggf. .env-Beispiel (ohne echte Passwörter)
- README.txt mit kurzen Start-Hinweisen (z.B. 'npm install', 'npm start')
Stellen Sie sicher, dass Ihr Projekt auf einem anderen Rechner mit den bereitgestellten Skripten reproduzierbar eingerichtet werden kann.