web-dev-qa-db-fra.com

Conception de la base de données pour une application de suivi du temps

Je concevons le schéma de base de données pour une application de suivi temporel et j'ai besoin d'un petit conseil. L'application doit permettre à l'utilisateur de participer à chaque jour de la semaine du temps qu'il a travaillé pour un projet spécifique. Que serait, à votre avis, la meilleure façon de stocker ces valeurs?

7
Psyche

Regardez le modèle de feuille de temps sur Databaseanswers.org. Cela couvre bien

Simplement, une table avec

  • Date
  • Utilisateur (Table d'utilisateur FK to User)
  • Projet (Table FK à Project)
  • Temps travaillé

Les 3 premières colonnes sont pc.

Maintenant, voulez-vous:

  • activité du journal, par exemple l'analyse, le codage, les tests séparément?
  • bûchez des phases du projet séparément?
  • log Non-projet fonctionne, par exemple une formation, des vacances (p. Ex. Focus de l'utilisateur ou projet?)
  • ...
11
gbn

Dans notre application de suivi temporel , nous enregistrons également les heures de début et de fin du travail. Nous ajoutons une nouvelle ligne dans la base de données pour chaque tâche du jour spécifique et calculez la somme avant de l'afficher. Considérez si ces informations seront utiles à l'avenir, il serait très difficile de l'intégrer plus tard. Ce n'est pas trop compliqué pour regrouper les rangées d'une journée.

J'utiliserais une table de jointure qui connecte l'utilisateur à un projet et stocke également les données supplémentaires.

  user   |    project    |    time     |   date
-------------------------------------------------
    1            39           360        27/09/2011
    2            4            60         27/09/2011
    6            34           500        27/09/2011
    5            34           320        27/09/2011
    12           37           720        27/09/2011
    7            34           50         27/09/2011

Le temps est ici en quelques minutes, mais peut également être en quelques secondes (bien que cela puisse être trop conçu).

Bien sûr, vos clés pour l'utilisateur et le projet peuvent être différentes, mais je pense que vous obtenez ce que je veux dire.

1
DrColossos

J'ai créé une application de suivi temporel avant de permettre à l'administrateur uniquement de mettre à jour les temps. Vous ne voulez pas que aucun utilisateur ne soit capable de modifier leurs heures puisque la triche pourrait être un problème. Si quelqu'un oublie d'accrocher, l'administrateur peut simplement modifier les heures. Si l'utilisateur a un client, cependant, et que les heures ne sont pas les mêmes, elles devraient être en mesure de modifier les heures pour le client mais non comme un employé.

J'ai eu une table utilisateur avec le nom, l'adresse e-mail, la dernière action, etc. de l'utilisateur et une table usertimestamp avec les coups de poing réels.

id int auto_increment
user_id int
action -- whether the user has clocked in, out etc.
clock timestamp -- defaults to the current timestamp
notes text -- allow the user to leave notes if they are late
realtime timestamp -- this is the actual time the punch happened before any editing by an administrator for auditing purposes
ipaddress varchar(255) -- prevent the user from clocking in or out from a place other than designated unless authorized to clock in from anywhere

C'est simplement la table usertimestamp, mais je pense que c'est tout ce que vous cherchiez vraiment. J'ai aussi une table IPS autorisée, une table de la société (car elles peuvent entrer dans une liste d'IPS), des clients pour une entreprise (séparé des employés) et des horodatages clients afin de suivre les temps du client pour la facturation des entreprises distinctes que vous pourriez envisager d'ajouter en fonction de vos besoins.

0
Jonathan Hickman