30 Treffer statt 1 - wo liegt der Fehler?
Ein Artikel, dreißig Suchergebnisse
Kundinnen und Kunden erwarten ein Suchergebnis für ein T-Shirt - mit Auswahl von Größe und Farbe auf der Produktseite. Hà sieht in der IT-Schulung am Donnerstagvormittag das Gegenteil: Sie tippt "Basic T-Shirt" in die Shopsuche ihres Ausbildungsbetriebs und bekommt 30 Treffer. Jede Größen-Farb-Kombination wurde als eigener Artikel angelegt. Die Absprungrate auf Kategorieseiten ist um 40 Prozent gestiegen. Bei 200 Produkten mit Varianten wären das über 6.000 Einzeleinträge.
Die Produktkategorisierung ist die Grundlage für die Shop-Navigation. Aber Kategorien allein lösen dieses Problem nicht. Entscheidend ist, wie die Daten in der Datenbank organisiert sind, auf die der Server bei jeder Suchanfrage zugreift.
Tabellen, Schlüssel, Beziehungen
Eine relationale Datenbank speichert Daten in getrennten Tabellen, die über Schlüsselfelder miteinander verknüpft sind:
- Jede Tabelle hat einen Primärschlüssel (Primary Key) - ein Feld, das jeden Datensatz eindeutig identifiziert. In der Kundentabelle ist das z.B. die
Kunden_ID. - Eine andere Tabelle kann diesen Wert als Fremdschlüssel (Foreign Key) übernehmen. Die Bestelltabelle enthält die
Kunden_IDals Fremdschlüssel und verweist damit auf die richtige Person.
Vorteil der Trennung: Ändert sich eine Kundenadresse, aktualisierst du sie an genau einer Stelle. Alle Bestellungen verweisen weiterhin korrekt. Zweiter Vorteil: Kundendaten und Produktdaten lassen sich unabhängig pflegen, ohne dass ein Fehler in der Produkttabelle Kundendatensätze beschädigt.
🎬 Vorstellung: Stell dir die Datenbank deines Ausbildungsbetriebs vor - eine Tabelle für Kundinnen und Kunden, eine für Bestellungen, eine für Produkte. Welches Feld verbindet eine Bestellung mit der richtigen Person?
Wie wird aus 30 Einzelartikeln ein Produkt mit Varianten?
Stammartikel und Varianten trennen
Um das Problem aus der Schulung zu lösen, brauchst du zwei Tabellen statt einer:
Die Stammartikel-Tabelle enthält alles, was für alle Varianten gleich ist: Produktname ("Basic T-Shirt"), Beschreibung, Basispreis. Jeder Stammartikel bekommt eine eindeutige Stamm_ID als Primärschlüssel.
Die Varianten-Tabelle speichert die Unterschiede: Größe, Farbe, eigene Artikelnummer (SKU) und Lagerbestand. Jede Variante verweist über den Fremdschlüssel Stamm_ID auf ihren Stammartikel.
Ergebnis: Das T-Shirt existiert einmal als Stammartikel. Die Shopsuche zeigt einen Treffer. Erst auf der Produktseite wählen Kundinnen und Kunden Größe und Farbe aus den verknüpften Varianten.
Drei Beispieldatensätze im Detail
So sehen die Daten konkret aus:
Stammartikel-Tabelle:
Varianten-Tabelle:
Alle drei Varianten verweisen über Stamm_ID = 101 auf denselben Stammartikel. Kommt eine neue Farbe hinzu, fügst du nur eine Zeile in der Varianten-Tabelle ein. Am Stammartikel ändert sich nichts.
🔮 Bevor du weiterliest: Was passiert in der Shopsuche, wenn jemand versehentlich eine Variante mit Stamm_ID 999 anlegt, die in der Stammartikel-Tabelle gar nicht existiert?
Was passiert, wenn die Datenstruktur nicht stimmt?
Verwaiste Daten, unsaubere Filter
Eine Variante ohne gültigen Fremdschlüssel ist ein "verwaister" Datensatz. Sie taucht entweder gar nicht in der Suche auf oder erzeugt einen Fehler auf der Produktseite. Gut konfigurierte Datenbanken prüfen deshalb beim Anlegen, ob der referenzierte Stammartikel existiert.
Zwei weitere Probleme zeigen, wie stark Datenqualität die Shopfunktionen beeinflusst:
Unsaubere Attributpflege: Wenn eine Person "Weiss" einträgt, eine andere "weiß" und eine dritte "White", zeigt der Farbfilter drei separate Optionen statt einer. Kundinnen und Kunden finden nicht alle passenden Produkte. Die Trefferqualität sinkt messbar.
Fehlende Normalisierung: Werden Kunden- und Produktdaten in einer einzigen Tabelle gespeichert, entstehen Redundanzen. Ändert sich ein Preis, muss er in Hunderten von Zeilen aktualisiert werden. Wird eine Zeile vergessen, zeigt der Shop widersprüchliche Preise.
Vom Chaos zur sauberen Struktur
So hätte es in Hàs Shop laufen müssen: Ein sauber normalisiertes Datenmodell mit Stammartikel- und Varianten-Tabelle, einheitliche Schreibweisen über Dropdown-Felder statt Freitexteingabe, und Fremdschlüssel-Prüfungen, die verwaiste Datensätze verhindern. Die 30 Einzelartikel schrumpfen auf einen Stammartikel mit Varianten. Die Suche liefert ein Ergebnis, Filter funktionieren zuverlässig, und die Pflege von 200 Produkten bleibt handhabbar.
🤔 Frage dich: Wie würdest du vorgehen, wenn in deinem Ausbildungsbetrieb ein neues Produkt mit 4 Größen und 3 Farben angelegt werden soll - welche Tabellen brauchst du, und wie stellst du sicher, dass die Farbbezeichnungen einheitlich bleiben?
Teste dein Wissen
Du bist Auszubildende:r im E-Commerce und analysierst die Datenbankstruktur deines Shops. Warum ist die Trennung von Kunden- und Bestelldaten in zwei Tabellen sinnvoll?