Übungsaufgaben zu Datenqualität und Datenimport
https://bildung.social/@oerinformatik/
https://oer-informatik.de/datenqualitaet-import-uebungsaufgaben
Datenqualität, Datenimport, Datenmigration, Dubletten, Staging-Tabelle, ETL, referenzielle Integrität, Plausibilitätsregeln, Datenvalidierung, SQL, Übungsaufgaben, Prüfungsvorbereitung
tl/dr; (Bearbeitungszeit insgesamt 145 min, mehrere Aufgaben): Vier umfangreiche Übungsaufgaben: Du migrierst Kontakte früherer Barcamps, importierst die Mitfahrbörse einer Schülervertretung, übernimmst Händlerdaten in ein neues Händlerportal und prüfst Schweißdaten eines Fertigungspartners. Dabei beschreibst Du Qualitätsmängel und ihre Folgen, ordnest Kriterien zu, erläuterst Migrationswege, wertest Importprotokolle aus, korrigierst einen Primärschlüssel, prüfst Daten mit SQL, formulierst Plausibilitätsregeln, teilst Rohdaten in Klassen ein und schreibst eine Einschätzung per E-Mail. Alle Lösungen sind ausgeblendet und mit Punkteverteilung versehen [AI-Assisted]. (Zuletzt geändert am 27.10.2026)
Diese Übungsaufgaben gehören zum Artikel Datenqualität und Datenimport: Altdaten prüfen, bereinigen und übernehmen. Für die SQL-Teilaufgaben helfen die Artikel SQL: Gruppenfunktionen und SQL-JOIN.
Hinweise zur Bearbeitung: Als FIA, FIDP, IKS oder IKD musst Du zur Teil-2-Prüfung Aufgaben auf Kernkompetenz-Ebene lösen können, das sind Aufgabe 2.1 und Aufgabe 2.2. Von FIA und FIDP wird zusätzlich erwartet, dass ihnen Aufgaben auf Profilkompetenz-Ebene (Aufgabe 3.1 und Aufgabe 3.2) keine Probleme bereiten. Achte auf die Operatoren: „beschreiben“ verlangt einen zusammenhängenden Sachverhalt mit Beispiel, „aufzeigen“ einen nachvollziehbaren Weg, „beurteilen“ eine begründete eigene Entscheidung, „zuordnen“ eine eindeutige Zuordnung ohne Begründung. SQL schreibst Du in MariaDB-Notation. Schreib Deine Lösung zuerst vollständig auf, bevor Du die Beispiellösung aufklappst.
Aufgabe 2.1: Kontakte früherer Barcamps in die neue Datenbank übernehmen (Kernkompetenz)
(ca. 24 min Bearbeitungszeit)
Der Förderverein des Ratz und Rübe Berufskollegs (RRB) in Bielefeld hat die Barcamps 2023 bis 2025 mit einer selbst gebauten Access-Datenbank „Barcamp-Verwaltung“ organisiert. Darin stehen rund 1.150 Kontakte (Referent*innen, Teilnehmende, Aussteller und Sponsoren) und rund 2.300 Teilnahmen an früheren Barcamps. Für das Barcamp „Lernen.Digital.Leben 2027“ am 13.03.2027 entwickelt das Orga-Team um Dimitrios Papadopoulos eine neue Barcamp-Software mit der MariaDB-Datenbank barcamp. Die bisherigen Referent*innen sollen im November 2026 persönlich zum Call for Participation eingeladen werden. Danach wird die Access-Datenbank nicht mehr gebraucht.
Du unterstützt das Orga-Team bei der Übernahme der Daten.
a) Bei einer ersten Sichtung der Access-Datenbank sind dem Orga-Team einige Dinge aufgefallen. Ordne jeder Feststellung genau einen der folgenden Begriffe zu: Aktualität, Eindeutigkeit, Einheitlichkeit, Konsistenz, Korrektheit, Redundanzfreiheit, Vollständigkeit. (4 Punkte)
| Nr. | Feststellung | Kriterium |
|---|---|---|
| 1 | Bei 212 Kontakten fehlt die E-Mail-Adresse, die in der neuen Datenbank ein Pflichtfeld ist. | |
| 2 | Gerhard Vogt ist dreimal als Kontakt angelegt, einmal für jedes Barcamp. | |
| 3 | Im Feld „Rolle“ stehen die Werte „Ref.“, „Referent“, „Speaker“ und „R“. | |
| 4 | Eine Teilnahme ist dem Barcamp 2024 zugeordnet, ihr Teilnahmedatum ist aber der 18.03.2023. |
Je 1 Punkt:
| Nr. | Kriterium | Kurzbegründung (nicht gefordert) |
|---|---|---|
| 1 | Vollständigkeit | Ein notwendiges Attribut fehlt. |
| 2 | Redundanzfreiheit | Dieselbe Person liegt als Dublette mehrfach vor. |
| 3 | Einheitlichkeit | Derselbe Sachverhalt ist unterschiedlich erfasst. |
| 4 | Konsistenz | Zwei Angaben desselben Datensatzes widersprechen sich. |
b) Nenne zwei weitere Kriterien der Datenqualität, die in a) nicht zugeordnet wurden, und erläutere jedes an einem möglichen Beispiel aus der Barcamp-Verwaltung. (4 Punkte)
Zwei Kriterien, je 1 Punkt für Kriterium mit Erläuterung und 1 Punkt für ein passendes Beispiel, z. B.:
Aktualität: Die Daten entsprechen dem heutigen Stand. Beispiel: Viele Kontakte haben seit 2023 Schule, Betrieb oder E-Mail-Adresse gewechselt; die Einladung zum Call for Participation käme nicht an.
Korrektheit: Die Daten stimmen mit der Realität überein. Beispiel: Tippfehler in einer E-Mail-Adresse (
…@rrb-bielefled.de) oder ein falsch geschriebener Name.Eindeutigkeit: Jeder Datensatz ist eindeutig interpretierbar. Beispiel: Ein Kontakt „Klein, H.“ ohne Vornamen und E-Mail – ist das Hannah Klein oder jemand anderes?
Relevanz: Die Daten erfüllen den Informationsbedarf. Beispiel: Für die Einladung werden Name, E-Mail-Adresse und frühere Sessions gebraucht, nicht aber die Menüwahl beim Mittagessen 2023.
auch: Zuverlässigkeit, Genauigkeit, Verständlichkeit mit passendem Beispiel.
c) Erläutere zwei Möglichkeiten, den Datenbestand aus der Access-Datenbank in die neue MariaDB-Datenbank zu migrieren. Beurteile anschließend, welche der beiden Möglichkeiten sich für das Barcamp eignet. (6 Punkte)
Je 2 Punkte für zwei Möglichkeiten, 2 Punkte für die begründete Beurteilung:
Export und Import (Dump bzw. CSV): Die Tabellen werden aus Access in ein Austauschformat (CSV, JSON) exportiert und mit einem Importwerkzeug (z. B.
LOAD DATA) unverändert in MariaDB geladen. Schnell und einfach, setzt aber voraus, dass Struktur und Qualität der Daten zum Ziel passen.ETL-Prozess: Die Daten werden aus Access extrahiert (Extract), in Struktur und Format an die neue Datenbank angepasst, bereinigt und geprüft (Transform, z. B. Dubletten zusammenführen, Rollen vereinheitlichen) und dann in die Zieltabellen geladen (Load).
Parallelbetrieb mit Replikation: Beide Systeme laufen eine Zeit lang gleichzeitig, die Daten werden in beiden gehalten und synchronisiert; danach wird das alte System abgeschaltet.
Neuaufbau mit Nacherfassung: Nur ausgewählte Daten werden übernommen oder neu erfasst.
Beurteilung (Beispiel): Geeignet ist ein ETL-Prozess. Die Daten haben deutliche Mängel (fehlende E-Mail-Adressen, Dubletten, uneinheitliche Rollen), und das Datenmodell der neuen Datenbank unterscheidet sich von der Access-Datenbank. Ein reiner Export und Import würde die Mängel übernehmen oder am Pflichtfeld scheitern. Ein Parallelbetrieb ist unnötig, weil die Access-Datenbank nach der Übernahme nicht mehr gebraucht wird. Auch eine andere Entscheidung ist richtig, wenn sie mit den Gegebenheiten begründet ist (z. B. Neuaufbau nur mit den Referent*innen, weil die alten Teilnahmen nicht gebraucht werden).
d) Beschreibe drei Prozesse (Arbeitsschritte), die für die Migration der Kontakte und Teilnahmen in die neue Datenbank notwendig sind. (9 Punkte)
Drei Prozesse, je 3 Punkte (Prozess benannt und mit Bezug zum Fall beschrieben), z. B.:
Datenmodelle analysieren und Zuordnung festlegen: Tabellen, Felder, Datentypen und Schlüssel der Access-Datenbank und der neuen Datenbank vergleichen und festlegen, welches alte Feld in welche neue Tabelle und Spalte kommt (Mapping), z. B. Feld „Rolle“ auf
anmeldung.ticketart. Dabei wird auch geklärt, welche Daten überhaupt übernommen werden dürfen und sollen (nur Kontakte mit Einwilligung zur erneuten Kontaktaufnahme, keine Daten ohne Zweck).Daten sichern, analysieren und bereinigen: Sicherungskopie der Access-Datenbank anlegen, ein Datenprofil erstellen (fehlende E-Mail-Adressen, Dubletten, Schreibweisen), Dubletten zusammenführen, Werte vereinheitlichen, fehlende Angaben nachtragen oder Datensätze ausschließen.
Übernahme vorbereiten (Algorithmus bzw. Importskript entwerfen, Schnittstelle bereitstellen): Ein Skript oder ETL-Werkzeug liest die Daten über eine Schnittstelle (ODBC-Verbindung oder CSV-Export) aus, wandelt sie um und vergibt neue Schlüssel; alte und neue IDs werden in einer Zuordnungstabelle festgehalten.
Daten importieren: in der richtigen Reihenfolge laden (erst
personundveranstaltung, dannanmeldung), zuerst als Testimport in eine Kopie der Datenbank.Fehlerprotokollierung und Dokumentation: Abgewiesene Datensätze mit Grund protokollieren und klären, das Vorgehen und alle Entscheidungen dokumentieren, Ergebnis vom Orga-Team abnehmen lassen.
e) Nenne drei Prüfungen, mit denen das Orga-Team nach dem Import feststellen kann, ob die Migration vollständig und korrekt war. (3 Punkte)
Je 1 Punkt, z. B.:
- Anzahl der Datensätze vorher und nachher vergleichen (Kontakte abzüglich zusammengeführter Dubletten, Teilnahmen je Barcamp), abgewiesene Datensätze laut Fehlerprotokoll einrechnen.
- Stichproben: einzelne Personen (z. B. Gerhard Vogt) in alter und neuer Datenbank vergleichen.
- Prüfabfragen auf Pflichtfelder, Dubletten (gleiche E-Mail-Adresse) und Verweise ohne Partner.
- Summen oder Zählungen je Gruppe vergleichen (Referent*innen je Jahr, Sessions je Barcamp).
- Testlauf der Anwendung mit den importierten Daten (z. B. Probeversand der Einladung an das Orga-Team).
Punkte gesamt: 26 (a: 4, b: 4, c: 6, d: 9, e: 3)
Aufgabe 2.2: Die Mitfahrbörse der Schülervertretung importieren (Kernkompetenz)
(ca. 24 min Bearbeitungszeit)
Bisher hat die Schülervertretung des RRB Fahrgemeinschaften in einer gemeinsam bearbeiteten Tabelle „Mitfahrbörse“ organisiert. Zum Regelbetrieb der Mitfahr-App RatzFahrt ab dem 02.11.2026 sollen die dort eingetragenen regelmäßigen Fahrten übernommen werden. Oksana Melnyk aus dem Projektteam hat dafür ein Importskript geschrieben. Du prüfst mit ihr den Testimport.
Ausschnitt aus dem Datenmodell von RatzFahrt (PK = Primärschlüssel, FK = Fremdschlüssel):
| Tabelle | Spalten |
|---|---|
nutzer |
nutzer_id (PK), pseudonym, vorname, nachname, email_schule (eindeutig), … |
haltepunkt |
haltepunkt_id (PK), name, ort, plz, entfernung_km, … |
fahrzeug |
fahrzeug_id (PK), nutzer_id (FK → nutzer), typ, farbe, sitzplaetze (1 bis 8) |
angebot |
angebot_id (PK), fahrer_id (FK → nutzer), fahrzeug_id (FK → fahrzeug), haltepunkt_id (FK → haltepunkt), richtung, datum (DATE), abfahrt (TIME), freie_plaetze, kostenbeitrag_eur (DECIMAL(5,2)), status |
Für alle Fremdschlüssel ist referenzielle Integrität vereinbart.
a) Die Testdatenbank ist leer. Beschreibe, in welcher Reihenfolge die vier Tabellen mit den Daten der Mitfahrbörse befüllt werden müssen, und begründe die Reihenfolge. (3 Punkte)
- Zuerst
nutzerundhaltepunkt(untereinander in beliebiger Reihenfolge), denn sie verweisen auf keine andere Tabelle. (1 Punkt) - Danach
fahrzeug, weil jedes Fahrzeug übernutzer_idauf einen vorhandenen Datensatz innutzerverweisen muss. (1 Punkt) - Zuletzt
angebot, weil es über drei Fremdschlüssel aufnutzer,fahrzeugundhaltepunktverweist. (1 Punkt)
Begründung: Wegen der referenziellen Integrität darf ein Fremdschlüsselwert nur eingetragen werden, wenn der Datensatz auf der 1-Seite der Beziehung schon existiert. Sonst weist die Datenbank den Datensatz ab.
b) In der Mitfahrbörse stehen 86 Fahrten, in der Tabelle angebot kommen nach dem Testimport aber nur 79 an. Das Importprotokoll enthält unter anderem die folgenden Fehlermeldungen. Beschreibe jeweils eine mögliche Ursache. Übertrage dazu die Tabelle. (8 Punkte)
| Fehlermeldung | mögliche Ursache |
|---|---|
Beispiel: Duplicate entry 'ben.richter@rrb-bielefeld.example' for key 'email_schule' |
Beispiel: Ben Richter steht mehrfach in der Mitfahrbörse und sollte jedes Mal neu in nutzer angelegt werden. |
Incorrect decimal value: '1,80 €' for column 'kostenbeitrag_eur' |
|
Cannot add or update a child row: a foreign key constraint fails (… CONSTRAINT 'fk_ang_halt' FOREIGN KEY ('haltepunkt_id') REFERENCES 'haltepunkt' …) |
|
CONSTRAINT 'chk_sitze' failed for 'ratzfahrt'.'fahrzeug' |
|
Incorrect time value: '6.45 Uhr' for column 'abfahrt' |
Je 2 Punkte:
| Fehlermeldung | mögliche Ursache |
|---|---|
Incorrect decimal value … |
Der Kostenbeitrag steht in der Mitfahrbörse als Text mit Dezimalkomma und Eurozeichen. Die Spalte erwartet eine Zahl im Format 1.80; das Skript wandelt den Wert nicht um (falscher Datentyp bzw. fehlende Umwandlung). |
Cannot add or update a child row … |
Der Haltepunkt, auf den das Angebot verweist, existiert nicht in haltepunkt: Der Treffpunkt ist in der Mitfahrbörse anders geschrieben („Hbf ZOB“ statt „Hauptbahnhof, ZOB Steig 3“) und wurde keiner haltepunkt_id zugeordnet. Möglich ist auch eine falsche Reihenfolge (Angebot vor Haltepunkt geladen). |
CONSTRAINT 'chk_sitze' failed … |
Die Anzahl der Sitzplätze verletzt die Regel 1 bis 8, z. B. 0 oder 9, weil beim Kleinbus die fahrende Person mitgezählt wurde. Damit fehlt das Fahrzeug, und die zugehörigen Angebote scheitern anschließend an der Fremdschlüsselprüfung. |
Incorrect time value … |
Die Abfahrtszeit wurde mit Punkt statt Doppelpunkt und dem Zusatz „Uhr“ eingegeben (6.45 Uhr statt 06:45) und lässt sich nicht als TIME speichern (uneinheitliches Format). |
c) Oksana möchte den gesamten Import nach jeder Korrektur von vorn starten. Beschreibe ein Vorgehen, wie die abgewiesenen Datensätze stattdessen behandelt werden können. (3 Punkte)
Je 1 Punkt für drei passende Schritte, z. B.:
- Das Skript bricht nicht ab, sondern schreibt jeden abgewiesenen Datensatz mit Zeilennummer und Fehlermeldung in ein Fehlerprotokoll (oder in eine Fehlerspalte der Staging-Tabelle).
- Die Ursachen werden geklärt: Systematische Fehler (Dezimalkomma, Uhrzeit mit Punkt, Schreibweisen der Treffpunkte) behebt eine Umwandlung bzw. Zuordnungstabelle im Skript; Einzelfälle klärt die Schülervertretung (z. B. Sitzplätze nachfragen).
- Nur die korrigierten Datensätze werden erneut importiert; bereits übernommene bleiben unverändert, Dubletten verhindert der eindeutige Schlüssel.
- Abschließend werden die Zahlen abgeglichen (86 Fahrten = übernommene + begründet verworfene).
d) Für feste Fahrgemeinschaften plant das Projektteam eine zusätzliche Tabelle. Lukas Hofmann fährt zum Beispiel montags und donnerstags mit Niklas Fischer ab Bad Salzuflen zur Schule und wieder nach Hause.
stammfahrt |
||
|---|---|---|
fahrer_id (PK, FK → nutzer) |
mitfahrer_id (PK, FK → nutzer) |
wochentag |
richtung |
haltepunkt_id (FK → haltepunkt) |
Erläutere, warum der Primärschlüssel dieser Tabelle falsch festgelegt ist, und korrigiere ihn. (4 Punkte)
Erläuterung (2 Punkte): Der Primärschlüssel besteht nur aus fahrer_id und mitfahrer_id. Damit darf jede Kombination aus fahrer_id und mitfahrer_id nur ein einziges Mal vorkommen. Lukas’ Fahrten mit Niklas am Montag und am Donnerstag sowie in beide Richtungen (vier Datensätze) ließen sich nicht speichern; der zweite Datensatz würde mit Duplicate entry abgewiesen.
Korrektur (2 Punkte), eine der Möglichkeiten:
- Den Primärschlüssel um die unterscheidenden Merkmale erweitern:
(fahrer_id, mitfahrer_id, wochentag, richtung). - Oder einen künstlichen Schlüssel
stammfahrt_id(PK,AUTO_INCREMENT) einführen und die Kombination(fahrer_id, mitfahrer_id, wochentag, richtung)mitUNIQUEabsichern.
e) Im Testbetrieb erfasst die Administratorin Andrea Wolf für Jonas Wolff ein neues Angebot ab Halle. Beim Speichern erscheint die Meldung „Referenzielle Integrität verletzt“. Erläutere zwei mögliche Gründe. (4 Punkte)
Zwei Gründe, je 2 Punkte, z. B.:
- Das Angebot verweist auf ein Fahrzeug, das es in
fahrzeugnicht gibt – etwa weil Jonas ein neues Auto hat, das noch nicht angelegt wurde, oder weil eine falschefahrzeug_idausgewählt wurde. - Der Treffpunkt ist noch nicht als Haltepunkt angelegt (z. B. ein neuer Treffpunkt in Halle), die eingetragene
haltepunkt_idexistiert also nicht. - Der Datensatz von Jonas in
nutzerexistiert nicht (mehr), z. B. weil er versehentlich gelöscht wurde, sodassfahrer_idins Leere zeigt.
f) Damit Fehler wie in b) künftig vor dem Import auffallen, werden die Daten der Mitfahrbörse zuerst in die Staging-Tabelle import_angebot geladen (alle Spalten als Text):
| zeile | fahrer_email | ort | treffpunkt | datum | abfahrt | plaetze | beitrag |
|---|---|---|---|---|---|---|---|
| 1 | ben.richter@rrb-bielefeld.example | Gütersloh | Hauptbahnhof, ZOB Steig 3 | 2026-11-02 | 07:00 | 2 | 1,80 € |
| 2 | marie.schulz@rrb-bielefeld.example | Herford | Park & Ride am Bahnhof | 2026-11-02 | 06:50 | 3 | 1,70 |
| 3 | niklas.fischer@rrb-bielefeld.example | Bad Salzuflen | Busbahnhof | 2026-11-03 | 6.45 Uhr | 6 | 1,90 |
| 4 | jonas.wolff@rrb-bielefeld.example | Halle (Westf.) | Marktplatz Halle | 2026-11-03 | 07:10 | 1 | 1,50 |
| 5 | jonas.wolff@rrb-bielefeld.example | Halle | Marktplatz | 2026-11-04 | 07:10 | 1 | 1,50 |
| 6 | ben.richter@rrb-bielefeld.example | Gütersloh | Hbf ZOB | 2026-11-04 | 07:00 | 2 | 1,80 |
| 7 | marie.schulz@rrb-bielefeld.example | Werther (Westf.) | Kirchplatz | 2026-11-05 | 07:05 | 3 | 1,30 |
In der Tabelle haltepunkt gibt es unter anderem: „Hauptbahnhof, ZOB Steig 3“ (Gütersloh), „Park & Ride am Bahnhof“ (Herford), „Marktplatz“ (Halle (Westf.)), „Busbahnhof“ (Bad Salzuflen) und „Kirchplatz“ (Werther (Westf.)).
Erstelle eine SQL-Abfrage, die Zeilennummer, Ort und Treffpunkt aller Zeilen von import_angebot ausgibt, zu denen es in haltepunkt keinen Haltepunkt mit genau diesem Ort und Namen gibt. Sortiere nach der Zeilennummer. (4 Punkte)
SELECT i.zeile, i.ort, i.treffpunkt
FROM import_angebot i
LEFT JOIN haltepunkt h
ON h.ort = i.ort AND h.name = i.treffpunkt
WHERE h.haltepunkt_id IS NULL
ORDER BY i.zeile;Bewertung: LEFT JOIN von der Staging-Tabelle aus (1 Punkt), Verknüpfung über Ort und Name (1 Punkt), Bedingung IS NULL auf eine Spalte von haltepunkt (1 Punkt), Spaltenauswahl und Sortierung (1 Punkt). Gleichwertig ist eine Lösung mit WHERE NOT EXISTS (SELECT 1 FROM haltepunkt h WHERE h.ort = i.ort AND h.name = i.treffpunkt).
Ergebnis:
| zeile | ort | treffpunkt |
|---|---|---|
| 4 | Halle (Westf.) | Marktplatz Halle |
| 5 | Halle | Marktplatz |
| 6 | Gütersloh | Hbf ZOB |
Die Staging-Tabelle mit diesen Daten steht in src/import_angebot.sql; sie setzt die Datenbank ratzfahrt voraus.
Punkte gesamt: 26 (a: 3, b: 8, c: 3, d: 4, e: 4, f: 4)
Aufgabe 3.1: Händlerdaten für ein neues Händlerportal übernehmen (Profilkompetenz)
(ca. 44 min Bearbeitungszeit)
Du bist Auszubildende*r im Entwicklungsteam der CSB-Rad GmbH in Bielefeld. CSB-Rad verkauft Fahrräder und Komponenten über einen Onlineshop an Privatkundschaft, öffentliche Auftraggeber und 37 Fachhändler. Die Fachhändler bestellen bisher mit dem Windows-Programm „CSB-Order“, das ein früherer Dienstleister 2018 entwickelt hat. Es wird bis zum 31.03.2027 durch ein Händlerportal im Onlineshop abgelöst; der Pilotbetrieb mit fünf Händlern beginnt am 01.02.2027.
Im Händlerportal melden sich Händler mit ihrer E-Mail-Adresse an. Die Händler werden – wie die übrige Kundschaft – in der Shop-Datenbank in der Tabelle kunde (mit kundentyp = 'haendler') und ihre Anschriften in der Tabelle adresse gespeichert:
CREATE TABLE kunde (
kunde_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
kundentyp ENUM('privat','haendler','oeffentlich') NOT NULL DEFAULT 'privat',
firma VARCHAR(100) NULL,
vorname VARCHAR(50) NULL,
nachname VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
telefon VARCHAR(25) NULL,
ust_idnr VARCHAR(14) NULL,
leitweg_id VARCHAR(46) NULL,
newsletter BOOLEAN NOT NULL DEFAULT FALSE,
registriert_am DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE adresse (
adresse_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
kunde_id INT UNSIGNED NOT NULL,
typ ENUM('rechnung','liefer') NOT NULL,
strasse VARCHAR(100) NOT NULL,
hausnr VARCHAR(10) NOT NULL,
plz VARCHAR(10) NOT NULL,
ort VARCHAR(60) NOT NULL,
land CHAR(2) NOT NULL DEFAULT 'DE',
CONSTRAINT fk_adr_kunde FOREIGN KEY (kunde_id) REFERENCES kunde (kunde_id) ON DELETE CASCADE
);Die Händler-Konditionen pflegte Natalia Wróbel aus der Buchhaltung bisher teils in CSB-Order, teils in einer eigenen Tabellenkalkulation. Sie hat beides zu einer CSV-Datei haendler_export.csv zusammengeführt. Hier ein Auszug (8 von 37 Zeilen):
| HNr | Firma | Ansprechperson | Straße | PLZ | Ort | Land | USt-IdNr | Rabatt | Kunde seit | Bemerkung | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1004 | Radhaus Bielefeld-Süd GmbH | Katarzyna Nowak | Gütersloher Straße 410 | 33649 | Bielefeld | DE | DE123456789 | einkauf@radhaus-bi-sued.example | 4 % | 05.11.2024 | |
| 1011 | Zweirad Lohmann e. K. | Dirk Lohmann | Lange Straße 21 | 32756 | Detmold | DE | DE 812 345 670 | info@zweirad-lohmann.example | 0,04 | 2019-03-01 | |
| 1012 | Radhaus Bielefeld Süd | K. Nowak | Gütersloher Str. 410 | 33649 | Bielefeld | D | DE123456789 | nowak@radhaus-bi-sued.example | 5% | 2021 | Neukunde? |
| 1017 | Velowerk Münster GmbH | Jan-Ole Brandes | Hammerstraße 95 | 48153 | Münster | DE | DE287654321 | service@velowerk-ms.example | 4 | 12.07.2020 | |
| 1023 | Leipziger Radkontor GmbH | Thi Mai Pham | Karl-Liebknecht-Straße 60 | 4275 | Leipzig | DE | DE301122334 | einkauf@radkontor-l.example | 4 % | 14.03.2022 | |
| 1026 | Fahrradladen am Sparrenberg | Rüdiger Hollmann | 33602 | Bielefeld | DE | - | siehe Vertrag | 01.04.2018 | |||
| 1031 | Radsport Kemper GmbH | Frank Kemper | Hauptstraße 3 | 33378 | Rheda-Wiedenbrück | DE | DE256789012 | info@radsport-kemper.example | 4 % | 20.08.2018 | Laden seit 03/2025 geschlossen |
| 1034 | Pedale & Co. OHG | Rania Saleh | Bahnhofstraße 17 | 32105 | Bad Salzuflen | DE | DE29876543 | rania.saleh@pedale-co.example | 4 % | 31.09.2022 |
Zur Einordnung: Fachhändler erhalten bei CSB-Rad laut Preisliste 4 % Rabatt. Eine deutsche Umsatzsteuer-Identifikationsnummer (USt-IdNr.) besteht aus DE und neun Ziffern.
a) Cem Sarıkaya, Geschäftsführer Technik und IT, möchte die Datei „einfach schnell einlesen“. Du siehst Dir den Auszug vorher genauer an.
aa) Beschreibe vier Probleme bezüglich der Qualität der Daten im Auszug und nenne jeweils eine Folge, die sich ergäbe, wenn die Daten unverändert ins Händlerportal importiert würden. (12 Punkte)
Vier der folgenden Probleme, je Problem 2 Punkte für die Beschreibung mit Beispiel aus dem Auszug und 1 Punkt für eine passende Folge:
| Problem (mit Beispiel) | Folge eines unveränderten Imports |
|---|---|
| Dublette: Die Radhaus Bielefeld-Süd GmbH steht zweimal in der Liste (HNr 1004 und 1012) mit abweichender Schreibweise von Firma, Ansprechperson und Straße, aber gleicher USt-IdNr. | Der Händler wird doppelt angelegt und hat zwei Zugänge; Bestellungen und Umsätze verteilen sich auf zwei Konten, Mengenrabatte oder Auswertungen je Händler werden falsch. |
| Widersprüchliche Angaben (Inkonsistenz): Für dasselbe Radhaus sind 4 % und 5 % Rabatt hinterlegt, als Kunde seit 05.11.2024 bzw. 2021. | Es ist unklar, welcher Rabatt gilt; je nach Konto werden falsche Preise berechnet. |
Uneinheitliche Formate: Rabatt als 4 %, 0,04, 4, 5%; Datum als 05.11.2024, 2019-03-01 und nur 2021; USt-IdNr. mit Leerzeichen; Land DE und D; „Straße“/„Str.“. |
Das Importprogramm bricht ab oder muss jedes Format kennen und wird deutlich aufwendiger; 0,04 könnte als 0,04 % statt 4 % übernommen werden, D ist kein gültiger Ländercode nach ISO 3166 (DE), würde aber in land CHAR(2) gespeichert. |
Ungültige Werte: Datum 31.09.2022 gibt es nicht; die USt-IdNr. DE29876543 hat nur acht Ziffern; die PLZ 4275 ist vierstellig (führende Null von 04275 verloren). |
Der Import des Datensatzes scheitert (ungültiges Datum) oder falsche Werte gelangen ins System: Rechnungen mit falscher USt-IdNr., Lieferungen an eine ungültige Anschrift. |
Fehlende Pflichtangaben: Beim Fahrradladen am Sparrenberg fehlen Straße und USt-IdNr., statt einer E-Mail-Adresse steht -. |
Der Datensatz verletzt NOT NULL und wird abgewiesen, oder der Händler kann sich im Portal nicht anmelden (Anmeldung per E-Mail) und keine korrekte Rechnung erhalten. |
| Freitext statt Wert: Rabatt „siehe Vertrag“. | Der Rabatt kann nicht automatisch übernommen werden; der Händler erhält im Portal falsche Preise, bis jemand den Vertrag liest. |
Falsche Zeichenkodierung: Münster, Hammerstraße beim Velowerk. |
Name und Anschrift erscheinen falsch auf Rechnungen und Lieferscheinen; die Suche nach „Münster“ findet den Händler nicht. |
| Nicht aktuelle Daten: Radsport Kemper hat den Laden seit 03/2025 geschlossen; außerdem steht die Information nur in einer Bemerkung. | Ein Zugang für einen nicht mehr existierenden Händler entsteht; Mailings gehen ins Leere, Statistiken („aktive Händler“) sind falsch. |
Andere sachgerechte Probleme (z. B. Ansprechperson nur mit Initial „K. Nowak“, Information in der Bemerkungsspalte) sind ebenfalls richtig.
ab) Nenne zu jedem der vier in aa) beschriebenen Probleme das Kriterium der Datenqualität, das verletzt ist. (4 Punkte)
Je passendes Kriterium 1 Punkt, z. B.:
Dublette → Redundanzfreiheit (auch: Eindeutigkeit)
widersprüchliche Rabatte → Konsistenz (Widerspruchsfreiheit)
uneinheitliche Formate → Einheitlichkeit
ungültige Werte → Korrektheit bzw. Zulässigkeit/Plausibilität
fehlende Angaben → Vollständigkeit
„siehe Vertrag“ → Einheitlichkeit bzw. Vollständigkeit (der Wert steht woanders)
falsche Zeichenkodierung → Korrektheit
geschlossener Laden → Aktualität
b) Cem ist überzeugt: „Wir brauchen die Händlerdaten zum Start des Pilotbetriebs, also importieren wir sie trotzdem.“
ba) Zeige einen möglichen Weg auf, wie die Händlerdaten trotz der Mängel ins Händlerportal übernommen werden können. Gehe dabei auch darauf ein, wozu eine Staging-Tabelle dient. (4 Punkte)
Möglicher Weg (ETL-Prozess mit Staging-Tabelle):
Sicherungskopie der CSV-Datei anlegen; Mapping festlegen (welche Spalte in welche Tabelle/Spalte von
kundeundadresse).Die CSV-Datei unverändert in eine Staging-Tabelle
import_haendlerladen, deren Spalten alle Text (VARCHAR) sind. Zweck: Beim Laden geht nichts verloren und kein Datensatz wird abgewiesen; die Daten können dort mit SQL untersucht, vereinheitlicht und geprüft werden, ohne die Shop-Datenbank zu gefährden.Mit Prüfabfragen Fehler finden und in einer Fehlerspalte markieren; Formate per SQL bzw. Importprogramm vereinheitlichen (Rabatt als Zahl, Datum als
DATE, USt-IdNr. ohne Leerzeichen, Kodierung reparieren).Was sich nicht automatisch klären lässt (Dublette Radhaus, „siehe Vertrag“, fehlende Angaben, geschlossener Laden), klärt Natalia Wróbel von Hand bzw. im Gespräch mit den Händlern; bei 37 Händlern ist das gut machbar.
Nur geprüfte Datensätze in der richtigen Reihenfolge (erst
kunde, dannadresse) übernehmen, abgewiesene protokollieren, Ergebnis mit der Buchhaltung abnehmen.
Bewertung: 2 Punkte für einen nachvollziehbaren Weg (Bereinigung vor dem Import oder Importprogramm mit Fehlerbehandlung und Fehlerprotokoll), 2 Punkte für den Zweck der Staging-Tabelle. Ein rein manueller Weg („Natalia korrigiert die CSV-Datei, dann wird importiert“) ist bei 37 Datensätzen ebenfalls schlüssig.
Jonas, Dein Mit-Azubi, hat die CSV-Datei bereits in eine Staging-Tabelle geladen:
CREATE TABLE import_haendler (
hnr VARCHAR(10), firma VARCHAR(100), ansprechperson VARCHAR(80),
strasse VARCHAR(100), plz VARCHAR(10), ort VARCHAR(60), land VARCHAR(5),
ust_idnr VARCHAR(20), email VARCHAR(100), rabatt VARCHAR(20),
kunde_seit VARCHAR(20), bemerkung VARCHAR(200)
);Leere Felder der CSV-Datei stehen dort als leere Zeichenkette ''.
bb) Erstelle eine SQL-Anweisung, die alle USt-IdNr. ausgibt, die – nachdem alle Leerzeichen entfernt wurden – mehr als einmal vorkommen. Zu jeder USt-IdNr. sollen die Anzahl und die betroffenen Händlernummern ausgegeben werden. Leere Felder sollen nicht berücksichtigt werden. (5 Punkte)
SELECT REPLACE(ust_idnr, ' ', '') AS ust_idnr_bereinigt,
COUNT(*) AS anzahl,
GROUP_CONCAT(hnr ORDER BY hnr SEPARATOR ', ') AS haendlernummern
FROM import_haendler
WHERE ust_idnr <> ''
GROUP BY REPLACE(ust_idnr, ' ', '')
HAVING COUNT(*) > 1;Ergebnis für den Auszug:
| ust_idnr_bereinigt | anzahl | haendlernummern |
|---|---|---|
| DE123456789 | 2 | 1004, 1012 |
Bewertung: Leerzeichen entfernen mit REPLACE (1 Punkt), Ausschluss leerer Werte (1 Punkt), Gruppierung nach dem bereinigten Wert (1 Punkt), HAVING COUNT(*) > 1 (1 Punkt), Ausgabe von Anzahl und Händlernummern mit GROUP_CONCAT (1 Punkt). Ohne GROUP_CONCAT (nur Anzahl) 1 Punkt Abzug. Wer zusätzlich ust_idnr IS NOT NULL prüft, macht nichts falsch.
bc) Erstelle eine SQL-Anweisung, die Händlernummer, Firma und USt-IdNr. aller Händler ausgibt, bei denen die USt-IdNr. fehlt oder – nach Entfernen der Leerzeichen – nicht aus DE und genau neun Ziffern besteht. (4 Punkte)
SELECT hnr, firma, ust_idnr
FROM import_haendler
WHERE ust_idnr IS NULL
OR ust_idnr = ''
OR REPLACE(ust_idnr, ' ', '') NOT REGEXP '^DE[0-9]{9}$';Ergebnis für den Auszug:
| hnr | firma | ust_idnr |
|---|---|---|
| 1026 | Fahrradladen am Sparrenberg | |
| 1034 | Pedale & Co. OHG | DE29876543 |
Bewertung: Projektion (1 Punkt), fehlender Wert (1 Punkt), Musterprüfung mit REGEXP und Anker ^…$ (2 Punkte; ohne Anker 1 Punkt). Alternativ ohne regulären Ausdruck: LEFT(…, 2) <> 'DE' OR CHAR_LENGTH(…) <> 11 (dann prüft man allerdings nicht, ob die Zeichen 3 bis 11 Ziffern sind – 1 Punkt Abzug). Hinweis: In MariaDB unterscheidet REGEXP bei der Standardkollation nicht zwischen Groß- und Kleinschreibung; de123456789 würde also akzeptiert und sollte beim Übernehmen mit UPPER() vereinheitlicht werden.
bd) Jonas hat ein erstes Importskript geschrieben. Es legt je Händler einen Datensatz in kunde an (mit der alten Händlernummer als kunde_id) und danach dessen Anschrift in adresse; das Datum wandelt es von TT.MM.JJJJ nach JJJJ-MM-TT um. Die Dublette 1012 hat er beim Anlegen der Kunden übersprungen. Einige Händler bestellen bereits als Kundschaft im Onlineshop. Der Testimport in eine Kopie der Shop-Datenbank meldet unter anderem:
HNr 1004, kunde: ERROR 1062 (23000): Duplicate entry 'einkauf@radhaus-bi-sued.example' for key 'email'
HNr 1012, adresse: ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint
fails (`csbrad`.`adresse`, CONSTRAINT `fk_adr_kunde` FOREIGN KEY (`kunde_id`)
REFERENCES `kunde` (`kunde_id`) ON DELETE CASCADE)
HNr 1034, kunde: ERROR 1292 (22007): Incorrect datetime value: '2022-09-31' for column
`csbrad`.`kunde`.`registriert_am` at row 1
Ergänze für jede Fehlermeldung die Ursache und eine Abhilfe. Übertrage dazu die Tabelle. (6 Punkte)
| Händler | Ursache | Abhilfe |
|---|---|---|
| 1004 | ||
| 1012 | ||
| 1034 |
| Händler | Ursache | Abhilfe |
|---|---|---|
| 1004 | Die Spalte email ist UNIQUE. Die Radhaus Bielefeld-Süd GmbH ist im Onlineshop schon als Kundin (kunde_id 4, Katarzyna Nowak) mit dieser E-Mail-Adresse angelegt. |
Vor dem Import mit den vorhandenen Kundendatensätzen abgleichen (z. B. über USt-IdNr. oder E-Mail-Adresse); vorhandene Datensätze nicht neu anlegen, sondern ergänzen bzw. aktualisieren und die alte Händlernummer zuordnen. |
| 1012 | Die Anschrift verweist auf kunde_id 1012, die es nicht gibt, weil die Dublette beim Anlegen der Kunden übersprungen wurde – die Fremdschlüsselbeziehung zu kunde ist verletzt. |
Dubletten vor dem Import zusammenführen und dabei auch abhängige Daten (Anschrift) dem richtigen Kundendatensatz zuordnen bzw. weglassen; immer erst die Elterntabelle, dann die abhängige Tabelle laden. |
| 1034 | Das Datum 31.09.2022 gibt es nicht; die reine Textumwandlung macht daraus den ungültigen Wert 2022-09-31. |
Datumswerte vor dem Import auf gültige Kalenderdaten prüfen (z. B. im Importprogramm mit strikter Datumsprüfung) und ungültige Werte mit der Buchhaltung klären; den Datensatz bis dahin ins Fehlerprotokoll schreiben statt den Import abzubrechen. |
Bewertung: je Zeile 1 Punkt für die Ursache, 1 Punkt für eine passende Abhilfe.
Zusatzhinweis (ohne Punkte): Alte Händlernummern als kunde_id zu verwenden, ist riskant – die IDs des neuen Systems werden per AUTO_INCREMENT vergeben und könnten später kollidieren. Besser ist eine eigene Spalte bzw. Zuordnungstabelle „alte Händlernummer → neue kunde_id“.
c) Für die Händler ist im Portal die Funktion „Nachbestellen wie zuletzt“ geplant. Cem überlegt deshalb, auch die Bestellhistorie aus CSB-Order zu übernehmen: rund 2.900 Händlerbestellungen seit 2018. Bis Ende 2020 wurden Artikel in CSB-Order als Freitext erfasst (z. B. „Stadtrad blau 28 Zoll“); die Artikelnummern aus dieser Zeit gibt es im Shop nicht mehr. Rabatte sind nur als Endbetrag je Bestellung gespeichert. Alle Rechnungen liegen ohnehin im Buchhaltungsprogramm von Natalia Wróbel.
ca) Erläutere den Unterschied zwischen Stammdaten und Bewegungsdaten und ordne die Händlerdaten und die Bestellhistorie zu. (3 Punkte)
Stammdaten beschreiben Objekte, die über einen längeren Zeitraum weitgehend gleich bleiben und in vielen Vorgängen wieder verwendet werden (1 Punkt).
Bewegungsdaten entstehen laufend durch die Geschäftsprozesse, beziehen sich auf Stammdaten und sind an einen Zeitpunkt gebunden (1 Punkt).
Zuordnung: Die Händlerdaten (Firma, Anschrift, USt-IdNr., Rabatt) sind Stammdaten, die Bestellungen der Bestellhistorie sind Bewegungsdaten (1 Punkt).
cb) Beurteile die Idee, die gesamte Bestellhistorie ins Händlerportal zu importieren, und nimm begründet für oder gegen den Import Stellung. (4 Punkte)
Beide Entscheidungen sind möglich; bewertet wird die Begründung mit Bezug auf den Fall (2 Punkte für die Abwägung, 1 Punkt für eine klare Entscheidung, 1 Punkt für eine schlüssige Begründung bzw. Alternative).
Gegen den vollständigen Import (Beispiel): Die Bestellungen bis 2020 lassen sich keinen heutigen Artikeln zuordnen (Freitext, ausgelaufene Artikelnummern); Rabatte sind nur als Endbetrag gespeichert, sodass sich Positionspreise nicht sauber rekonstruieren lassen. Für „Nachbestellen wie zuletzt“ genügen die letzten Bestellungen. Die Rechnungen sind für Buchhaltung und Aufbewahrungspflichten bereits im Buchhaltungsprogramm vorhanden. Der Aufwand für Bereinigung und ein Importprogramm steht daher in keinem Verhältnis zum Nutzen. Ich empfehle, höchstens die Bestellungen der letzten 12 bis 24 Monate mit gültigen Artikelnummern zu übernehmen und die übrige Historie als schreibgeschützten Export zu archivieren.
Für den Import (Beispiel): Die Händler und der Vertrieb wollen Umsatzentwicklungen über mehrere Jahre im Portal sehen; ohne Historie wirkt das neue Portal für langjährige Händler leer. Dann muss der höhere Aufwand in Kauf genommen werden: Freitext-Positionen werden als „Altartikel“ ohne Artikelbezug übernommen, Beträge als Gesamtsumme, und das Importprogramm protokolliert alle Bestellungen, die es nicht zuordnen kann.
d) Damit sich die Probleme aus a) im Händlerportal nicht wiederholen, sollst Du Vorschläge machen. Nenne drei Maßnahmen, mit denen die Datenqualität der Händlerdaten im Händlerportal dauerhaft hoch bleibt, und beschreibe jeweils kurz ihre Wirkung. (6 Punkte)
Drei der folgenden Maßnahmen, je 1 Punkt für die Maßnahme und 1 Punkt für die Wirkung:
Constraints in der Datenbank: z. B.
UNIQUEauf die USt-IdNr.,CHECK (ust_idnr REGEXP '^DE[0-9]{9}$')für deutsche Händler, Rabatt alsDECIMAL(4,1)mitCHECKzwischen 0 und 100, Datum alsDATE. Wirkung: Ungültige und doppelte Werte werden abgewiesen, egal über welches Programm sie hineinkommen.Eingabevalidierung im Portal: Pflichtfelder, Formatprüfung von PLZ, E-Mail und USt-IdNr. mit verständlicher Fehlermeldung, Datumsauswahl statt freier Eingabe. Wirkung: Fehler werden schon bei der Eingabe erkannt und von der Person korrigiert, die die richtigen Daten kennt.
Auswahllisten statt Freitext: Land als Auswahl (ISO-Code), Rabatt aus festen Konditionsstufen statt „siehe Vertrag“. Wirkung: Einheitliche Werte, die automatisch verarbeitet werden können.
Dublettenprüfung beim Anlegen: Hinweis, wenn USt-IdNr. oder ähnlicher Firmenname schon vorhanden sind. Wirkung: Keine doppelten Händlerkonten mehr.
Selbstpflege durch die Händler: Händler pflegen Anschrift, Ansprechperson und E-Mail-Adresse im Portal selbst (Änderungen von Konditionen nur durch die Buchhaltung). Wirkung: Daten bleiben aktuell.
Verantwortlichkeit und regelmäßige Prüfung: Natalia Wróbel ist für die Händlerstammdaten verantwortlich; ein monatlicher Prüfbericht listet z. B. Händler ohne Bestellung seit 12 Monaten oder Datensätze mit fehlenden Pflichtangaben. Wirkung: Veraltete und unvollständige Daten fallen auf und werden bereinigt.
Einheitliche Kodierung (
utf8mb4durchgängig in Datenbank, Verbindung und Exporten). Wirkung: Keine falsch dargestellten Umlaute mehr.
Punkte gesamt: 48 (a: 16, b: 19, c: 7, d: 6)
Aufgabe 3.2: Schweißdaten eines Fertigungspartners prüfen (Profilkompetenz)
(ca. 53 min Bearbeitungszeit)
Die CSB-Rad GmbH in Bielefeld lässt Fahrradrahmen nach Maß bei der Rahmenwerk OWL GmbH in Gütersloh fertigen. Dort schweißen zwei Roboterzellen (S1 und S2) die Rahmen; jede Zelle speichert zu jeder Naht Messwerte. Bei der Endkontrolle in der Werkstatt von CSB-Rad fielen zuletzt mehrere Rahmen wegen poröser Schweißnähte durch. Cem Sarıkaya, Geschäftsführer Technik und IT, möchte die Schweißdaten deshalb regelmäßig in eine eigene Analysedatenbank übernehmen und mit den Prüfergebnissen verknüpfen. Du arbeitest als Auszubildende*r im Datenteam von CSB-Rad.
Ole Petersen, Projektleiter Digitalisierung bei Rahmenwerk OWL, schickt Dir einen ersten Auszug aus dem Export der Schweißzellen. Am 05.10.2026 wurden für CSB-Rad die Rahmen RW-26-00410 bis RW-26-00425 gefertigt. Laut Schweißanweisung gelten: Strom 170 A bis 200 A, Spannung 20 V bis 23 V, Schutzgas 12 l/min bis 18 l/min, Nahtzeit 35 s bis 45 s.
| Nr. | Rahmen-Nr. | Zelle | Zeitstempel | Strom (A) | Spannung (V) | Drahtvorschub (m/min) | Schutzgas (l/min) | Nahtzeit (s) | Sichtprüfung |
|---|---|---|---|---|---|---|---|---|---|
| 1 | RW-26-00412 | S1 | 2026-10-05 06:12:44 | 182 | 21,4 | 7,8 | 14 | 38 | ok |
| 2 | RW-26-00412 | S1 | 2026-10-05 06:12:44 | 182 | 21,4 | 7,8 | 14 | 38 | ok |
| 3 | RW-26-00413 | S1 | 2026-10-05 06:14:02 | 0,179 | 21,1 | 7,6 | 15 | 41 | ok |
| 4 | 26-00414 | S2 | 05.10.2026 06:15 | 188 | 22,0 | 8,1 | NULL | 39 | nicht ok |
| 5 | RW-26-00415 | S2 | 2026-10-05 06:17:30 | 185 | 21,8 | 8,0 | 0 | 37 | nicht ok |
| 6 | RW-26-00416 | S1 | 2026-10-05 06:19:11 | 179 | 21,3 | 7,7 | 14 | −38 | ok |
| 7 | RW-26-00417 | S3 | 2026-10-05 06:20:55 | 184 | 21,6 | 7,9 | 14 | 1440 | ok |
| 8 | RW-26-00999 | S1 | 2026-10-05 06:22:40 | 181 | 21,5 | 7,8 | 15 | 40 | ok |
a) Für die Übernahme soll ein ETL-Prozess eingesetzt werden. In der Dokumentation des ETL-Werkzeugs findest Du folgenden Text:
In an ETL process, data is first extracted from one or more source systems, for example machine controllers, databases or CSV files. Only the data needed for the analysis is selected. In the transform step, the extracted data is cleaned and converted: duplicates are removed, units and formats are standardised, invalid values are corrected or flagged, and data from different sources is combined. Finally, the transformed data is loaded into the target system, such as a data warehouse or an analysis database, where it can be queried and visualised. Many ETL tools write a log file in which every rejected or corrected record is documented.
Beschreibe mithilfe des Textes die drei Schritte des ETL-Prozesses kurz auf Deutsch und gib zu jedem Schritt ein Beispiel aus der Übernahme der Schweißdaten an. (6 Punkte)
Je 2 Punkte (Beschreibung und Beispiel):
Extraktion (extract): Die benötigten Daten werden aus einer oder mehreren Quellen gelesen, und nur die für die Analyse relevanten Daten werden ausgewählt. Beispiel: den CSV-Export der Schweißzellen von Rahmenwerk OWL und die Prüfergebnisse der Endkontrolle einlesen, nur die Rahmen für CSB-Rad.
Transformation (transform): Die Daten werden bereinigt und umgewandelt: Duplikate entfernen, Einheiten und Formate vereinheitlichen, ungültige Werte korrigieren oder markieren, Daten aus verschiedenen Quellen zusammenführen. Beispiel: Zeile 2 entfernen, Zeitstempel und Rahmen-Nr. vereinheitlichen, Schweißdaten über die Rahmen-Nr. mit den Prüfergebnissen verknüpfen.
Laden (load): Die umgewandelten Daten werden in das Zielsystem geschrieben, z. B. ein Data Warehouse oder eine Analysedatenbank, in der sie abgefragt und dargestellt werden. Beispiel: in die Analysedatenbank von CSB-Rad laden; abgewiesene oder korrigierte Datensätze stehen im Log.
b) Nenne vier konkrete Probleme der Datenqualität aus dem Auszug. (4 Punkte)
Vier der folgenden, je 1 Punkt:
- Duplikat: Zeilen 1 und 2 sind identisch.
- Ausreißer bzw. Einheitenfehler: Strom 0,179 in Zeile 3 (vermutlich in kA statt A exportiert, also 179 A).
- Uneinheitliche Formate: Zeile 4 mit Rahmen-Nr. ohne Präfix
RW-und Zeitstempel im FormatTT.MM.JJJJ hh:mmohne Sekunden. - Fehlender Wert: Schutzgas in Zeile 4 ist
NULL. - Unplausible bzw. unzulässige Werte: negative Nahtzeit (Zeile 6), Nahtzeit 1440 s (Zeile 7, entspricht 24 min).
- Nicht existierende Bezüge: Zelle S3 gibt es nicht (Zeile 7), Rahmen RW-26-00999 gehört nicht zu den gefertigten Rahmen (Zeile 8).
- Auffälliger, aber möglicherweise echter Wert: Schutzgas 0 l/min in Zeile 5 bei „nicht ok“.
c) Mache für drei der Probleme aus b) jeweils einen begründeten Vorschlag, wie mit den betroffenen Daten umgegangen werden soll. (6 Punkte)
Drei Vorschläge, je 1 Punkt für den Umgang und 1 Punkt für die Begründung, z. B.:
- Zeile 2 löschen: Sie ist ein exaktes Duplikat von Zeile 1; die Information bleibt erhalten, und die Naht würde sonst doppelt gezählt.
- Zeile 3 korrigieren (179 A), aber erst nach Rückfrage: Der Wert liegt um den Faktor 1000 neben allen anderen; wenn Rahmenwerk OWL bestätigt, dass die Zelle in diesem Fall kA exportiert, ist die Umrechnung sicher und wird im Transformationsschritt automatisiert.
- Zeile 4 vereinheitlichen und ergänzen: Präfix
RW-ergänzen und Zeitstempel ins ISO-Format bringen; den fehlenden Schutzgaswert aus dem Anlagenprotokoll nachtragen lassen oder als fehlend markieren – nicht durch einen Durchschnitt ersetzen, weil gerade die nicht bestandenen Nähte untersucht werden sollen. - Zeile 5 behalten und markieren: 0 l/min ist zwar außerhalb des Sollbereichs, erklärt aber vermutlich die poröse Naht (z. B. leere Gasflasche). Würde der Wert gelöscht, ginge die gesuchte Fehlerursache verloren.
- Zeilen 6 und 7: Nahtzeit als fehlend markieren und den Ermittlungsprozess überprüfen lassen: Negative Zeiten und 24 min sind physikalisch bzw. technisch nicht möglich; die übrigen Werte der Zeile bleiben nutzbar.
- Zeilen 7 und 8 zurückstellen und klären: Zelle S3 und Rahmen RW-26-00999 existieren nicht; ohne Rückfrage lassen sich die Werte keinem Rahmen sicher zuordnen.
d) Beschreibe die Begriffe Datenvalidierung und Datenverifizierung und nenne zu jedem ein Beispiel aus dem Auszug. (6 Punkte)
Datenvalidierung (2 Punkte): Prüfung, ob die Daten festgelegten Regeln und Kriterien entsprechen (Datentyp, Format, Wertebereich, Pflichtfeld). Beispiel (1 Punkt): Die Nahtzeit muss eine Zahl zwischen 35 s und 45 s sein → Zeile 6 (−38 s) und Zeile 7 (1440 s) fallen auf; oder: Die Rahmen-Nr. muss dem Muster
RW-JJ-NNNNNentsprechen → Zeile 4.Datenverifizierung (2 Punkte): Prüfung, ob die Daten tatsächlich existieren und korrekt sind, durch Abgleich mit der Realität oder einer verlässlichen Quelle. Beispiel (1 Punkt): Abgleich der Rahmen-Nr. mit den Fertigungsaufträgen → RW-26-00999 wurde nicht gefertigt (Zeile 8); oder Abgleich der Zelle mit dem Anlagenverzeichnis → S3 existiert nicht (Zeile 7).
e) Ein Skript soll unplausible Datensätze automatisch in eine Logdatei schreiben. Eine Regel ist bereits festgelegt:
- Falls die Nahtzeit kleiner als 0 s ist → Log-Meldung „Nahtzeit negativ“ ausgeben.
Ergänze zwei weitere Regeln in derselben Form. (4 Punkte)
Zwei Regeln, je 2 Punkte (Bedingung mit Grenzwert und Einheit, Reaktion), z. B.:
- Falls der Strom außerhalb von 170 A bis 200 A liegt → Log-Meldung „Strom außerhalb des Sollbereichs“, Datensatz markieren.
- Falls der Schutzgaswert fehlt oder kleiner als 12 l/min ist → Log-Meldung „Schutzgas prüfen“.
- Falls die Nahtzeit größer als 90 s ist (doppelte Sollobergrenze) → Log-Meldung „Nahtzeit unplausibel“.
- Falls es zu Rahmen-Nr. und Zeitstempel schon einen Datensatz gibt → Duplikat verwerfen, Log-Meldung „Duplikat“.
- Falls die Zelle nicht S1 oder S2 ist → Log-Meldung „unbekannte Zelle“.
- Falls die Rahmen-Nr. nicht in den Fertigungsaufträgen von CSB-Rad vorkommt → Log-Meldung „Rahmen unbekannt“.
f) Nenne drei Schritte der Datenaufbereitung, die vor der Auswertung der Schweißdaten nötig sind. (3 Punkte)
Je 1 Punkt, z. B.:
- Rohdaten sichern und bereinigen (Duplikate entfernen, fehlerhafte Werte korrigieren oder markieren),
- standardisieren bzw. normalisieren (einheitliche Formate für Zeitstempel und Rahmen-Nr., einheitliche Einheiten),
- fehlende oder fehlerhafte Werte durch gekennzeichnete Ersatzwerte ersetzen oder die Datensätze entfernen,
- nicht benötigte Spalten entfernen,
- Daten aus verschiedenen Quellen zusammenführen (Schweißdaten mit Prüfergebnissen über die Rahmen-Nr.).
g) Werkstattleiter Bastian Ludwig möchte die Rahmenmodelle in „unauffällig“, „beobachten“ und „kritisch“ einstufen. Dafür liegen je Rahmen die Nacharbeitszeit in der Endkontrolle (z. B. 0 min, 3 min, 47 min, 0 min, 12 min …) und die Reklamationen vor. Im Durchschnitt aller Modelle fallen 12 min Nacharbeit je Rahmen und 1,8 Reklamationen je 100 Rahmen an. Am schlechtesten schneidet der Lastenradrahmen „Cargo XL“ mit durchschnittlich 45 min Nacharbeit und 7,5 Reklamationen je 100 Rahmen ab.
ga) Erkläre, warum sich die Rohdaten (Nacharbeitszeit je einzelnem Rahmen) nicht für eine direkte Einstufung eignen, und wie man das Problem lösen kann. (4 Punkte)
- Einzelwerte schwanken stark (viele Rahmen mit 0 min, einzelne mit 47 min); ein einzelner Rahmen sagt wenig über ein Modell aus, und kleine Unterschiede (3 min oder 4 min) sind für die Einstufung unerheblich. (2 Punkte)
- Lösung: Werte je Modell zusammenfassen (Durchschnitt bzw. Quote) und anschließend klassifizieren: Wertebereiche zu wenigen Klassen zusammenfassen und mit den Klassen weiterarbeiten. Durch die Vereinfachung werden die Ergebnisse aussagekräftig. (2 Punkte)
gb) Mache einen Vorschlag, wie ein Rahmenmodell anhand der durchschnittlichen Nacharbeitszeit und der Reklamationen je 100 Rahmen als „unauffällig“, „beobachten“ oder „kritisch“ eingestuft werden kann. (4 Punkte)
Bewertung: drei Klassen, mittlere Klasse enthält den Durchschnitt (1 Punkt), Grenzen für die Nacharbeit (1,5 Punkte), Grenzen für die Reklamationen und Kombination (1,5 Punkte). Beispiel:
| Klasse | Nacharbeit je Rahmen | Reklamationen je 100 Rahmen |
|---|---|---|
| unauffällig | unter 8 min | unter 1 |
| beobachten | 8 min bis 20 min (enthält 12 min) | 1 bis 3 (enthält 1,8) |
| kritisch | über 20 min | über 3 |
Ein Modell wird in die schlechtere der beiden Klassen eingestuft. „Cargo XL“ ist damit kritisch. Andere plausible Grenzen sind möglich.
h) Bei der Endkontrolle in Bielefeld entsteht zu jedem Rahmen ein Prüfprotokoll, z. B.:
- Rahmen-Nr.: RW-26-00415
- Prüfdatum: 12.10.2026
- Ergebnis: nicht ok
- Messwerte:
{"rahmenhoehe_mm": 520, "steuerrohrwinkel_grad": 71.5, "nahtfehler": ["Pore Unterrohr", "Einbrandkerbe Sattelrohr"]} - Foto der Schweißnaht (JPEG)
- Bemerkung: „Naht am Unterrohr porös, vermutlich zu wenig Schutzgas. Kundin informiert, Ersatzrahmen bestellt.“
Erkläre am Prüfprotokoll die Unterscheidung zwischen strukturierten, semistrukturierten und unstrukturierten Daten. (4 Punkte)
- Strukturiert (1 Punkt): Rahmen-Nr., Prüfdatum und Ergebnis haben ein festes Format bzw. einen festen Wertebereich und passen in feste Spalten.
- Semistrukturiert (1 Punkt): Die Messwerte im JSON-Format tragen ihre Struktur über Schlüssel selbst, aber nicht jedes Protokoll enthält dieselben Felder, und die Liste der Nahtfehler ist unterschiedlich lang.
- Unstrukturiert (2 Punkte): Foto und Bemerkung haben kein vorgegebenes Schema; ihr Inhalt muss erst interpretiert werden (Bildauswertung, Text lesen), bevor er ausgewertet werden kann.
Abweichende Zuordnungen sind richtig, wenn sie begründet sind (z. B. „Ergebnis“ als semistrukturiert, falls dort auch Freitext erlaubt ist).
i) Damit die Schweißdaten künftig zuverlässig sind, vereinbaren CSB-Rad und Rahmenwerk OWL Maßnahmen zur Qualitätssicherung und zur Qualitätskontrolle.
ia) Beschreibe die Begriffe Qualitätssicherung und Qualitätskontrolle. (4 Punkte)
- Qualitätssicherung (2 Punkte): alle vorbeugenden, geplanten Maßnahmen, die dafür sorgen, dass die Daten von vornherein die Anforderungen erfüllen, z. B. feste Exportformate und Einheiten, Plausibilitätsprüfungen in der Zelle, Kalibrierung der Sensoren, Verantwortlichkeiten.
- Qualitätskontrolle (2 Punkte): nachträgliche Prüfung der gelieferten Daten gegen festgelegte Anforderungen, Feststellen von Abweichungen und Rückmeldung, z. B. Prüfregeln beim Import, Stichproben, Fehlerquote je Lieferung.
ib) Nenne drei Inhalte, die bei einer Qualitätskontrolle der gelieferten Schweißdaten beachtet werden müssen. (3 Punkte)
Je 1 Punkt, z. B.:
- Prüfkriterien und Prüfregeln festlegen (Vollständigkeit, Plausibilität, Redundanzfreiheit; Grenzwerte aus der Schweißanweisung),
- Umfang festlegen (Vollprüfung jeder Lieferung durch das Skript, zusätzlich Stichproben von Hand),
- Referenzdaten für den Abgleich (Fertigungsaufträge, Anlagenverzeichnis),
- Verantwortlichkeiten (wer prüft, wer korrigiert),
- Dokumentation der Ergebnisse und Rückmeldung an Rahmenwerk OWL, Kennzahlen wie Fehlerquote je Lieferung verfolgen.
j) Schreibe Ole Petersen eine E-Mail. Gib darin zwei Einschätzungen zur Datenqualität des Auszugs und beziehe Dich dabei auf Deine Ergebnisse aus b). Beschreibe außerdem zwei Maßnahmen, mit denen die Probleme bereinigt und die Datenqualität verbessert werden kann. (10 Punkte)
Bewertung: sinnvoller Betreff 1 Punkt, E-Mail-Form (Anrede, Grußformel) 1 Punkt, zwei Einschätzungen mit Bezug auf den Auszug 4 Punkte, zwei Maßnahmen 4 Punkte. Andere Lösungen sind richtig, wenn sie sinnvoll begründet sind.
Betreff: Datenqualität Schweißdaten vom 05.10.2026 – Einschätzung und Vorschläge
Hallo Herr Petersen,
vielen Dank für den Auszug aus dem Export der Schweißzellen. Ich habe ihn auf seine Datenqualität geprüft:
- Die Plausibilität und Genauigkeit einzelner Werte sind nicht ausreichend. Die Nahtzeit ist in einem Datensatz negativ (−38 s) und in einem anderen mit 1440 s unrealistisch hoch; der Strom von 0,179 bei Rahmen RW-26-00413 liegt vermutlich in kA statt A vor.
- Einheitlichkeit und Konsistenz sind eingeschränkt: Eine Rahmen-Nr. hat kein Präfix, ein Zeitstempel hat ein anderes Format, ein Datensatz ist doppelt, und es gibt Angaben zu einer Zelle S3 und einem Rahmen RW-26-00999, die wir keinem Auftrag zuordnen können. Ein Schutzgaswert fehlt.
Wir schlagen vor:
- Standardisierung und Dokumentation: Wir legen gemeinsam ein festes Exportformat fest (Rahmen-Nr. immer
RW-JJ-NNNNN, Zeitstempel im ISO-Format, alle Ströme in A) und beschreiben es in einer Schnittstellendokumentation.- Validierung an der Quelle und beim Import: Ihre Zellen prüfen die Werte schon beim Speichern auf Plausibilität (Nahtzeit größer als 0 s, Zelle S1/S2). Unser Importskript prüft jede Lieferung zusätzlich gegen die Sollbereiche, entfernt Duplikate und schreibt Auffälligkeiten in ein Log, das wir Ihnen wöchentlich zurückmelden.
Den Schutzgaswert 0 l/min bei RW-26-00415 behalten wir bewusst: Er passt zu der porösen Naht, die wir in der Endkontrolle gefunden haben. Können Sie prüfen, ob es am 05.10. gegen 06:17 Uhr eine Störung der Gasversorgung an Zelle S2 gab?
Viele Grüße
(Name), Datenteam CSB-Rad GmbH
Punkte gesamt: 58 (a: 6, b: 4, c: 6, d: 6, e: 4, f: 3, g: 8, h: 4, i: 7, j: 10)
Links und weitere Informationen
Hinweis zur Nachnutzung als Open Educational Resource (OER)
Dieser Artikel und seine Texte, Bilder, Grafiken, Code und sonstiger Inhalt sind - sofern nicht anders angegeben - lizenziert unter CC BY 4.0. Nennung gemäß TULLU-Regel bitte wie folgt: “Übungsaufgaben zu Datenqualität und Datenimport” von oer-informatik.de (H. Stein), Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/datenqualitaet-import-uebungsaufgaben veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/daten-ki/datenanalyse-ki. Erstellt mit KI-Assistenz; von mir umfassend redaktionell überarbeitet, geprüft und freigegeben. Stand: 27.10.2026.
[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]
