Hallo Patrick,
das ist natürlich eine größere Aufgabe, so dass ich hier mal mit einem Vorschlag für eine Datenbank-Struktur anfangen möchte. Diese basiert aber auch schon auf ein paar Ideen für die spätere Anwendung.
1. Tabelle: Mitarbeiter
Diese enthält eine ID, sowie die pers. Daten der MA einschließlich Geburtsdatum.
2. Tabelle: Arbeitszeit
Ich würde die Arbeitszeit jedes Mitarbeiters hier speichern. Ich habe auch einige andere Strukturen erwägt, meine aber, dass diese hier recht günstig ist.
Die Felder sind: ID des MA, Jahr, Woche, Schicht
Zwei weitere Tabellen dienen dazu spezielle Profile zu speichern, die später genutzt werden können, um die Tabelle 2 zu füllen.
3. Tabelle: Wochenprofil
Hier können Profile gespeichert werden, die die Arbeitszeitverteilung speichern:
Die Felder sind: Name (des Profils), StartWoche, Dauer, Abstand
Die Idee ist dann wie folgt: Weist man einer oder mehreren MA für ein Jahr ein Profil zu, erzeugt das System die entsprechenden Einträge in Tabelle 2. Du solltest aber auch vorsehen, dass man Profile manuell eingeben kann.
Beispiel:
Name StartWoche Dauer Abstand
ZweiWochen 1 2 1
soll bedeuten. Das Profil "ZweiWochen" bedeutet, dass ab Kalenderwoche 1 der MA jeweils 2 Wochen am Stück arbeitet und dann 1 Woche frei hat.
4. Tabelle: Schichtprofil
Die Felder sind: Name (des Profils), Reihenfolge, StartWoche, EndWoche
Beispiel:
Name Reihenfolge StartWoche EndWoche
Wechselschicht FMS 3 36
Wechselschicht heißt dann pro Woche Früh/Mittag/Spätschicht ab Woche 3 bis Woche 36.
5. Tabelle: Einschränkung
Felder: ID Des MA, Art der Einschränkung
Hier solltest du die eine vernünftige Darstellung von Einschränkungen einfallem lassen. Z.B. MA macht keine Frühschicht. Dann könntest du bei der Zuweisung auf Fehler prüfen.
So das soll mal der erste Schritt sein.
Fortsetzung folgt, wenn dir alles klar ist und du das Konzept übernehmen willst.
_________________
Live long and prosper
MrSpock \\//