IHK-Vorbereitung · Fachinformatiker Systemintegration
UML ist eine standardisierte grafische Notation zur Modellierung von Software- und Systemarchitekturen. Für die IHK-Prüfung (AP1 + AP2) sind insbesondere drei Diagrammtypen prüfungsrelevant:
Abläufe, Prozesse und Algorithmen; vergleichbar mit einem Flussdiagramm.
Statische Struktur: Klassen, Attribute, Methoden und ihre Beziehungen.
Systemgrenzen, Akteure und Anwendungsfälle aus Nutzersicht.
Zeigt den Ablauf von Aktivitäten, Verzweigungen und parallelen Abläufen. Prüfungsrelevant: Elemente lesen, zeichnen und einen Algorithmus oder Geschäftsprozess modellieren.
| Symbol | Name | Bedeutung |
|---|---|---|
| ● | Startknoten | Ausgefüllter schwarzer Kreis – Beginn des Ablaufs |
| ◉ | Endknoten | Kreis mit Punkt – Ende des gesamten Ablaufs |
| [ ] | Aktion | Abgerundetes Rechteck – einzelne ausführbare Tätigkeit |
| ◇ | Entscheidung/Zusammenführung | Raute – Verzweigung mit Bedingungen in eckigen Klammern [Bedingung] |
| ━━ | Synchronisation (Fork/Join) | Breiter schwarzer Balken – parallele Abläufe starten oder zusammenführen |
| | | | Swimlane | Vertikale Unterteilung – Verantwortungsbereiche von Akteuren |
Beispiel: Bestellprozess
Modelliert Klassen mit Attributen (Daten) und Methoden (Verhalten) sowie deren Beziehungen untereinander. Jede Klasse wird als dreistufiges Rechteck dargestellt.
| Beziehungstyp | Symbol | Bedeutung / Beispiel |
|---|---|---|
| Assoziation | ———— | allgemeine Verbindung: Kunde kauft Produkt |
| Aggregation | ◇———— | „Teil-von" (Teile können ohne Ganzes existieren): Abteilung hat Mitarbeiter |
| Komposition | ◆———— | starke Teil-von (Teile existieren nur im Ganzen): Rechnung hat Positionen |
| Vererbung | ▷———— | Generalisierung: Pkw erbt von Fahrzeug |
| Realisierung | ▷- - - | Klasse implementiert Interface |
Beispiel: Onlineshop
+ = public, – = private, # = protected. Multiplizitäten (1, *, 0..1, 1..*) müssen korrekt an die Linie geschrieben werden.
Zeigt, welche Akteure welche Funktionen (Use Cases) eines Systems nutzen. Gibt einen Überblick aus Anwenderperspektive – ohne technische Details.
| Element | Symbol | Bedeutung |
|---|---|---|
| Akteur | Strichmännchen | Person, System oder Rolle außerhalb des Systems |
| Use Case | Ellipse | Anwendungsfall / Funktion des Systems |
| Systemgrenze | Rechteck | Umrahmt alle Use Cases des Systems |
| «include» | gestrichelt → | Ein Use Case ruft einen anderen immer auf (Pflichtbestandteil) |
| «extend» | gestrichelt → | Ein Use Case kann optional erweitert werden (nur unter Bedingung) |
| Generalisierung | Vererbungspfeil | Akteur/Use-Case erbt von allgemeinerem |
Beispiel: Bibliothekssystem
Das ERM ist ein Datenmodell zur konzeptuellen Darstellung von Daten und ihren Beziehungen – unabhängig von einer konkreten Datenbank. Es bildet die Grundlage für das relationale Datenbankmodell.
| Symbol | Bezeichnung | Bedeutung |
|---|---|---|
| □ | Entity (Entität) | Objekt der realen Welt, das eindeutig identifizierbar ist (z.B. Kunde, Artikel) |
| ◇ | Relationship (Beziehung) | Verbindung zwischen zwei oder mehr Entitäten (z.B. kauft, enthält) |
| ○ | Attribut | Eigenschaft einer Entität oder Beziehung (z.B. Name, Preis) |
| ○ | Schlüsselattribut | Attribut zur eindeutigen Identifizierung einer Entität (unterstrichen) |
Kardinalitäten beschreiben, wie viele Instanzen einer Entität mit wie vielen Instanzen einer anderen in Beziehung stehen können. In der IHK-Prüfung sind beide Notationen geläufig.
(min, max) an jedem Ende der Beziehung. Beispiel: Mitarbeiter (0,n) — arbeitet_in — (1,1) Abteilung bedeutet: Ein Mitarbeiter arbeitet in genau einer Abteilung, eine Abteilung hat 0 bis n Mitarbeiter.
Das relationale Modell stellt alle Daten als Tabellen (Relationen) dar. Bei der Überführung gelten folgende Regeln:
Beispiel: Bestellung ↔ Produkt (N:M)
| Begriff | Bedeutung |
|---|---|
| Relation | Tabelle mit Zeilen und Spalten |
| Tupel | Zeile / Datensatz einer Tabelle |
| Attribut | Spalte / Eigenschaft einer Tabelle |
| Primärschlüssel (PK) | Eindeutiger Identifikator jedes Tupels – darf nicht NULL sein |
| Fremdschlüssel (FK) | Verweis auf den PK einer anderen (oder derselben) Tabelle – sichert referenzielle Integrität |
| Domäne | Wertebereich / erlaubte Werte eines Attributs (z.B. INTEGER, VARCHAR(50)) |
| Referentielle Integrität | FK-Wert muss in referenzierter Tabelle existieren oder NULL sein |
Normalisierung ist ein schrittweises Verfahren, um Redundanzen und Anomalien in Datenbanken zu vermeiden. Voraussetzung für jede Normalform ist die Atomisierung: Jeder Attributwert muss atomar (unteilbar) sein – keine Listen, keine zusammengesetzten Werte in einer Zelle.
Erste Normalform (1NF)
Regel: Alle Attributwerte sind atomar (unteilbar). Keine Mehrfachwerte / Wiederholungsgruppen in einer Spalte. Jede Zeile ist durch einen Primärschlüssel eindeutig identifizierbar.
Verletzung: Spalte „Telefon" enthält „0221/12345, 0151/98765" → aufteilen in separate Zeilen/Spalten.
Zweite Normalform (2NF)
Voraussetzung: 1NF muss erfüllt sein.
Regel: Jedes Nicht-Schlüsselattribut ist voll funktional abhängig vom gesamten Primärschlüssel – nicht nur von einem Teil davon. Relevant nur bei zusammengesetzten PKs!
Verletzung: Tabelle Bestellposition(BestellID, ProduktID, Produktname, Menge). „Produktname" hängt nur von ProduktID ab, nicht vom gesamten PK → Produktname in eigene Tabelle Produkt auslagern.
Dritte Normalform (3NF)
Voraussetzung: 2NF muss erfüllt sein.
Regel: Es darf keine transitive Abhängigkeit geben – kein Nicht-Schlüsselattribut darf von einem anderen Nicht-Schlüsselattribut abhängen.
Verletzung: Tabelle Mitarbeiter(MitarbeiterID, AbteilungsID, Abteilungsname). „Abteilungsname" hängt von AbteilungsID ab (transitiv über PK) → Abteilung in eigene Tabelle auslagern.
Ausgangstabelle (unnormalisiert):
| AuftragID | Kunde | Ort | PLZ | Artikel | Preis |
|---|---|---|---|---|---|
| 1001 | Müller | Köln | 50667 | Laptop, Maus | 999, 25 |
| 1002 | Müller | Köln | 50667 | Monitor | 299 |
Artikel und Preis atomarisieren → je eine Zeile pro Artikel. Primärschlüssel: (AuftragID, Artikel)
Preis hängt nur von Artikel ab, nicht von AuftragID → Artikel + Preis in separate Tabelle Artikel(ArtikelID, Bezeichnung, Preis). Kunde, Ort, PLZ hängen nur von AuftragID ab → in Auftrag-Tabelle.
Ort hängt von PLZ ab (transitiv) → PLZ + Ort in separate Tabelle Ort(PLZ, Ort). Ergebnis: 4 Tabellen – Auftrag, Kunde, Artikel, Ort – vollständig normalisiert.
Data Definition Language
Datenbankstruktur anlegen/ändern: CREATE, ALTER, DROP, TRUNCATE
Data Manipulation Language
Daten einfügen/ändern/löschen: INSERT, UPDATE, DELETE
Data Query Language
Daten abfragen: SELECT
Data Control Language
Zugriffsrechte steuern: GRANT, REVOKE
| Constraint | Bedeutung |
|---|---|
PRIMARY KEY | Eindeutig + NOT NULL – Hauptidentifikator |
FOREIGN KEY | Verweis auf PK einer anderen Tabelle |
NOT NULL | Wert muss angegeben werden |
UNIQUE | Wert darf nur einmal vorkommen (NULL erlaubt) |
DEFAULT | Standardwert falls kein Wert angegeben |
CHECK | Wertebereichseinschränkung: z.B. CHECK (preis > 0) |
ON DELETE CASCADE | Datensätze in Kindtabelle werden mitgelöscht |
Reihenfolge der Klauseln (Auswertungsreihenfolge in Klammern):
| JOIN-Typ | Ergebnis | Beispiel-Anwendungsfall |
|---|---|---|
INNER JOIN | Nur Zeilen, die in beiden Tabellen übereinstimmen | Kunden mit mindestens einer Bestellung |
LEFT JOIN | Alle Zeilen der linken Tabelle, rechts ggf. NULL | Alle Kunden, auch ohne Bestellung |
RIGHT JOIN | Alle Zeilen der rechten Tabelle, links ggf. NULL | Alle Bestellungen, auch ohne zugeordnetem Kunden |
FULL OUTER JOIN | Alle Zeilen aus beiden Tabellen, NULLs wo keine Übereinstimmung | Vollständige Gegenüberstellung |
CROSS JOIN | Kreuzprodukt: jede Zeile mit jeder | Kombinationstabellen, selten in Praxis |
| Funktion / Konzept | Bedeutung / Beispiel |
|---|---|
COUNT(*) | Anzahl Zeilen (inkl. NULL); COUNT(spalte) ignoriert NULLs |
SUM(spalte) | Summe aller Werte |
AVG(spalte) | Durchschnitt (ignoriert NULL) |
MAX / MIN | Höchster / niedrigster Wert |
DISTINCT | SELECT DISTINCT plz FROM Kunde – doppelte Werte unterdrücken |
LIKE | Textmuster: WHERE name LIKE 'M%' (% = beliebig viele Zeichen, _ = genau ein Zeichen) |
IN / NOT IN | WHERE status IN ('aktiv','pausiert') |
BETWEEN | WHERE preis BETWEEN 10 AND 50 (inklusiv) |
IS NULL / IS NOT NULL | NULL-Prüfung (nie = NULL verwenden!) |
Subquery | WHERE preis = (SELECT MAX(preis) FROM Produkt) |
CREATE TABLE mit PK, FK, NOT NULL