A self-referencing relation in a Notion database lets you link a row to another row inside the same table. This is useful for building dependencies between tasks, showing parent-child relationships in a project hierarchy, or managing employee reporting structures. The feature works by creating a relation column that points back to its own database instead of a separate table. This article explains how to set up a self-referencing relation and avoid common configuration mistakes.
Key Takeaways: Build a Self-Referencing Relation in Notion
- Relation column pointing to the same database: Select the current database as the target when creating the relation to enable self-referencing.
- Rollup column for parent info: Use a rollup to display a property from the linked parent row, such as a due date or status.
- Linked view on the parent page: Add a linked database view filtered to show only children of the current row for a clear hierarchy.
What a Self-Referencing Relation Does in Notion
A self-referencing relation connects rows within a single database. Each row can be linked to one or more other rows in the same table. This creates a directed relationship where one row acts as the parent and the linked rows act as children. The relation column stores the connection, and you can use rollups to pull data from the parent row into the child row.
Before you start, ensure you have a database with at least a few rows. The database can be a table, board, timeline, or any other view type. You do not need any special Notion plan — self-referencing relations work on Free, Plus, Business, and Enterprise plans. The only prerequisite is that the database must already exist with some content so you can link rows after creating the relation column.
Steps to Create a Self-Referencing Relation
- Open the database as a full-page view
Navigate to the page that contains your database. If the database is inline, click the Open button in the top-right corner to expand it to a full page. This gives you access to the database menu where you can add new properties. - Add a new Relation column
Click the + button in the last column header of the table. Select Relation from the property type list. A dialog appears asking you to choose a target database. - Select the current database as the target
In the Choose a database dialog, type the name of the current database. It appears in the search results. Select it. The dialog closes, and the relation column is created. Notion automatically creates a mirror relation column in the same database, but you can rename or hide it later. - Name the relation column
Click the column header name. Type a descriptive name such as “Parent Task” or “Reports To”. Press Enter to save the name. The mirror column is typically named the same thing with a “(2)” suffix, which you can rename to “Sub Tasks” or “Direct Reports”. - Link rows to establish the relation
Click any cell in the new relation column. A search box appears showing all rows in the database. Select one or more rows to link. For a parent-child structure, link the child row to the parent row. The linked row now appears in the cell. Repeat for each row that needs a relation. - Optionally add a Rollup to show parent data
Add a new column with the Rollup property type. In the Rollup configuration, set the Relation to your self-referencing column, then choose a Property from the parent row, such as Status or Due Date. Set the Calculate option to Show original if you want the exact value from the parent. The rollup now displays the parent’s data in each child row. - Create a linked view to show children on the parent page
Open the page of a parent row. Type /linked view of database and select the database. In the linked view, add a filter: the self-referencing relation column Contains the current page name. This filter shows only the children of that parent row inside the parent’s page.
Common Mistakes and Limitations
Circular relation loops cause errors
If Row A is linked to Row B and Row B is linked back to Row A through the same relation column, Notion does not block the connection. However, rollups that reference the parent can create circular dependency errors. To avoid this, use a single direction for the relation. Designate one column as “Parent” and link only children to parents, not the reverse.
Rollup shows empty when no parent is selected
If a row has no linked parent in the self-referencing relation, any rollup that pulls data from the parent displays a blank cell. This is expected behavior. To handle this, set a default value using a formula: if the rollup is empty, show a fallback value. For example, a formula can check if the rollup property is empty and return “No Parent” instead.
Deleting a linked row breaks the relation
When you delete a row that is linked as a parent, all child rows lose that connection. The relation cell becomes empty. Notion does not warn you about orphaned children. Always reassign children to a new parent before deleting a row. You can do this by editing the relation column in each child row and selecting a different parent.
Self-Referencing Relation vs Standard Relation: Key Differences
| Item | Self-Referencing Relation | Standard Relation |
|---|---|---|
| Target database | Same database | Different database |
| Use case | Hierarchies, org charts, task dependencies within one table | Cross-database links, e.g., linking tasks to a project |
| Mirror column behavior | Creates a second relation column in the same database | Creates a relation column in the target database |
| Rollup complexity | Can reference any property on the linked parent row | Can reference any property in the linked database |
| Filtering for children | Requires a linked view with a filter on the relation column | Linked view filters on the relation column in the target database |
A self-referencing relation gives you a way to model one-to-many and many-to-many relationships inside a single Notion database. You can now set up a parent-child hierarchy for tasks, employees, or any entity that needs a structured relationship. Try adding a rollup to display the parent’s priority or status in the child row for better visibility. For advanced use, combine the self-referencing relation with a formula that calculates the depth of each node in the hierarchy.