Frank (no reg): Stundeneingabe erstellen

Beitrag lesen

Hello,

ich kenne viele Zeiterfassungssysteme, die mittels Webinterface arbeiten, ich habe auch selber schon komplette Systeme derer Art programmiert, weiterentwickelt, implementiert. Es gibt so gesehen keinen objektiven Nachteil einer zentralisierten html/php Lösung als Frontend für die Eingabe.

Verwende bitte einen Datensatz pro Zeiterfassung. Eine Zeiterfassung besteht dabei aus

  • Referenz zum Benutzer (dem der die Zeit kontieren will)
  • Referenz zur Tätigkeit (Projekt)
  • optional für feinere Graninität Referenz zur Aufgabe innerhalb des Projekts
  • Referenz zum Datum, bzw. das Datum für welches die Eintragung gelten soll
  • die Menge der zu kontierenden Zeit in der von dir gewünschten genauigkeit (decimal(4,2) erlaubt -99,99 bis +99,99 Std. ...)

Also als Bespiel:

MA           | Projekt     | Aufgabe        | Datum      | Zeit   |
-------------|-------------|----------------|------------|--------|
Müller, M.   | ProjektX    | Dokumentation  | 2007-07-06 | 1.75   |
Müller, M.   | ProjektY    | Programmierung | 2007-07-06 | 4.00   |
Meier, R.    | ProjektX    | Meeting        | 2007-07-06 | 3.25   |

Du verstehst das Konzept?

Sinnlose Eingaben wie > 24.00 pro Tag verhinderst du mit Check-Constraints. Darüber hinausgehende halb-sinnlose Kontierungen wie mehr als 48h pro Woche verhinderst du durch die Geschäftslogik in PHP.

Es ist vollkommen unkritisch (wenn du nicht gerade mit Technik von 1965 arbeitest), 50.000 Datensätze für ein Jahr zu haben. Dein DBMS bietet dir für die Abfrage mind. 1 Möglichkeit zur Performancesteigerung - Indizierung.

Was du jetzt zur Auswertung betreiben kannst ...

  • gib mir die gesamtzahl Stunden für Projekt X im Zeitraum ...
  • gib mir die monatlich kontierten Stunden pro Mitarbeiter für die letzten 12 Monate

Das erreichst du durch den Gebrauch von Aggregatsfunktionen wie SUM(), AVG(), GROUP BY in eigentlich sehr trivialen SELECT Queries.

Obiges Modell kann natürlich noch soweit Normalisiert werden, dass die Tabelle technisch so aussieht:

MA-ID | Projekt-ID  | Aufgabe-ID | Datum      | Zeit   |
------|-------------|------------|------------|--------|
123   | 1           | 5          | 2007-07-06 | 1.75   |
123   | 2           | 3          | 2007-07-06 | 4.00   |
254   | 1           | 12         | 2007-07-06 | 3.25   |

Dazu hast du dann separate Tabellen für MA, Projekte, Aufgaben, die über deren Primärschlüssel mit obiger Tabelle verbunden sind.

Normalisierung ist ne feine Sache, allerdings hebt das überhaupt nix in Sachen Vielfältigkeit der Auswertungsmöglichkeiten. Entweder die Daten (Graninität) sind da oder sie sind nicht da.

Mehr fällt mir jetzt grad nicht mehr ein. :)

Ciao, Frank