Initial commit: IHK Ausbildung materials
This commit is contained in:
253
1-Ausbildungsjahr/LF5-Datenbanken-anpassen/LF5-Notizen.md
Normal file
253
1-Ausbildungsjahr/LF5-Datenbanken-anpassen/LF5-Notizen.md
Normal file
@@ -0,0 +1,253 @@
|
||||
# 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*
|
||||
Reference in New Issue
Block a user