Datenmodell-Schulungskonsole

Interaktive Schulungsoberfläche für relationale Normalisierung in SQL und flexible Dokumentmodelle in MongoDB.

SQL + MongoDB
Relationen & Regeln
SQL-Track · Schritt 2 / 5

Qualitätsprüfung

Die Oberfläche zeigt den Weg von Excel-Rohdaten über Qualitätsprobleme und Bereinigung bis zur relational normalisierten Datenbank.

Schulungsfluss aktiv
Schritt 2: Datenqualitätsanalyse — Bevor wir normalisieren, müssen wir verstehen, was alles kaputt ist. Die automatische Analyse hat folgende Probleme in den Excel-Daten gefunden:

⚠️ Inkonsistente Datumsformate

raw_kunden.Geburtsdatum 150 betroffen

d.m.yy: 10.1.72 | d.m.yy: 12.1.85 | d.m.yy: 12.3.78 | d.m.yy: 13.1.79 | d.m.yy: 13.11.97 | d.m.yy: 13.12.92 | d.m.yy: 13.2.88 | d.m.yy: 13.9.96 | d.m.yy: 15.3.75 | d.m.yy: 15.4.64 | d.m.yy: 16.10.99 | d.m.yy: 18.5.01 | d.m.yy: 19.5.67 | d.m.yy: 19.6.91 | d.m.yy: 2.9.80 | d.m.yy: 20.3.02 | d.m.yy: 22.11.84 | d.m.yy: 22.11.90 | d.m.yy: 22.12.98 | d.m.yy: 22.4.60 | d.m.yy: 23.10.68 | d.m.yy: 23.3.57 | d.m.yy: 24.1.84 | d.m.yy: 24.12.61 | d.m.yy: 25.10.01 | d.m.yy: 26.3.58 | d.m.yy: 26.8.71 | d.m.yy
Excel speichert Daten oft als Text. Verschiedene Nutzer geben Daten in verschiedenen Formaten ein. Eine relationale DB erzwingt ein einheitliches DATE-Format.

⚠️ Inkonsistente Telefonnummern-Formate

raw_kunden.Telefon 6 betroffen

(0201) 5775901 | (0201) 6156793 | (0231) 4131647 | (0251) 1775140 | (030) 3850506 | (0351) 4458771 | (040) 9728962 | (0421) 1522047 | (0421) 2775841 | (0421) 6482366 | (0511) 1429396 | (0511) 6319314 | (069) 5250029 | (069) 6179640 | (0711) 0863536 | (089) 6998543 | (0911) 5719182 | (0911) 7175655 | (0911) 8727743 | +49 211 030 5486 | +49 211 982 1465 | +49 231 132 3705 | +49 231 623 1665 | +49 251 008 8600 | +49 30 112 8059 | +49 341 131 8699 | +49 341 143 8424 | +49 341 270 8668 | +49 351 726
Telefonnummern kommen in mindestens 6 verschiedenen Formaten vor. In einer DB würde man ein einheitliches Format erzwingen oder die Nummer vor dem Speichern normalisieren.

⚠️ Inkonsistente Straßen-Schreibweisen

raw_kunden.Strasse 46 betroffen

str., straße
Dieselbe Straße wird unterschiedlich geschrieben: "Hauptstraße", "Hauptstr.", "Hauptstrasse". In einer normalisierten DB könnte man eine Straßentabelle mit eindeutigen IDs nutzen.

⚠️ Gemischte Dezimaltrenner (Punkt und Komma)

raw_produkte.Preis 186 betroffen

Mit Komma: 337,21 | Mit Punkt: 224.0
Deutsche Excel-Versionen nutzen Komma als Dezimaltrenner, englische den Punkt. Beim Import entstehen so fehlerhafte Zahlenwerte. Eine DB nutzt DECIMAL und akzeptiert nur ein Format.

⚠️ Inkonsistente Kategorie-Schreibweisen

raw_produkte.Kategorie 25 betroffen

Auto . | Auto & Motorrad | Bücher | Bürob. | Bürobedarf | Elekt. | elektronik | Garten | Haush. | Haushalt | Kleid. | KLEIDUNG | Kosme. | KOSMETIK | Leben. | lebensmittel | möbel | musik | Spiel. | spielzeug | Sport | Tierb. | Tierbedarf | Werkz. | werkzeug
Dieselbe Kategorie erscheint in verschiedenen Schreibweisen: "Elektronik", "ELEKTRONIK", "elektronik", "Elekt.". In einer normalisierten DB gäbe es eine Kategorietabelle mit festen IDs.

⚠️ 1. Normalform verletzt: Mehrere Werte in einer Zelle

raw_bestellungen.Produkte 152 betroffen

Kompakt Mehl; Kompakt Fahrradhelm; Robust Säge; Leicht Mülleimer; Robust Scheibenwischer
Die 1. Normalform verlangt: Jede Zelle enthält genau EINEN atomaren Wert. Hier stehen mehrere Produkte in einer Zelle, getrennt durch Semikolon. Das macht Abfragen wie "Welche Bestellungen enthalten Produkt X?" extrem schwierig.

