2009-03-11 3 views
0

ich Modell Zeiterfassungen bin versucht, verrechenbaren Stunden, Projekte, BenutzerWas ist der beste Weg, Zeiterfassungen zu repräsentieren in der Datenbank

Was ist der beste Weg, um diese in einer Datenbank zu repräsentieren

mehr über die Frage Ausarbeiten: Mein größtes Dilemma ist, wie aktuell zu halten, Stunden, Projekt zusammen

Ein mögliche Lösung

Benutzer (PK-ID, Name)

Project (PK-ID, Name, FK user_id)

BillableHour (PK id, FK project_id, Stunden, Datum)

Dank

+0

Als Tabellen starten. : Ernsthaft, können Sie die Frage verfeinern, um etwas genauer zu sein? Haben Sie Probleme zwischen zwei (oder mehr) Optionen zu entscheiden? –

Antwort

0

Ich kann Ihnen von einem sehr hohen Niveau sagen, wie ich es für eine sehr einfache Zeit halten App getan haben. Obwohl das nicht unbedingt der beste Weg ist.

Ich habe im Moment kein praktisches ER-Diagramm, aber das ist nur ein sehr einfacher Ausgangspunkt für eine Reihe von Tabellen.

Benutzer ID PK

Userrole UserID FK RoleID FK

Rolle ID PK Namen

UserProject ID PK UserID FK ProjectID FK HoursAvailable

Kunden ID PK Namen

Projekt ID PK CustomerID FK

Entrytype ID PK Namen (d abrechenbaren, nicht abrechenbar, etc.)

Eintrag ID PK UserID FK ProjectID FK EntryTypeID FK Stunden Datum Taskname (dies weiter normalisiert werden könnte, insb. wenn Sie einen Eimer Aufgaben haben wollen) Beschreibung

Ich könnte weitermachen, aber Sie bekommen die Idee.

1

Beginnen Sie mit den gewünschten Berichten und arbeiten Sie rückwärts.

Die minimale Eingabeeinheit ist Aktivität, Dauer, aber wenn Sie dieses Minimum verwenden, werden Sie mit Aktivitäten wie sri.attends.scrum.for.parisian.branch.of.client50.via.scype.from.home enden .zu.besprechen.installation.routine.von.zoom22, und Ihr Bericht Code wird eine Menge von Switch-Anweisungen.

Vermutlich haben Sie mindestens einen Bericht mit einem Namen, einer Aktivitätsbeschreibung und einer Gesamtzeit für einen bestimmten Zeitraum. Wenn dies Ihr einziger Bericht ist, können Sie ihn als Liste mit vier Feldern implementieren: Worker (Zeichenfolge), Task (Zeichenfolge), Start (Zeit), Dauer (Ganzzahl). Wenn ein Bericht nach allen Aktivitäten fragt, die jemals einem bestimmten Projekt zugewiesen wurden, oder nach einem Zeitraum für Aktivitätstyp X oder einem Bericht, der bestimmten Clients Aktivitäten zuordnet, profitiert Ihr Entwurf von mehr Feldern.

Vielleicht haben Sie einen Bericht, der installing.server.updates im Homeoffice und installing.server.updates unter aktiven feindlichen Schüssen in einer Kriegszone unterscheidet. Wenn Sie ein "while.a.target" -Kontrollkästchen auf Ihrem Zeitprotokollierungsbildschirm haben, könnte das für Ihre Benutzer eine echte Zeitersparnis bedeuten.

0

Hier ist eine kurze (und unvollständige) Übersicht über einige der Tabellen-System meiner alten Buchhaltung verwendet:

  • Benutzer: die Person, die das System verwendet wird; Name, Passwort, usw.
  • Einheit: ein Unternehmen oder ein Unternehmen; Name, Regierungs-IDs usw.
  • Projekt: ein Projekt, das in Rechnung gestellt werden kann; Name, Anbieter Einheit, Client-Einheit
  • Zeiterfassungs: ein Zeiterfassungs Eintrag: Benutzer, Projekt, Uhrzeit/Datum, die Anzahl der Stunden, die Beschreibung der Arbeit
Verwandte Themen