Skip to content

Commit 24384c2

Browse files
committed
added: database project pocketmonsters
1 parent f8c18c9 commit 24384c2

File tree

2 files changed

+115
-0
lines changed

2 files changed

+115
-0
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
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?

script/mkdocs.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ nav:
5757
# - Projekte:
5858
# - 2.Jahrgang: INFI/2AHWII/projects/01_project_relational-database.md
5959
- Lehrplan: INFI/00_lehrplan.md
60+
- Projekte:
61+
- Datenbanken:
62+
- 3.Jahrgang:
63+
- Pocketmonster Datenbank: INFI/2AHWII/projects/01_project_pocketmonsters.md
6064
- Skript:
6165
- Datenbanken:
6266
- Einführung Datenbanken: INFI/2AHWII/01_why-databases.md

0 commit comments

Comments
 (0)