I would probably go for the many-to-many approach. The reason being is that it offers you more flexibility if you need to collect data for relational data. My personal experience is also that use a many-to-many with planning people for a position or a shift is more flexible. You can more easily add a start date or more specific information.
So let's say you have a default pay for a position. You can use the many-to-many to override that pay field for that specific position. In your case, you already store it in the pivot table. But I guess you understand what I mean ;)



