Inhaltsverzeichnis
Datenbankstruktur – Bewerbungsnachweis
Ăśberblick
Die Datenbank bildet den vollständigen Lebenszyklus einer Bewerbung ab – von der Firma über die konkrete Stelle bis hin zu Bewerbung, Statusverlauf und zugehörigen Belegen.
Ziel der Struktur ist:
- klare Trennung der fachlichen Objekte
- vollständige Nachvollziehbarkeit aller Änderungen
- saubere Referenzen ohne Redundanz
- einfache Auswertbarkeit fĂĽr Druck- und Exportfunktionen
Die Datenbank ist normalisiert, aber bewusst pragmatisch gehalten.
Ăśbersicht der Tabellen
| Tabelle | Beschreibung |
|---|---|
firma | Stammdaten der Unternehmen |
stelle | Konkrete Stellen/Ausschreibungen |
bewerbung | Einzelne Bewerbungen |
status_verlauf | Historie aller Statusänderungen |
dokument | Zugeordnete Belege |
v_nachweis_bewerbungen_mit_belegen | Konsolidierte Nachweissicht (View) |
Tabelle: `firma`
Speichert die Stammdaten der Unternehmen, bei denen Bewerbungen erfolgen.
Zweck
- Zentrale Pflege von Firmendaten
- Mehrfachverwendung fĂĽr mehrere Stellen/Bewerbungen
Wichtige Felder
| Feld | Typ | Beschreibung |
|---|---|---|
firma_id | INT (PK) | Eindeutige ID |
name | VARCHAR | Name der Firma |
ort | VARCHAR | Ort / Sitz |
webseite | VARCHAR | Firmenwebseite |
notizen | TEXT | Freie Zusatzinformationen |
created_at | DATETIME | Zeitpunkt der Anlage |
Tabelle: `stelle`
Repräsentiert eine konkrete Ausschreibung oder Position bei einer Firma.
Zweck
- Trennung von Firma und konkreter Stelle
- Wiederverwendbarkeit (z. B. mehrere Bewerbungen auf ähnliche Positionen)
Beziehungen
- gehört zu genau einer Firma
Wichtige Felder
| Feld | Typ | Beschreibung |
|---|---|---|
stelle_id | INT (PK) | Eindeutige ID |
firma_id | INT (FK) | Verweis auf firma |
titel | VARCHAR | Stellentitel |
referenznummer | VARCHAR | Interne/öffentliche Referenz |
stellen_url | VARCHAR | URL zur Ausschreibung |
quelle_plattform | VARCHAR | Quelle (z. B. Portal) |
ort_text | VARCHAR | Arbeitsort (Text) |
arbeitsmodell | VARCHAR | Vor Ort / Hybrid / Remote |
beschaeftigung | VARCHAR | Vollzeit / Teilzeit |
notizen | TEXT | Zusatzinfos |
Tabelle: `bewerbung`
Zentrale Tabelle fĂĽr jede einzelne Bewerbung.
Zweck
- VerknĂĽpft Stelle, Datum, Kanal und aktuellen Status
- Dient als Ausgangspunkt fĂĽr Statusverlauf und Belege
Besonderheit
Der aktuelle Status wird hier redundant gespeichert, um schnelle Abfragen zu ermöglichen.
Die vollständige Historie liegt in status_verlauf.
Wichtige Felder
| Feld | Typ | Beschreibung |
|---|---|---|
bewerbung_id | INT (PK) | Eindeutige ID |
stelle_id | INT (FK) | Verweis auf stelle |
bewerbungsdatum | DATE | Datum der Bewerbung |
kanal | VARCHAR | Bewerbungsweg |
aktueller_status | VARCHAR | Letzter Status |
naechstes_nachfassen | DATE | Erinnerungsdatum |
betreff | VARCHAR | Betreff / Titel |
notizen | TEXT | Freie Notizen |
Tabelle: `status_verlauf`
Speichert jede Statusänderung einer Bewerbung als eigenen Datensatz.
Zweck
- Revisionssichere Nachvollziehbarkeit
- Keine Überschreibung von Zuständen
Typische Statuswerte
offennachfassen_geplantrueckmeldungeinladungabsageangebotkeine_antwortzurueckgezogen
Wichtige Felder
| Feld | Typ | Beschreibung |
|---|---|---|
status_verlauf_id | INT (PK) | Eindeutige ID |
bewerbung_id | INT (FK) | Zugehörige Bewerbung |
status | VARCHAR | Neuer Status |
status_datum | DATE | Datum der Änderung |
quelle | VARCHAR | Quelle (Portal, E-Mail, etc.) |
notizen | TEXT | Erläuterungen |
Tabelle: `dokument`
Enthält alle Belege, die einer Bewerbung zugeordnet sind.
Zweck
- Dokumentation der Nachweise
- VerknĂĽpfung von Datei oder externer URL
UnterstĂĽtzte Typen (Beispiele)
- Anschreiben
- Lebenslauf
- Stellenanzeige
- Portalbestätigung
- Einladung
- Absage
- Sonstiges
Wichtige Felder
| Feld | Typ | Beschreibung |
|---|---|---|
dokument_id | INT (PK) | Eindeutige ID |
bewerbung_id | INT (FK) | Zugehörige Bewerbung |
typ | VARCHAR | Dokumenttyp |
dateipfad | VARCHAR | Pfad zur Datei |
url | VARCHAR | Alternative externe URL |
erstellt_am_datum | DATE | Dokumentdatum |
notizen | TEXT | Zusatzinformationen |
View: `v_nachweis_bewerbungen_mit_belegen`
Konsolidierte Lesesicht fĂĽr Auswertungen.
Zweck
- Zentrale Datenquelle fĂĽr:
- Dashboard
- Drucknachweis
- CSV-Export
- Entlastung der PHP-Logik
Enthaltene Informationen
- Bewerbungsdaten
- Firmenname
- Stellentitel
- Aktueller Status
- Anzahl der zugehörigen Dokumente
Vorteil
Änderungen an der Darstellung können auf Datenbankebene erfolgen, ohne PHP-Code anzupassen.
Referentielle Integrität
Alle Tabellen sind ĂĽber Foreign Keys logisch verknĂĽpft:
- snippet.text
firma └── stelle └── bewerbung ├── status_verlauf └── dokument
Löschungen erfolgen bewusst nicht automatisch, um Datenverlust zu vermeiden.
Designentscheidungen (bewusst)
- Statushistorie als eigene Tabelle (kein Ăśberschreiben)
- Dokumente logisch getrennt von Bewerbung
- View statt komplexer JOINs im Code
- Keine unnötigen ENUMs → erweiterbar
- Textfelder für reale Flexibilität
Wartung & Erweiterbarkeit
Die Struktur ist vorbereitet fĂĽr:
- zusätzliche Statusarten
- weitere Dokumenttypen
- statistische Auswertungen
- zeitbasierte Reports
Ohne strukturelle Änderungen an bestehenden Tabellen.
Zusammenfassung
Die Datenbankstruktur ist:
- fachlich sauber getrennt
- nachvollziehbar aufgebaut
- revisionssicher
- wartungsfreundlich
- langfristig erweiterbar
Sie bildet die Grundlage für einen belastbaren, formalen Bewerbungsnachweis und ist bewusst unabhängig von externen Systemen.