Notion’s distinctive advantage is its unique integration of databases and documents. The Relation
and Rollup
properties make that feature even more powerful. They’re part of any sophisticated workspace and the cornerstone of the Bulletproof methodology.
What are Relations
?
The Relation
property allows you to connect database items. When you create a Relation
, you link it to a database. That allows you to choose items from that linked database to populate the property, somewhat like a Select
property. Typically, you’ll link Relations
to other databases, but sometimes you’ll choose the same database.
Related database items often represent parent-child relationships, where one item—the “parent”—is the classification, or grouping, of its related items—its “children.”
For example, a Companies database often relates to a Contacts database. For each contact, you can choose the employer from Companies. Those contacts are automatically added to the reciprocal Relation
property in Companies:

Here are some other parent-child relationships:
- Manufacturers relate to Products
- Projects relate to Tasks
- Objectives relate to Key Results
- Authors relate to Posts
- Shows relate to Episodes
- Expense Categories relate to Expenses
- Years relate to Months
- Classes relate to Students
- Teams relate to Players
- Clients relate to Invoices
- Airlines relate to Flights
- Departments relate to Meetings
The relationship can also be non-hierarchical:
- Task B depends on Task A
In this example, theRelation
property would link to the same database. - Task A references Resource B
Why use Relations
?
Often used in place of Select
and Text
properties, Relations
offer expansive benefits. These are among the most notable:
Keep your information accurate and consistent.
By choosing a value from a central repository (the linked database), you ensure it’s entered the same way everywhere in your workspace.
Consider our Companies and Contacts databases. With a Text
property, you’re inclined to enter the same company in various ways, such as “Walmart” vs. “Wal-Mart.” Among other consequences, this disrupts sorting and filtering.
With a Relation
, you choose Walmart from the centralized Companies database:

Reduce redundancy.
Choosing from a central collection also eliminates the need to type inputs and create duplicate Select
properties.
In addition to the Contacts database, many other databases are likely to reference a company. For example, an Expenses database will have a Vendor property. Rather than creating identical Select
properties in Contacts and Expenses, you can relate them to the Companies database, thus retaining a central repository:

Automate filtered views.
You’ll often want to filter “child” databases by their “parents.” For example, you’ll want to view players by team and tasks by project. Using Relations
and database templates, you can automatically filter children within their parents.
In our Companies database, the template can filter Contacts to show only the employees of the respective company:

Summarize information.
The Rollup
property allows you to aggregate information from related items. You can then perform calculations on that information to reveal useful insights.
A common parent-child relationship is Expense Categories and Expenses. A Rollup
can total the expenses related to each category:

Streamline navigation.
Easily click items within a Relation
property to open them as pages.
When viewing a company, for example, you can easily open an employee’s profile:

How to implement Relations
.
Relate items in separate databases.
Most often, you’ll establish relations between separate databases:
- Add a new property to your database. Select the
Relation
type. - Choose the database to link.
- Rename the
Relation
property to reflect the other database.
When relating Companies to Contacts, for example, you might name the property “Contacts” or “Employees.” - Notion automatically creates a reciprocal
Relation
in the other database. Rename it accordingly.
In Contacts, you might name the property “Company” or “Employer.”
Once in place, you can use that Relation
property to choose items from the other database.
Relate items within the same database.
Less frequently, you’ll relate items to other items in the same database. A common example is dependent tasks, where Task B depends on Task A. The process for creating these Relations
is the same; you simply choose the same database.
When doing so, you’re given the option to form a two-way relationship (“sync both ways”) or a one-way relationship (“no syncing”). A two-way relationship creates a reciprocal Relation
property within the same database, while a one-way relationship keeps only one Relation
property. For parent-child relationships, you’ll typically want the reciprocity. They’re still helpful, but not always essential, for non-hierarchical relationships, like dependent tasks.
Extend Relations
with Rollups
.
Rollups
extend Relations
. They retrieve and aggregate other properties from related items, then perform insightful calculations on those values.
Revisiting our Expenses and Expense Categories databases, each category relates to multiple expenses, then a Rollup
sums the Total property of those expense:

Rollups
can perform a variety of calculations on the values they retrieve. Some of those calculations are specific to the value type, such as numbers, dates and checkboxes. Here are the calculations used most frequently:
Universal
- Show original values
- Show unique values
- Count
- Count unique
- Count values
Includes each value within properties containing multiple values, such asMulti-Selects
. - Count empty
- Count not empty
- Percent empty
- Percent not empty
- Range
Numbers
- Minimum
- Maximum
- Sum
- Average
- Median
Dates
- Earliest
- Latest
Checkboxes
- Count checked
- Count unchecked
- Percent checked
- Percent unchecked
Create a Rollup
.

Because Rollups
retrieve information from related items, they require an existing Relation
property. Once you have that in place:
- Add new property to the database that will “receive” the information—the “parent” in a parent-child relationship. Choose the
Rollup
type.
For our Expenses and Expense Categories, theRollup
is added to Expense Categories. It’s the “parent” that groups and summarizes the individual expenses. - For any item in the database, click into that
Rollup
property, as if to enter a value. You’ll see three configuration settings:- Ford the
Relation
, choose theRelation
property for which you want to retrieve information. - For the
Property
, choose the property of the related database you’d like to retrieve. From Expenses, we’re retrieving the Total property for all related items. - For
Calculate
, indicate how to display the retrieved values. With the retrieved Totals, weSum
.
- Ford the
- Rename the property to reflect the final value. In the case of Expense Categories, “Total” is simple and intuitive.
Additional Rollup
examples.
Average ages.
In our Companies example, a Rollup
can calculate the average age of employees (related contacts):

The Rollup
is configured like so:
- It’s titled “Avg. Age.”
- The
Relation
is Contacts. - The
Property
is Age (the property of Contacts we want to retrieve). Calculate
is set toAverage
.
Calculate progress.
When a Rollup
retrieves Checkboxes
, it can calculate the percent checked. Therefore, a project can display its progress as the percent of completed tasks:

Within our Projects database, a Rollup
is configured like so:
- It’s titled “Progress.”
- The
Relation
is Tasks. - The
Property
is Complete (theCheckbox
property we want to retrieve). Calculate
is set toPercent checked
.
Questions? Tweet @WilliamNutt.