Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| de:modul:m290_guko:leistungsbeurteilungen:03_lb:b_projektbeschrieb [2026/08/13 16:06] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m290_guko:leistungsbeurteilungen:03_lb:b_projektbeschrieb [2026/08/13 16:06] (aktuell) – ↷ Seite von modul:m290_guko:leistungsbeurteilungen:03_lb:b_projektbeschrieb nach de:modul:m290_guko:leistungsbeurteilungen:03_lb:b_projektbeschrieb verschoben msuter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== LB03 – Projektarbeit: | ||
| + | |||
| + | ===== Einleitung ===== | ||
| + | In den ersten zwei Dritteln des Moduls M290 haben Sie sich intensiv mit relationalen Datenbanken, | ||
| + | |||
| + | In der dritten und letzten Leistungsbeurteilung (LB03) verknüpfen Sie dieses Wissen mit einem Backend-Server: | ||
| + | |||
| + | <WRAP box round center 80%> | ||
| + | **Wichtig: | ||
| + | Beide Lernenden müssen darin vorkommen und jeweils einen Teil von Setup/Code verständlich erklären. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Rahmenbedingungen ===== | ||
| + | * **Sozialform: | ||
| + | * **Zeit:** ca. 7 Lektionen Projektzeit im Unterricht (Inputs jeweils zu Beginn der Lektion) | ||
| + | * **Abgabe:** Letzter Unterrichtstag des Semesters, **21:00 Uhr** | ||
| + | * **Benotung: | ||
| + | |||
| + | |||
| + | ===== 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, | ||
| + | * ein Video-Tutorial (Screencast) von 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. | ||
| + | |||
| + | |||
| + | ===== Anforderungen (MUSS) ===== | ||
| + | <WRAP box round center 80%> | ||
| + | **Mindestanforderungen (MUSS)** | ||
| + | * Backend läuft (Start über '' | ||
| + | * Mindestens **2 Tabellen** in MySQL (mit PK/FK) | ||
| + | * **CRUD** vollständig über API-Endpoints (z.B. ''/ | ||
| + | * Mindestens **eine JOIN-Route** (Daten aus 2 Tabellen) | ||
| + | * Mindestens **eine Aggregat-Route** (COUNT/ | ||
| + | * Zugriff auf DB **nicht** als '' | ||
| + | * Video-Tutorial, | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Inhalt des Video-Tutorials (Screencast, | ||
| + | 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, | ||
| + | - Erklärung des ERD in Crow’s-Foot-Notation (Tabellen, PK/FK, Datentypen) | ||
| + | - **Datenbank** | ||
| + | - Anlegen der Datenbank & Tabellen per SQL-Skript/ | ||
| + | - Import der Startdaten per SQL-Skript/ | ||
| + | - Anlegen und Berechtigen eines AppUsers (DCL) + kurzer Hinweis, warum diese Rechte sinnvoll sind | ||
| + | - **Backend / Server** | ||
| + | - Aufbau des Node.js/ | ||
| + | - Erklärung der wichtigsten Routen (z.B. '' | ||
| + | - **Tests mit Postman** | ||
| + | - Vorführen der CRUD-Endpunkte (Create, Read, Update, Delete) | ||
| + | - dabei **zeigen**, dass sich die Daten in der Datenbank wirklich ändern (WebStorm DB-Plugin) | ||
| + | - mindestens **eine JOIN-Demo** | ||
| + | - mindestens **eine Aggregat-Demo** | ||
| + | - sinnvolle HTTP-Statuscodes (z.B. 200, 201, 400, 404, 500) | ||
| + | - **Reflexion** | ||
| + | - Jede Person 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 | ||
| + | |||
| + | <WRAP box round center 80%> | ||
| + | **Wichtig für die Bewertung des Verständnisses** | ||
| + | * Beide Teammitglieder müssen im Video **hörbar** sein (eigene Erklärung, nicht nur „ja genau“). | ||
| + | * Beide müssen je einen **eigenen Teil** erklären (z.B. Person A: DB/SQL/DCL, Person B: API-Routen/ | ||
| + | * Sie müssen während dem Video zeigen, dass Sie Ihren eigenen Code verstehen (Warum dieser Endpoint? Warum dieser JOIN? Was bedeutet '' | ||
| + | </ | ||
| + | <WRAP center round info 60%> | ||
| + | Ein Beispiel-Video können Sie sich hier anschauen: | ||
| + | |||
| + | [[https:// | ||
| + | \\ | ||
| + | Für das Erstellen des Screencasts empfiehlt sich eine entsprechende Software zu nutzen: Ich habe die Trial Version von **Camtasia** benutzt (darum die Wassermarke). Camtasia können sie hier downloaden: https:// | ||
| + | \\ | ||
| + | Alternativ bietet auch Microsoft in Office365 die Software **Clipchamp** an, welche ähnliche Funktionalitäten hat. Mit Ihrem BZZ-Account müssten Sie dazu gratis Zugriff haben: https:// | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Abgabe – zu liefernde Lernprodukte===== | ||
| + | Folgende Teile sind Teil der Abgabe: | ||
| + | |||
| + | - **Video-Tutorial** (ca. 15 Min) | ||
| + | * Format: MP4 (H.264), max. FullHD (1920×1080), | ||
| + | * Max. Grösse: 1 GB (Bitrate ca. 3000–5000 kbps) | ||
| + | - **ERM und ERD** als PDF-Datei oder PNG | ||
| + | - **SQL-Skript (DDL)**: Anlegen der Tabellenstruktur (Als PDF/Word oder '' | ||
| + | - **SQL-Skript (DML)**: Import / Insert der Startdaten (Als PDF/Word oder '' | ||
| + | - **SQL-Skript (DCL)**: AppUser erstellen + Rechte vergeben (Als PDF/Word oder '' | ||
| + | - **Datenbank-Dump**: | ||
| + | - **Node.js-Projektordner** | ||
| + | * '' | ||
| + | * Server-Datei(en) (z.B. '' | ||
| + | |||
| + | <WRAP box round center 80%> | ||
| + | **Reproduzierbarkeit: | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Bewertungsraster (100 Punkte) ===== | ||
| + | |||
| + | ^ Bereich ^ Max. Punkte ^ Voll erfüllt ^ Teilweise erfüllt ^ Nicht erfüllt ^ | ||
| + | | **1. Projekt-Setup & Reproduzierbarkeit** | **8** | Start/Setup klar (alle Dateien sind vorhanden und ausführbar), | ||
| + | | **2. Datenmodell (ERM/ERD)** | **12** | Entitäten/ | ||
| + | | **3. MySQL-Implementierung (DDL + Datentypen + Constraints)** | **10** | DDL ausführbar, | ||
| + | | **4. Startdaten (DML)** | **6** | Mehrere realistische Datensätze, | ||
| + | | **5. AppUser & Rechte (DCL, Least Privilege)** | **6** | AppUser funktioniert, | ||
| + | | **6. API Design & Struktur** | **8** | Konsistente Pfade (''/ | ||
| + | | **7. CRUD über Backend → MySQL** | **10** | '' | ||
| + | | **8. JOIN-Route** | **6** | Mindestens eine Route mit JOIN, Ergebnis sinnvoll | JOIN vorhanden, aber Ergebnis unklar/ | ||
| + | | **9. Aggregat-Route (GROUP BY)** | **6** | Mindestens eine Aggregat-Route korrekt (COUNT/ | ||
| + | | **10. Validierung, | ||
| + | | **11. Video-Tutorial (Screencast) & Verständnisnachweis** | **20** | Struktur klar, beide erklären aktiv, Demo mit Postman + DB sichtbar, reflektiert, | ||
| + | |||
| + | <WRAP box round center 80%> | ||
| + | **Eigenleistung / Verständnis** | ||
| + | Sie müssen Ihre Lösung erklären können (SQL, Datenmodell, | ||
| + | Wenn zentrale Teile nicht fachlich korrekt begründet werden können, kann der entsprechende Bereich mit **0 Punkten** bewertet werden. | ||
| + | |||
| + | **Verspätete Abgaben** | ||
| + | Geben Sie die Projektarbeit verspätet ab, wird pro 24h-Verspätung eine ganze Note abgezogen. | ||
| + | |||
| + | **Die Projektarbeit ist der dritte Teil der Modulnote** und daher __nicht optional__. Bei Nicht-Abgabe (ohne Dispens/ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Notenberechnung (lineare Skala) ===== | ||
| + | <WRAP box round center 80%> | ||
| + | **Note = 1.0 + 5.0 × (Punkte / 100)** | ||
| + | (Beispiel: 80 Punkte → 1.0 + 5.0 × 0.80 = 5.0) | ||
| + | </ | ||