|
| 1 | +## Lernziele |
| 2 | + |
| 3 | +- Erstellen eines **kompletten Datenbankprojekts** von der Analyse bis zur Umsetzung |
| 4 | +- Anwenden von **ER-Modellierung**, **Relationsschema** und **SQL-Befehlen** |
| 5 | +- Üben von **`ALTER TABLE`**, um Tabellen nachträglich zu erweitern oder zu ändern |
| 6 | +- Arbeiten mit **Subqueries** statt JOINs |
| 7 | +- Verständnis von **Beziehungen, Kardinalitäten** und **Schlüsseln** |
| 8 | + |
| 9 | +--- |
| 10 | + |
| 11 | +## Aufgabe |
| 12 | + |
| 13 | +Du arbeitest im Forschungslabor **„Prof. Linden Systems“**, das eine Datenbank für ein digitales **Pocketmonster-Register** entwickelt. |
| 14 | +Diese Datenbank soll Informationen über **Pocketmonster**, **Attacken**, **Elementtypen**, **Trainer** und **Teams** speichern. |
| 15 | + |
| 16 | +Ziel ist es, ein funktionierendes Datenbanksystem zu entwerfen, umzusetzen und anschließend **nachträglich zu erweitern**. |
| 17 | + |
| 18 | +--- |
| 19 | + |
| 20 | +## Projektsituation |
| 21 | + |
| 22 | +In der Welt der **Pocketmonster** gibt es viele verschiedene Arten. |
| 23 | +Jedes Pocketmonster hat einen **Namen** und bestimmte **Basiswerte**, wie **Lebenspunkte**, **Angriff** und **Verteidigung**. |
| 24 | +Ein Pocketmonster kann einem oder mehreren **Elementtypen** zugeordnet sein (z. B. Feuer, Wasser, Elektro). |
| 25 | + |
| 26 | +Pocketmonster können verschiedene **Attacken** erlernen. |
| 27 | +Eine Attacke hat einen **Namen**, eine **Kategorie** (z. B. „Physisch“, „Spezial“ oder „Status“) und eine **Stärke**. |
| 28 | +Einige Attacken werden erst **ab einem bestimmten Level** gelernt. |
| 29 | + |
| 30 | +Viele Pocketmonster **entwickeln sich** im Laufe des Trainings. |
| 31 | +Dabei entsteht aus einem Pocketmonster ein neues, stärkeres. |
| 32 | +In der Datenbank soll festgehalten werden, **welches Pocketmonster sich in welches entwickelt** und **ab welchem Level** dies geschieht. |
| 33 | + |
| 34 | +Pocketmonster gehören zu **Trainern**, die sie fangen und trainieren. |
| 35 | +Jeder Trainer hat einen **Spitznamen** und kommt aus einer bestimmten **Region**. |
| 36 | +Ein Trainer kann mehrere **Teams** besitzen (z. B. ein Hauptteam und ein Ersatzteam). |
| 37 | +Ein Team besteht aus bis zu **sechs Pocketmonstern**, die im Team eine **Position** (1–6) haben. |
| 38 | +Ein Pocketmonster kann im Team zusätzlich einen **Spitznamen** haben. |
| 39 | + |
| 40 | +--- |
| 41 | + |
| 42 | +## Arbeitsschritte |
| 43 | + |
| 44 | +1. **Analyse des Textes** |
| 45 | + - Finde alle wichtigen **Entitäten** (z. B. Pocketmonster, Trainer, Team, Typ, Attacke …). |
| 46 | + - Überlege dir sinnvolle **Attribute**, **Primärschlüssel** und **Beziehungen** (mit Kardinalitäten). |
| 47 | + |
| 48 | +2. **ER-Diagramm erstellen** |
| 49 | + - Verwende Chen-Notation oder Crow’s-Foot-Notation. |
| 50 | + - Kennzeichne Primärschlüssel, Fremdschlüssel und Beziehungstypen. |
| 51 | + - Überlege, wie du die **Entwicklung** als Selbstbeziehung darstellen kannst. |
| 52 | + |
| 53 | +3. **Relationsschema ableiten** |
| 54 | + - Übertrage dein Modell in Tabellenform. |
| 55 | + - Definiere Primär- und Fremdschlüssel. |
| 56 | + - Lege Zwischentabellen für n:m-Beziehungen an. |
| 57 | + |
| 58 | +4. **SQL-Datenbank erstellen** |
| 59 | + - Erstelle alle Tabellen mit `CREATE TABLE`. |
| 60 | + - Verwende sinnvolle Datentypen und Constraints (`NOT NULL`, `CHECK`, `UNIQUE`). |
| 61 | + - Füge mehrere **Beispiel-Datensätze** pro Tabelle ein (`INSERT INTO`). |
| 62 | + |
| 63 | +5. **Tabellen anpassen mit ALTER TABLE** |
| 64 | + - Ergänze neue Anforderungen nachträglich: |
| 65 | + - **Beispiel 1:** Füge bei Pocketmonster ein neues Attribut `height` (Größe in Metern) hinzu. |
| 66 | + - **Beispiel 2:** Erweitere die Attacken-Tabelle um ein Attribut `accuracy` (Treffsicherheit). |
| 67 | + - **Beispiel 3:** Ergänze bei Trainern eine Spalte `birthyear` (Geburtsjahr). |
| 68 | + - **Beispiel 4:** Füge in der Team-Tabelle eine Fremdschlüssel-Beziehung zur Region hinzu, falls du Regionen als eigene Tabelle modellierst. |
| 69 | + - Teste deine Änderungen, indem du neue Daten einfügst oder bestehende aktualisierst. |
| 70 | + |
| 71 | +6. **SQL-Abfragen** |
| 72 | + - Verwende `IN`, `EXISTS`, `NOT IN`, `GROUP BY`, `ORDER BY`, `UPDATE`, `DELETE`, usw. |
| 73 | + - Beispielhafte Fragestellungen: |
| 74 | + - Finde alle Pocketmonster eines bestimmten Typs. |
| 75 | + - Zeige alle Attacken eines Pocketmonsters mit Mindestlevel. |
| 76 | + - Finde Pocketmonster, die sich entwickeln. |
| 77 | + - Zähle Pocketmonster pro Elementtyp. |
| 78 | + - Zeige alle Teams eines Trainers. |
| 79 | + - Aktualisiere Werte (z. B. füge `height` für ein Pocketmonster hinzu). |
| 80 | + |
| 81 | +--- |
| 82 | + |
| 83 | +## Erweiterungsideen |
| 84 | + |
| 85 | +- Füge eine neue Entität **Region** hinzu und verknüpfe sie mit den Trainern. |
| 86 | +- Ergänze ein Attribut **Legendary** (BOOLEAN) in der Pocketmonster-Tabelle, um legendäre Wesen zu kennzeichnen. |
| 87 | +- Ändere den Datentyp eines Attributs mit `ALTER TABLE ... ALTER COLUMN ...`. |
| 88 | +- Füge zusätzliche **Constraints** hinzu (z. B. `CHECK (height > 0)` oder `birthyear BETWEEN 1950 AND 2020`). |
| 89 | + |
| 90 | +--- |
| 91 | + |
| 92 | +## Abgabe |
| 93 | + |
| 94 | +- ER-Diagramm (digital oder Foto, z. B. draw.io) |
| 95 | +- SQL-Skript mit |
| 96 | + - `CREATE TABLE` |
| 97 | + - `INSERT INTO` |
| 98 | + - mehreren `ALTER TABLE`-Befehlen |
| 99 | +- 5–8 eigene SQL-Abfragen |
| 100 | +- Kurze Reflexion (Was war schwierig? Welche Änderungen hast du mit `ALTER TABLE` durchgeführt?) |
| 101 | + |
| 102 | +--- |
| 103 | + |
| 104 | +## Reflexionsfragen |
| 105 | + |
| 106 | +- Welche Änderungen hast du an deiner Datenbankstruktur vorgenommen? |
| 107 | +- Wann ist es sinnvoll, `ALTER TABLE` zu verwenden? |
| 108 | +- Kannst du erkennen, welche Pocketmonster sich entwickeln und zu wem? |
| 109 | +- Kannst du sehen, welche Attacken ein Pocketmonster beherrscht? |
| 110 | +- Kannst du Teams und deren Trainer abfragen? |
| 111 | +- Welche Vorteile bringt eine klare Struktur bei der Erweiterung einer Datenbank? |
0 commit comments