2009-03-11 13 views
0

Je suis en train de feuilles de temps du modèle, les heures facturables, les projets, les utilisateursQuelle est la meilleure façon de représenter les feuilles de temps dans la base de données

Quelle est la meilleure façon de représenter dans une base de données

Développant plus sur la question: ma plus grande situation est de savoir comment garder la date, heure, projet ensemble

Une solution possible

utilisateur (id PK, nom)

projet (id PK, nom, FK user_id)

BillableHour (id PK, FK project_id, heure, date)

Merci

+0

sous forme de tableaux. :-) Sérieusement, peux-tu affiner la question pour être un peu plus spécifique? Avez-vous des problèmes à choisir entre deux options (ou plus)? –

Répondre

0

je peux vous dire d'un très haut niveau que je l'ai fait pendant un certain temps très simple app garder. Bien que ce ne soit pas nécessairement le meilleur moyen.

Je n'ai pas de diagramme ER maniable à partager pour l'instant, mais c'est juste un point de départ très basique pour un ensemble de tables.

utilisateur ID PK

UserRole UserID FK RoleID FK

Rôle ID PK Nom

UserProject ID PK UserID FK ProjectID FK HoursAvailable

client ID PK Nom

projet ID PK CustomerID FK

EntryType ID PK Nom (i.e. facturable, non facturable, etc.)

Entrée ID PK UserID FK ProjectID FK EntryTypeID FK Heures date TaskName (cela pourrait être plus normalisée, esp., si vous voulez avoir un seau de tâches Description

Je pourrais continuer, mais vous avez l'idée.

1

Commencez avec les rapports que vous voulez et travaillez à rebours.

L'unité d'entrée minimale est Activité, Durée, mais si vous utilisez ce minimum, vous finissez avec des activités telles que sri.attends.scrum.for.parisian.branch.of.client50.via.scype.from.home .pour.discuss.installation.routine.of.zoom22, et votre code de rapport aura beaucoup d'instructions de commutation.

Vous avez probablement au moins un rapport avec un nom, une description d'activité et un temps total pour une période donnée. Si c'est votre seul rapport, vous pouvez l'implémenter comme une liste à quatre champs: Travailleur (chaîne), Tâche (chaîne), Début (heure), Durée (entier). Si un rapport vous demande toutes les activités allouées à un projet particulier, ou une activité pour tout le temps consacré au type d'activité X, ou un rapport qui alloue des activités à des clients particuliers, votre conception bénéficiera de plus de champs. Peut-être avez-vous un rapport qui distingue installation.server.updates au bureau à domicile et installed.server.updates sous tir ennemi actif dans une zone de guerre. Si vous avez une case à cocher "while.a.target" sur votre écran d'enregistrement de l'heure, cela pourrait être un gain de temps réel pour vos utilisateurs.

0

est une brève description (et incomplète) résumé de certains des tableaux mon ancien système comptable utilisé:

  • utilisateur: la personne qui utilise le système; nom, mot de passe, etc
  • entité: une entreprise ou une entreprise; nom, ID du gouvernement, etc.
  • projet: un projet qui peut être facturé; nom, entité fournisseur, entité cliente
  • feuille de temps: une entrée de feuille de temps: l'utilisateur, projet, heure de début/date, le nombre d'heures, la description du travail
Questions connexes