The first way that we can share access to records is by defining a role hierarchy. Similar to an org chart, a role hierarchy represents a level of data access that a user or group of users needs. Users assigned to roles near the top of the hierarchy (normally the CEO, executives, and other management) get to access the data of all the users who fall directly below them in the hierarchy. The role hierarchy enables these behaviors:
A manager will always have access to the same data as his or her employees, regardless of the org-wide default settings. For custom objects, you can override this behavior by deselecting the Grant Access Using Hierarchies checkbox. However, we want our role hierarchy to apply to all of our custom objects, so leave the checkboxes selected.
Users who tend to need access to the same types of records can be grouped together—we'll use these groups later when we talk about sharing rules.
To illustrate, let's take a look at a portion of the role hierarchy for Universal Containers: