<p>I need to model a system where by there will be a team who will consist of users who perform roles in the team and have skills assigned to them.</p>

<p><em>i.e. a team A 5 members, one performs the team leader role, all perform the reply to
email role, but some have an extra skill to answer the phone</em></p>

<p>I'm trying to determine how I can best model this. </p>

<p>This problem must have been solved before, are there any good resources on how to model this?</p>

<p>EDIT: I need to determine what a user is allowed to do, which could be because they are in a certain team, perform a certain role or have been assigned a certain skill</p>

Not really anything I've heard from, but it's simple enough to be solved in variety of ways.
So there's Teams, Members, Roles and Skills. Teams are just Member-containers and Member has roles and skills.
Here's yet a small pseudo to give you the whole idea:
```
```
class Team
    container[Member] members

class Member
    container[Role] roles
    container[Skill] skills
```
```
Then you instantiate or subclass roles and skills, depending about what kind of things they are and the capabilities of your programming language.
..In other hand, In practise it'd may make sense to make a Team -class similar to Role and Skill -class - a property of Member -class. If you need to find out things like what one member has access into.