Side question: How many 'Ratings' are there? How many different 'Departments' are there? Let me suppose there are around 30, max, each. What difference would it make if those were not Tables, but simply value lists? Likewise for 'Divisions', etc. How many Locations, Divisions, departments, and ratings can an employee have at any instant in time?
I think what you may need is basically an employee table, with one record per promotion. (And even then that's only because you want to track their promotion history. If you were happy to simply know where they are now then you would have one record per employee.)
I may of course be completely missing the point but, for example, what function do you think wouldn't work if each employee record showed their Division, Department, Location, Rating, etc, at that time?
Perhaps I'm overcomplicating the problem. There are about half a dozen types for each of ratings, departments, divisions, etc. An employee can not have more than one of these at any instant in time... but can be transferred from one to another during one's career. I like your suggestion of just having one employee table and add a new record for each promotion so that we can track promotions of various employees over time. Using value lists (with custom values, instead of values from fields) should also be good enough, since these values won't change over time, and the cost of this redundant data would not be significant.