Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m290_guko:leistungsbeurteilungen:03_lb:c_usecase [2026/08/13 16:06] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m290_guko:leistungsbeurteilungen:03_lb:c_usecase [2026/08/13 16:22] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden 74.7.227.136 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== LB03 - Projektbeschreibungen ====== | ||
| + | |||
| + | ===== Allgemeine Anforderungen an alle Projekte ===== | ||
| + | |||
| + | Jedes Team wählt genau **einen** Use Case. Pro Klasse darf jeder Use Case **nur einmal** vergeben werden. | ||
| + | |||
| + | <WRAP center round box 80%> | ||
| + | **Technische Minimalanforderungen** | ||
| + | |||
| + | * Mindestens **2 Tabellen** mit einer **1: | ||
| + | * Mindestens **1 JOIN-Abfrage** (3er-Teams mind. 2 JOIN-Abfragen) | ||
| + | * Mindestens **1 Aggregatfunktion** (z.B. COUNT, AVG, MIN, MAX) | ||
| + | * Vollständige **CRUD-Operationen** auf der Haupttabelle: | ||
| + | - Create (POST) | ||
| + | - Read (GET – Liste + Detail) | ||
| + | - Update (PUT) | ||
| + | - Delete (DELETE) | ||
| + | * Umsetzung als **REST-API** mit Express und Zugriff auf MySQL via AppUser (nicht Root) | ||
| + | * Test und Demonstration über **Postman** | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Ausgangslage ==== | ||
| + | |||
| + | Sie reisen gerne oder möchten Ihre vergangenen Reisen übersichtlich dokumentieren. | ||
| + | Bisher liegen Informationen wie Zielort, Jahr, Kosten und Erinnerungen verstreut in Fotos, Notizen oder im Kopf. | ||
| + | Eine kleine Reise-Datenbank soll helfen, alle besuchten Orte und Bewertungen zentral zu verwalten. | ||
| + | |||
| + | ==== Vorgehen ==== | ||
| + | |||
| + | * Modellieren Sie mindestens folgende Entitäten: | ||
| + | * **Reise** (z.B. Stadt, Jahr, Kommentar, Sterne-Bewertung, | ||
| + | * **Land** oder **Kontinent** (z.B. Name, Kontinent, Kürzel) | ||
| + | * Verknüpfen Sie Reise mit Land/ | ||
| + | * Legen Sie Startdaten an (z.B. mindestens 10 Reisen in verschiedene Länder/ | ||
| + | * Implementieren Sie CRUD-Routen für Reisen (z.B. ''/ | ||
| + | * Implementieren Sie mindestens: | ||
| + | * eine Route mit **JOIN** (z.B. „Alle Reisen inkl. Ländernamen und Kontinent anzeigen“) | ||
| + | * eine Route mit **Aggregatfunktion** (z.B. „Anzahl Reisen pro Kontinent“, | ||
| + | * Optional erstellen Sie eine dritte Tabelle mit Angaben zu den Reisenden (Namen, Email-Adresse, | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Ausgangslage ==== | ||
| + | |||
| + | Sie schauen gerne Filme und möchten Ihre Lieblingsfilme inkl. Bewertungen systematisch erfassen. | ||
| + | Film-Infos stehen zwar auf Plattformen wie IMDb oder Letterboxd, aber Ihre persönliche Sicht fehlt dort. | ||
| + | Eine eigene Film-Datenbank soll diese Lücke schliessen. | ||
| + | |||
| + | ==== Vorgehen ==== | ||
| + | |||
| + | * Modellieren Sie mindestens folgende Entitäten: | ||
| + | * **Film** (Titel, Erscheinungsjahr, | ||
| + | * **Person** oder **Cast** (Name, Rolle-Typ: Schauspieler: | ||
| + | * Zwischen Film und Person besteht eine **n: | ||
| + | * Legen Sie Daten für mehrere Filme mit unterschiedlichen Genres an. | ||
| + | * Implementieren Sie CRUD-Routen für Filme (z.B. ''/ | ||
| + | * Implementieren Sie: | ||
| + | * eine JOIN-Route (z.B. „Alle Filme mit Regisseur: | ||
| + | * eine Aggregat-Route (z.B. „Durchschnittliche eigene Bewertung pro Genre“, „Anzahl Filme pro Genre“) | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Ausgangslage ==== | ||
| + | |||
| + | Sie lesen gerne und möchten festhalten, welche Bücher Ihnen gefallen haben, welche Verlage sie herausgeben und wie Ihre persönliche Meinung dazu ist. | ||
| + | Die Bewertungen auf Online-Shops reichen Ihnen dafür nicht. | ||
| + | |||
| + | ==== Vorgehen ==== | ||
| + | |||
| + | * Modellieren Sie mindestens folgende Entitäten: | ||
| + | * **Buch** (Titel, Erscheinungsjahr, | ||
| + | * **Autor: | ||
| + | * Beziehung: 1:n (eine Autor:in – viele Bücher). | ||
| + | * Fügen Sie optional eine Entität **Verlag** hinzu (Buch – Verlag als 1:n). | ||
| + | * Legen Sie Daten für mehrere Bücher und Autor:innen an. | ||
| + | * Implementieren Sie CRUD-Routen für Bücher (z.B. ''/ | ||
| + | * Implementieren Sie: | ||
| + | * eine JOIN-Route (z.B. „Alle Bücher inkl. Autor:in und Verlag anzeigen“) | ||
| + | * eine Aggregat-Route (z.B. „Anzahl Bücher pro Kategorie“, | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Ausgangslage ==== | ||
| + | |||
| + | Sie sind gerne in Cafés unterwegs (z.B. im Kanton Zürich oder Ihrem Heimatkanton) und möchten Ihre Lieblingsorte mit Notizen und Bewertungen speichern. | ||
| + | Online-Karten zeigen zwar Standorte, aber nicht Ihre persönliche Meinung. | ||
| + | |||
| + | ==== Vorgehen ==== | ||
| + | |||
| + | * Modellieren Sie mindestens folgende Entitäten: | ||
| + | * **Kaffeehaus** (Name, Adresse, Gemeinde, Lieblingsgetränk, | ||
| + | * **Ort/ | ||
| + | * Beziehung: 1:n (eine Gemeinde/ | ||
| + | * Legen Sie Daten mit mehreren Kaffeehäusern in verschiedenen Gemeinden/ | ||
| + | * Implementieren Sie CRUD-Routen für Kaffeehäuser (z.B. ''/ | ||
| + | * Implementieren Sie: | ||
| + | * eine JOIN-Route (z.B. „Alle Kaffeehäuser inkl. Gemeindename und Kanton anzeigen“) | ||
| + | * eine Aggregat-Route (z.B. „Durchschnittliche Bewertung pro Gemeinde“, | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Ausgangslage ==== | ||
| + | |||
| + | Sie möchten Geburtstage von Freund: | ||
| + | Kalender-Apps können das teilweise, aber ohne zusätzliche Informationen zu Beziehungen oder Sternzeichen. | ||
| + | |||
| + | ==== Vorgehen ==== | ||
| + | |||
| + | * Modellieren Sie mindestens folgende Entitäten: | ||
| + | * **Person** (Name, Geburtsdatum, | ||
| + | * **Sternzeichen** (Name, Zeitraum) | ||
| + | * Verbindung: 1:n oder 1:1 (jedem Geburtstag wird ein Sternzeichen zugeordnet). | ||
| + | * Legen Sie Daten mit verschiedenen Personen an (unterschiedliche Monate/ | ||
| + | * Implementieren Sie CRUD-Routen für Personen (z.B. ''/ | ||
| + | * Implementieren Sie: | ||
| + | * eine JOIN-Route (z.B. „Alle Personen inkl. Sternzeichen anzeigen“) | ||
| + | * eine Aggregat-Route (z.B. „Anzahl Geburtstage pro Monat“, „Anzahl Personen pro Sternzeichen“) | ||
| + | |||
| + | Hinweise: Da es sich in diesem Case unter Umständen um personenbezogene Daten handelt und diese entsprechenden Datenschutz geniessen, können Sie hier auch mit fiktiven Namen und Daten arbeiten. | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Ausgangslage ==== | ||
| + | |||
| + | Sie verfolgen ein oder mehrere Sportteams (Fussball, Eishockey, Volleyball etc.) und möchten Kader, Liga-Zugehörigkeit und Trainer: | ||
| + | Online-Statistiken sind umfangreich, | ||
| + | |||
| + | ==== Vorgehen ==== | ||
| + | |||
| + | * Modellieren Sie mindestens folgende Entitäten: | ||
| + | * **Team** (Name, Sportart, Liga, Heimatort) | ||
| + | * **Spieler: | ||
| + | * Beziehung: 1:n (ein Team – viele Spieler: | ||
| + | * Optional: Entität **Trainer: | ||
| + | * Legen Sie Daten für mindestens 2–3 Teams mit mehreren Spieler: | ||
| + | * Implementieren Sie CRUD-Routen für Teams oder Spieler: | ||
| + | * Implementieren Sie: | ||
| + | * eine JOIN-Route (z.B. „Alle Spieler: | ||
| + | * eine Aggregat-Route (z.B. „Anzahl Spieler: | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Ausgangslage ==== | ||
| + | |||
| + | Sie besuchen gerne Museen und möchten eine Übersicht über Ihre Lieblingsmuseen in der Schweiz haben, inkl. Kategorie, Besucherzahlen und besonderen Ausstellungen. | ||
| + | Tourismus-Webseiten liefern viele Infos, aber keine persönliche Filterung. | ||
| + | |||
| + | ==== Vorgehen ==== | ||
| + | |||
| + | * Modellieren Sie mindestens folgende Entitäten: | ||
| + | * **Museum** (Name, Ort, Kanton, Kategorie, Besucherzahl pro Jahr, berühmtestes Ausstellungsstück) | ||
| + | * **Ausstellung** (Titel, Künstler: | ||
| + | * Beziehung: 1:n (ein Museum – viele Ausstellungen). | ||
| + | * Legen Sie Daten mit mehreren Museen und zugehörigen Ausstellungen an. | ||
| + | * Implementieren Sie CRUD-Routen für Museen oder Ausstellungen (z.B. ''/ | ||
| + | * Implementieren Sie: | ||
| + | * eine JOIN-Route (z.B. „Alle Ausstellungen inkl. Museumsname anzeigen“) | ||
| + | * eine Aggregat-Route (z.B. „Anzahl Ausstellungen pro Museum“, „Durchschnittliche Besucherzahl pro Kategorie“) | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Ausgangslage ==== | ||
| + | |||
| + | Sie hören viel Musik und möchten Ihre Lieblingssongs mit Album, Artist und Genre verwalten. | ||
| + | Streamingdienste haben zwar Playlists, aber keine eigene kleine Statistik über Ihre Lieblingsstücke. | ||
| + | |||
| + | ==== Vorgehen ==== | ||
| + | |||
| + | * Modellieren Sie mindestens folgende Entitäten: | ||
| + | * **Song** (Titel, Dauer, eigene Bewertung, Kommentar) | ||
| + | * **Artist** (Name, Herkunft) | ||
| + | * Optional: **Album** (Titel, Erscheinungsjahr) | ||
| + | * Beziehung: 1:n (ein Artist – viele Songs), ggf. 1:n (ein Album – viele Songs). | ||
| + | * Legen Sie Daten mit Songs verschiedener Artists und Genres an. | ||
| + | * Implementieren Sie CRUD-Routen für Songs (z.B. ''/ | ||
| + | * Implementieren Sie: | ||
| + | * eine JOIN-Route (z.B. „Alle Songs inkl. Artist- und Albumname anzeigen“) | ||
| + | * eine Aggregat-Route (z.B. „Anzahl Songs pro Genre“, „Durchschnittliche Bewertung pro Artist“) | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Ausgangslage ==== | ||
| + | |||
| + | Sie interessieren sich für Fotografie oder Video und haben den Überblick über verschiedene Kamera-Modelle, | ||
| + | Eine kleine Datenbank soll dabei helfen, Modelle zu vergleichen. | ||
| + | |||
| + | ==== Vorgehen ==== | ||
| + | |||
| + | * Modellieren Sie mindestens folgende Entitäten: | ||
| + | * **Kamera** (Modellname, | ||
| + | * **Hersteller** (Name, Land) | ||
| + | * Beziehung: 1:n (ein Hersteller – viele Kameras). | ||
| + | * Legen Sie Daten mit mehreren Herstellern und Kamera-Modellen an. | ||
| + | * Implementieren Sie CRUD-Routen für Kameras (z.B. ''/ | ||
| + | * Implementieren Sie: | ||
| + | * eine JOIN-Route (z.B. „Alle Kameras inkl. Herstellernamen anzeigen“) | ||
| + | * eine Aggregat-Route (z.B. „Durchschnittlicher Preis pro Line“, „Anzahl Kameras pro Hersteller“) | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Ausgangslage ==== | ||
| + | |||
| + | Sie interessieren sich für Mode und möchten Designer: | ||
| + | Ziel ist eine kleine Übersicht über Lieblingsdesigner: | ||
| + | |||
| + | ==== Vorgehen ==== | ||
| + | |||
| + | * Modellieren Sie mindestens folgende Entitäten: | ||
| + | * **Designer: | ||
| + | * **Marke/ | ||
| + | * Optional: Entität **Modestück** (Bezeichnung, | ||
| + | * Legen Sie Daten mit mehreren Designer: | ||
| + | * Implementieren Sie CRUD-Routen (z.B. für Designer: | ||
| + | * Implementieren Sie: | ||
| + | * eine JOIN-Route (z.B. „Alle Designer: | ||
| + | * eine Aggregat-Route (z.B. „Anzahl Designer: | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Ausgangslage ==== | ||
| + | |||
| + | Sie verbringen gerne Zeit in der Natur und möchten Ihre Lieblingsorte (Seen, Berge, Wälder etc.) dokumentieren. | ||
| + | Neben der Position interessieren Sie auch Erreichbarkeit, | ||
| + | |||
| + | ==== Vorgehen ==== | ||
| + | |||
| + | * Modellieren Sie mindestens folgende Entitäten: | ||
| + | * **Ort** (Name, Beschreibung, | ||
| + | * **Anreise** (Verkehrsmittel: | ||
| + | * Beziehung: 1:n (ein Ort – mehrere Anreisevarianten) oder 1:1 (ein Ort – eine typische Anreise). | ||
| + | * Legen Sie Daten mit mehreren Naturorten in verschiedenen Kantonen an. | ||
| + | * Implementieren Sie CRUD-Routen für Orte (z.B. ''/ | ||
| + | * Implementieren Sie: | ||
| + | * eine JOIN-Route (z.B. „Ort inkl. typischer Anreise anzeigen“) | ||
| + | * eine Aggregat-Route (z.B. „Durchschnittliche Bewertung pro Kanton“, „Anzahl Orte pro Umgebungstyp“) | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Ausgangslage ==== | ||
| + | |||
| + | Sie schauen gerne Serien und möchten festhalten, welche davon Sie gesehen haben, wie viele Staffeln/ | ||
| + | Grosse Datenbanken liefern viele Infos, aber nicht Ihre persönliche Bewertung. | ||
| + | |||
| + | ==== Vorgehen ==== | ||
| + | |||
| + | * Modellieren Sie mindestens folgende Entitäten: | ||
| + | * **Serie** (Titel, Synopsis, Genre, Studio, Streamingdienst/ | ||
| + | * **Schauspieler: | ||
| + | * Beziehung: 1:n oder n:m (eine Serie – viele Schauspieler: | ||
| + | * Legen Sie Daten mit mehreren Serien unterschiedlicher Genres an. | ||
| + | * Implementieren Sie CRUD-Routen für Serien (z.B. ''/ | ||
| + | * Implementieren Sie: | ||
| + | * eine JOIN-Route (z.B. „Alle Serien inkl. Schauspieler: | ||
| + | * eine Aggregat-Route (z.B. „Durchschnittliche Bewertung pro Genre“, „Gesamtanzahl Episoden pro Streamingdienst“) | ||