Case Study / 2024

Relationales Datenbank-Design für eine Airport-Ticketing-Plattform

SQL-Server-Schema für Passenger-Management, Flugplanung, Reservierungen, Ticketing, Gepäck und ergänzende Services.

3 min Lesezeit

AirWave Express Ticketing System Thumbnail mit Flugbahn und Flugzeug

Das Schema ist das Rückgrat.

Airport-Ticketing-Systeme sitzen an der Schnittstelle von rund einem Dutzend Workflows, die alle konsistent bleiben müssen: Passagier-Datensätze, die sich über Reservierungen aktualisieren, Flugpläne, die sich ändern, während Tickets bereits ausgestellt sind, Gepäcktracking, das am richtigen Passagier und Flug hängen muss, ergänzende Services (Mahlzeiten, Seat Upgrades), die korrekt abrechnen müssen, auch wenn die zugrundeliegende Buchung modifiziert wird.

Das Schema ist das Rückgrat von all dem. Falsch gemacht, und jeder Workflow oben drauf wird auf eine andere Art korrumpiert.

Sieben Entitäten, Integrität by Construction.

Sieben Kern-Entitäten: Employee, Passenger, Flight, Reservation, Ticket, AdditionalServices, Baggage. Jede hat einen sauberen Primary Key, der über eine SQL-Server-Sequence generiert wird (z. B. EmployeeSeq kombiniert mit trgGenerateEmployeeID Trigger). Foreign Keys erzwingen die Beziehungen, die über Zeit halten müssen: ein Ticket kann nicht ohne seine Reservation existieren, eine Reservation nicht ohne Passenger und Flight.

Constraints erledigen den Rest. CHECK Constraints auf Datumsreihenfolge (Departure kann nicht vor Arrival liegen), NOT NULL auf jedem Feld, das in einem echten Ticketing-Workflow nie optional sein darf, UNIQUE Constraints auf den Dingen, die eindeutig sein müssen (Reisepassnummern, Flugcodes pro Datum).

Was ausgeliefert wurde.

7 Entitäten
zentrale Ticketing-Fläche
Sequences
+ Triggers für ID-Generierung
FK / CHECK
NOT NULL · UNIQUE
Projektbericht
Design-Rationale enthalten

Vollständiges SQL-Server-Schema mit sieben Tabellen, automatisierter ID-Generierung über Sequences und Triggers, vollständige referenzielle Integrität über Foreign Keys, und Constraint-Abdeckung über die operative Fläche. Das Repository enthält das Schema-Skript und einen Projektbericht, der die Design-Rationale durchgeht.

Lehren.

Auto-generierte IDs über Sequences plus Triggers sind eleganter als der IDENTITY-Column-Ansatz, wenn man IDs braucht, die einem bestimmten Format oder Naming-Pattern folgen. Einmal eingerichtet, läuft jedes INSERT einfach. Der Trigger erledigt die Arbeit, die sonst die Application machen müsste, und der Vorteil entsteht auf Datenbankebene.

→ GitHub Repository