⚠️ Redundante Daten (Denormalisierung)

raw_bestellungen.Kundenname/Kundenort 200 betroffen

Bestellung hat Kundenname="Ottilie Schmid", Kundenort="Ulm" — diese Info steht schon in der Kundentabelle!
In Excel werden Kundendaten oft in die Bestelltabelle kopiert. Problem: Wenn sich eine Adresse ändert, muss man sie an VIELEN Stellen ändern (Update-Anomalie). In einer relationalen DB reicht ein Fremdschlüssel auf die Kundentabelle.

⚠️ Inkonsistente Schlüsselformate

raw_kunden.Kundennummer 41 betroffen

Mit Nullen: K00001 | Ohne Nullen: K2
Kundennummern existieren als "K1" und "K00001" — Excel verliert führende Nullen wenn man Zellen nicht als Text formatiert. Eine DB nutzt AUTO_INCREMENT Integer-IDs.

⚠️ Verwaiste Referenzen (Kunden existieren nicht)

raw_bestellungen.Kundennummer 12 betroffen

K205, K207, K211, K218, K222, K235, K249, K264, K282, K284, K293
Diese Bestellungen verweisen auf Kundennummern, die in der Kundentabelle NICHT existieren. In einer relationalen DB verhindert ein FOREIGN KEY solche Inkonsistenzen.

⚠️ Inkonsistente Einheiten und Formate

raw_produkte.Gewicht 500 betroffen

g: 10100 g | g: 10370 g | g: 11020 g | g: 11070 g | g: 11090 g | g: 11350 g | g: 11760 g | g: 11810 g | g: 11850 g | g: 11970 g | g: 120 g | g: 12080 g | g: 12120 g | g: 12300 g | g: 12330 g | g: 12400 g | g: 1260 g | g: 12710 g | g: 13610 g | g: 13710 g | g: 13800 g | g: 13870 g | g: 140 g | g: 1420 g | g: 14260 g | g: 14570 g | g: 15710 g | g: 15750 g | g: 15820 g | g: 15940 g | g: 16260 g | g: 16360 g | g: 16800 g | g: 16980 g | g: 17170 g | g: 17270 g | g: 17330 g | g: 17540 g | g: 17640 g |
Gewichte erscheinen mit verschiedenen Einheiten (kg, g, KG, Kg) oder ganz ohne Einheit. Eine DB würde ein DECIMAL-Feld mit definierter Einheit nutzen.

⚠️ Inkonsistente Datumsformate

raw_bestellungen.Bestelldatum 200 betroffen

d.m.yyyy: 1.3.2024 | d.m.yyyy: 1.3.2026 | d.m.yyyy: 11.2.2025 | d.m.yyyy: 12.4.2025 | d.m.yyyy: 12.8.2024 | d.m.yyyy: 15.9.2026 | d.m.yyyy: 16.3.2024 | d.m.yyyy: 16.3.2025 | d.m.yyyy: 16.6.2025 | d.m.yyyy: 16.6.2026 | d.m.yyyy: 17.2.2024 | d.m.yyyy: 17.3.2024 | d.m.yyyy: 17.5.2025 | d.m.yyyy: 17.6.2026 | d.m.yyyy: 17.7.2024 | d.m.yyyy: 18.7.2024 | d.m.yyyy: 18.8.2025 | d.m.yyyy: 18.9.2025 | d.m.yyyy: 19.3.2026 | d.m.yyyy: 2.3.2024 | d.m.yyyy: 2.6.2025 | d.m.yyyy: 21.2.2024 | d.m.yyyy: 21.5.2025
Auch Bestelldaten kommen in verschiedenen Formaten. Filtern nach Zeiträumen ist so kaum möglich.

⚠️ Abweichende Schreibweisen zwischen Tabellen

raw_bestellungen.Kundenname 13 betroffen

ANDREAS KAISER ≠ Andreas Kaiser | FELIX VOGT ≠ Felix Vogt | GEORG WOLF ≠ Georg Wolf | JAN KUHN ≠ Jan Kuhn | JASMIN KAISER ≠ Jasmin Kaiser | JULIA KUHN ≠ Julia Kuhn | JULIA WOLF ≠ Julia Wolf | MANFRED SCHMID ≠ Manfred Schmid | NORBERT MEYER ≠ Norbert Meyer | PHILIPP SCHOLZ ≠ Philipp Scholz | REGINA LORENZ ≠ Regina Lorenz | TANJA BAUER ≠ Tanja Bauer | VERA FISCHER ≠ Vera Fischer
Der Kundenname in Bestellungen weicht von der Kundentabelle ab (z.B. GROSSBUCHSTABEN, Umlaute als ue/oe). Das ist das Kernproblem der Redundanz: Daten an mehreren Stellen → Inkonsistenz!