Der Kern ist die Bestellung als Zustandsmaschine. Eine Bestellung ist kein Datensatz, der irgendwann als erledigt markiert wird, sondern durchläuft feste Zustände: eingegangen, bezahlt, kommissioniert, versandt, zugestellt — und daneben die unbequemen Zweige: Zahlung fehlgeschlagen, Zahlung nachträglich eingegangen, Stornierung, Rücksendung.
Zahlung und Versand hängen als externe Dienste daran. Beide melden asynchron zurück: Der Zahlungsdienst sagt später, ob das Geld angekommen ist, der Versanddienstleister später, wo das Paket ist. Der Shop führt deshalb je Bestellung zwei zusätzliche Zustände, die nicht seine eigenen sind — und muss damit umgehen, dass sie verspätet, mehrfach oder gar nicht eintreffen.
Darunter liegen Produkt- und Kundenverwaltung sowie die Auswertung zu Umsatz und Bestellhäufigkeit, die der Sortimentsplanung dient. Die Auswertung liest aus denselben Bestelldaten — es gibt keine zweite Tabelle, die jemand pflegen müsste.