Employee Tracking Database

biggcc

Registered User.
Local time
Today, 17:45
Joined
Aug 1, 2005
Messages
56
Would like to hear from anyone that has designed a database that can be used to track employee compensation on a year to year basis. I am current designing a database to do just that but I'm having a hard time deciding on how to setup the tables. What they use this for is yearly reviews so I need it to be able to pull data from prior years and the current year. I've designed one but don't think its going to work for me. Just interested to see if and how someone has done the same thing.

Thanks,
Chester
 
Employee Comp Database

Thanks Pat - That makes sense but will a database structure like that allow me to go back show a history of employee compensation from when they were hired? What these guys are really looking for is something historical so that they can determine future compensation by looking backwards. Their current report is done offline and fields are populated manually. They've asked me to see if I can automate the process.

What they get on the current report is an employee's name, title, department, years of service and 401k eligibility.

In the next section it shows the compensation dollars - base, bonus and total for the current year and the past 2 years - as well as the % and $ values of change for each.

On the final section it adds more miscellaneous items such as car allowance, 401k contributions, employee purchase discounts, overtime/commissions, etc.

I want to set this thing up right from the beginning but there are a lot of variables and fields to report on for each employee every year. Do you have any advise on how you would set it up from the beginning? I have already created one version but I'm having trouble with it so I'm beginning to think I should rethink my structure.

Any advise would be greatly appreciated.
Thanks,
 
Here are a couple of thoughts for you.

will a database structure like that allow me to go back show a history of employee compensation from when they were hired

If you want to SHOW a history of compensation, you must KEEP a history of compensation. Access can only show you what you kept. Therefore, your design must include a place to put this information. If you want everything since the person became an employee, you must KEEP everything since the person became an employee. No magic is involved. If you will want to see it later, you must keep it NOW.

Pat's suggestion of an employee salary-action table is one solution. It means you have the chance of dealing with at least a two-table join to build your report. (employee base record, employee salary-action record, joined across employee ID number as PK in base table, FK in action table)

have already created one version but I'm having trouble with it so I'm beginning to think I should rethink my structure.

Not surprising. At least 35 years ago, Nicklaus Wirth (the father of the Pascal language) said that 80%+ of all program problems were related to poor data design. I've never yet had reason to dispute him - other than perhaps his percentage estimate might have a been a bit LOW.

My best advice to you is to Google-search the term "Database Normalization" and wade through the roughly one GAZILLION references for some scholarly articles. At least 20 colleges have posts on the subject. No less than a dozen makers of databases have on-line manuals and white papers. You will get the best results from going through a normalization exercise. If you cannot get to at least 3rd normal form, you will continue to have problems. DBs requiring normalization all the way to 5th normal form are rare though not unheard-of. There are some specialized normalizations, too, that rate a name instead of a number. Trust me, it's all in Google.
 
Employee Comp Database

Thanks Doc - I've been reading up on normalization and now have some questions. The way it seems to me to work this correctly is to break out the employee data - ie. name, dept, hire date, etc. into one table and then break out each subsequent year's compensation in another table which would have a relationship with the employee table - ie. id#, base, bonus, car, other, etc. Does this sound like the right approach to you or am I totally missing the boat? I think I've satified the first level and second levels with this logic but I'm no doctor.

Thanks,
 

Users who are viewing this thread

Back
Top Bottom