Files
ihk-ausbildung/1-Ausbildungsjahr/LF5-Datenbanken-anpassen/LF5-Notizen.md

254 lines
5.4 KiB
Markdown

# LF 5: Software zur Verwaltung von Daten anpassen
> **1. Ausbildungsjahr** | Zeitrichtwert: **80 Stunden**
## Kernkompetenz
Die Schülerinnen und Schüler verfügen über die Kompetenz, Informationen mittels Daten abzubilden, diese Daten zu verwalten und dazu Software anzupassen.
---
## Lernziele
Nach diesem Lernfeld kannst du:
- [ ] Informationen als Daten abbilden und strukturieren
- [ ] Datenbankmodelle unterscheiden und anwenden
- [ ] ER-Diagramme erstellen
- [ ] SQL-Abfragen erstellen und ausführen
- [ ] Datenformate unterscheiden
- [ ] Software zur Datenverwaltung anpassen
- [ ] Testfälle entwickeln und Tests durchführen
---
## Datenbank-Grundlagen
### Datenbankmodelle
```
Datenbankmodelle
├── Hierarchisch
├── Netzwerkartig
├── Relational (am häufigsten)
├── Objektorientiert
└── NoSQL
```
### Relationales Datenbankmodell
**Grundbegriffe:**
| Begriff | Erklärung |
|---------|-----------|
| **Tabelle (Relation)** | Sammlung von Datensätzen |
| **Spalte (Attribut)** | Eigenschaft eines Datensatzes |
| **Zeile (Tupel)** | Ein Datensatz |
| **Primärschlüssel** | Eindeutige Identifikation |
| **Fremdschlüssel** | Verweis auf andere Tabelle |
---
## ER-Diagramm (Entity-Relationship)
### Elemente
```
┌─────────────┐ ┌─────────────┐
│ Entity │ │ Entity │
│ (Typ) │ │ (Typ) │
├─────────────┤ ├─────────────┤
│ Attribute │ │ Attribute │
│ PK: id │ │ PK: id │
└─────┬───────┘ └──────┬──────┘
│ N │ M
│ │
└──────────┬───────────┘
┌──────┴──────┐
│ Relationship │
│ (Beziehung) │
└──────────────┘
```
### Beziehungsgrade
- **1:1** (One-to-One)
- **1:N** (One-to-Many) - am häufigsten
- **M:N** (Many-to-Many)
---
## Normalisierung
### Normalformen
| NF | Regel | Ziel |
|----|-------|------|
| 1NF | Atomare Werte | Keine wiederholenden Gruppen |
| 2NF | Keine partielle Abhängigkeit | Vollständige funktionale Abhängigkeit vom PK |
| 3NF | Keine transitiven Abhängigkeiten | Keine Abhängigkeiten zwischen Nicht-Schlüsselattributen |
### Beispiel: 1NF → 2NF
**Nicht normalisiert:**
```
Bestellung(BestellID, Kunde, {Artikel, Menge})
```
**Normalisiert (1NF/2NF):**
```
Bestellung(BestellID, Kunde)
Bestellposition(BestellID, Artikel, Menge)
```
---
## SQL (Structured Query Language)
### DDL (Data Definition Language)
```sql
-- Tabelle erstellen
CREATE TABLE Kunde (
KundenID INT PRIMARY KEY,
Name VARCHAR(100) NOT NULL,
Email VARCHAR(255) UNIQUE,
ErstelltAm DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- Tabelle ändern
ALTER TABLE Kunde ADD Telefon VARCHAR(20);
-- Tabelle löschen
DROP TABLE Kunde;
```
### DML (Data Manipulation Language)
```sql
-- Daten einfügen
INSERT INTO Kunde (Name, Email)
VALUES ('Max Mustermann', 'max@example.com');
-- Daten aktualisieren
UPDATE Kunde
SET Email = 'neue@email.de'
WHERE KundenID = 1;
-- Daten löschen
DELETE FROM Kunde WHERE KundenID = 1;
-- Daten abfragen
SELECT * FROM Kunde;
```
### DQL (Data Query Language)
```sql
-- Einfache Abfrage
SELECT Name, Email FROM Kunde;
-- Mit Bedingung
SELECT * FROM Kunde
WHERE Name LIKE 'M%'
ORDER BY Name ASC;
-- Mit JOIN
SELECT b.BestellID, k.Name, a.Artikelname
FROM Bestellung b
JOIN Kunde k ON b.KundenID = k.KundenID
JOIN Bestellposition bp ON b.BestellID = bp.BestellID
JOIN Artikel a ON bp.ArtikelID = a.ArtikelID;
-- Aggregatfunktionen
SELECT COUNT(*) AS Anzahl,
SUM(Betrag) AS Gesamt
FROM Bestellung
WHERE YEAR(Datum) = 2024;
```
---
## Datenformate
### Strukturierte Daten
| Format | Beschreibung |
|--------|--------------|
| CSV | Komma-separierte Werte |
| JSON | JavaScript Object Notation |
| XML | eXtensible Markup Language |
| YAML | YAML Ain't Markup Language |
### Beispiel: CSV
```csv
ID;Name;Email
1;Max Mustermann;max@example.com
2;Anna Schmidt;anna@example.com
```
### Beispiel: JSON
```json
{
"kunden": [
{
"id": 1,
"name": "Max Mustermann",
"email": "max@example.com"
}
]
}
```
---
## Software-Anpassung
### Vorgehen
1. **Anforderungen analysieren**
2. **Datenmodell erweitern**
3. **SQL-Skripte erstellen**
4. **Anwendung anpassen**
5. **Testfälle definieren**
6. **Testen und dokumentieren**
### Testmethoden
- **Unit-Tests**: Einzelne Komponenten testen
- **Integrationstests**: Zusammenspiel testen
- **Systemtests**: Gesamtsystem testen
- **Abnahmetests**: Mit Kunden testen
---
## Handlungsphasen
1. **Informieren**: Daten analysieren, Anforderungen erheben
2. **Planen**: Datenmodell entwerfen, Testfälle definieren
3. **Durchführen**: Software anpassen, Tests durchführen
4. **Überprüfen**: Funktion prüfen, Qualität sichern
5. **Reflektieren**: Prozess evaluieren
---
## Prüfungsrelevanz
- Fundament für LF 8 (Daten bereitstellen)
- Wichtig für Teil 1 der Abschlussprüfung
- SQL-Kenntnisse werden vorausgesetzt
---
## Querverweise
- [[LF4-Schutzbedarfsanalyse|Vorher: LF 4]]
- [[LF8-Daten-bereitstellen|Nachher: LF 8]]
- [[Datenbanken|Datenbanken-Vertiefung]]
---
*Stand: 2024 | Quelle: KMK Rahmenlehrplan 13.12.2019*