# 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*