254 lines
5.4 KiB
Markdown
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*
|