Das Ticket-System bildet interne Supportprozesse ab. Es enthält Mitarbeitende, Support-Teams, Tickets, Kommentare, Ereignisse und Labels.
Zentrale Tabellen¶
| Tabelle | Zweck |
|---|---|
users | Personen, die Tickets erstellen oder bearbeiten |
teams | Zuständigkeiten und organisatorische Gruppen |
tickets | eigentliche Support-Fälle |
ticket_comments | Kommunikation und interne Notizen |
ticket_events | nachvollziehbarer Verlauf wichtiger Änderungen |
labels | wiederverwendbare Kategorien |
ticket_labels | n:m-Zuordnung zwischen Tickets und Labels |
Warum diese Fallstudie passt¶
Das Ticket-System ist für Softwareentwickler intuitiv. Gleichzeitig entstehen echte Datenbankfragen:
Ein Ticket muss genau ein erstellendes Benutzerkonto haben.
Ein Ticket kann noch keiner verantwortlichen Person zugewiesen sein.
Ein Ticket kann mehrere Labels erhalten.
Status und Priorität sollen kontrollierte Werte haben.
Kommentar und Event müssen oft in derselben Transaktion gespeichert werden.
Reporting braucht Joins und Aggregationen.
Beispielabfrage¶
Die folgende Query zeigt offene Tickets mit Team und verantwortlicher Person. Weil ein Ticket noch nicht zugewiesen sein muss, wird für die verantwortliche Person ein LEFT JOIN verwendet.
SELECT
t.id,
t.title,
t.status,
t.priority,
team.name AS team_name,
assignee.display_name AS assigned_to
FROM tickets t
JOIN teams team ON team.id = t.team_id
LEFT JOIN users assignee ON assignee.id = t.assigned_to_id
WHERE t.status NOT IN ('resolved', 'closed')
ORDER BY t.priority DESC, t.created_at;Diese Query ist klein, aber sie zeigt bereits die Richtung des Kurses: Datenbankmodell, fachliche Bedeutung und späterer API-Zugriff gehören zusammen.