Guide Updated Topics Notion

How to Connect Notion Databases with Relations and Rollups

On this page
TL;DRA relation links pages in one Notion database to pages in another (each Task → its Project). A rollup calculates over those links (each Project → percent of its tasks done). Add a Relation property, switch on Show on [database] if both sides should see the link, then add a Rollup and pick a calculation. The classic example: a rollup of a Done checkbox with Percent checked, displayed as a bar, gives every project a progress bar. Rollups reach one relation away and can't roll up another rollup.

Relation vs Rollup in One Minute

A relation is a database property whose values are pages from another database. A text column holds words; a relation column holds live links: each Task points at its Project, each Meeting note at its Client. Notion's own help uses Customers and Items Purchased: one relation, readable from both sides.

A rollup is a property that looks through a relation and calculates something from the related pages: how many tasks a project has, what percent of them are done, how much a customer has spent, when you last met a client. No relation, no rollup.

Relation Rollup
What it storesLinks to pagesA calculated value (or the related values as they are)
Editable in the cellYes: pick or remove pagesNo: it updates when related pages change
NeedsA target databaseA relation + a property of the related pages
ExampleTask → ProjectProject → 60% of tasks done

Both sit in the same property menu as Text, Number, Select, Status, Date, Formula, Checkbox, Person, Files & media, URL, Email, Phone, Button, ID, Place and the created/edited stamps. They are the two property types built specifically for working across databases.

Creating a Relation, Step by Step

  1. In your database (say, Tasks), click + New property and choose Relation.
  2. Pick the database to link to (Projects). Notion shows a preview of the new property.
  3. Decide whether the other database should see the link too (the toggle Show on Projects, see below).
  4. Optionally limit the property to 1 page instead of No limit: useful when every task belongs to exactly one project.
  5. Click Add relation. Each cell in the new column now opens a search of pages from Projects; the – next to a page removes the link.

One-way vs two-way relations

Relations are one-way by default: Tasks get a Project column, but Projects don't get a Tasks column. Switch on Show on [related database] and name the mirrored property to make it two-way. From then on, a project picked in a task's cell also shows that task in the project's cell, and the other way round. You can switch this on later for an existing relation in the same settings.

  • Two-way when both sides need the link: Projects ↔ Tasks, Clients ↔ Meetings. A rollup on Projects needs a relation property on Projects, so for progress bars and counts the link must be two-way (or created from the Projects side).
  • One-way when the other database would only get clutter: many note databases pointing at one shared Sources or Tags database.
Duplicating breaks the mirror. When you duplicate a database that has a two-way relation, Notion turns it into a one-way relation in the copy. You can switch it back to two-way.

If you build databases through the API or let an AI agent do it over Notion MCP, the same choice appears as single_property (one-way) or dual_property (two-way) in the relation property's definition.

Relate a database to itself: sub-items and dependencies

When creating a relation, you can pick the current database; it shows up as This database. With Two-way relation off you get one property that works in both directions (good for "Related notes"). With it on you get a pair, such as "Next task" and "Previous task". Self-relations are how a flat notes table quietly becomes a knowledge network.

Notion packages two self-relation patterns as ready-made features, both under Database settings → More settings:

  • Sub-items → Turn on sub-items: tasks nest under parent tasks right in the table. Under Advanced settings you choose which property drives the nesting and whether sub-items or parent items are nested.
  • Dependencies → Turn on dependencies: tasks that block other tasks, drawn as connections in timeline view. You also choose how dates shift: Shift only when dates overlap, Shift & maintain time between items, or Do not automatically shift, with an Avoid weekends toggle.

Rollups: Every Calculation Option

Add a property, choose Rollup, then make three choices: which relation to look through, which property of the related pages to read, and how to calculate. Since April 2026, rollups also take number formatting (currency, percent and so on) and decimal places directly.

Calculate Works on Typical use
Show originalAny propertyShow the related page's value as is (a task shows its project's deadline)
Show unique valuesAny propertyAll tags used across a project's tasks, without repeats
Count all · Count values · Count unique valuesAny propertyHow many related pages or values there are
Count empty · Count not empty · Percent empty · Percent not emptyAny propertyHow many tasks still have no owner or no date
Checked · Unchecked · Percent checked · Percent uncheckedCheckboxDone vs not done; Percent checked is the progress bar
Count per group · Percent per groupStatusTasks in the Complete group, as a count or a share
Sum · Average · Median · Min · Max · RangeNumberTotal spend, average estimate, biggest invoice
Earliest date · Latest date · Date rangeDateFirst and last meeting, project span

Sorting a view by a rollup works only when the rollup returns a number. For a total across the whole database (not per row), you don't need a rollup: click the property and use Calculate (for example, Sum).

Six Relation and Rollup Recipes

All six assume a working relation; recipes 1–4 need it to be visible on the database where you add the rollup (two-way, or created from that side).

1. Project progress bar with Percent checked

  1. Projects ↔ Tasks are related two-way; Tasks have a Done checkbox.
  2. In Projects, add a Rollup called Progress: relation Tasks, property Done, calculate Percent checked.
  3. In the rollup's settings, display it as a bar (or ring) instead of a plain number.

Tracking tasks with a Status property instead of a checkbox? Roll up Status with Percent per group and choose the Complete group. More bar recipes (formulas, star ratings) and a free embeddable bar with a deadline countdown for dashboards are on our Notion progress bar page.

2. Count open tasks per project

Rollup on Projects: relation Tasks, property Status, calculate Count per group and pick the group you care about (In progress, To-do). For the plain number of tasks, use Count all on any property.

3. Sum: customer lifetime spend

Customers ↔ Orders. Rollup on Customers: relation Orders, property Amount, calculate Sum, format as currency. Swap Sum for Average or Max to get average or biggest order. The same pattern gives hours per project (Tasks → Estimate → Sum).

4. Last contact date per client

Clients ↔ Meetings. Rollup on Clients: relation Meetings, property Date, calculate Latest date. Now every client row shows when you last met, so the ones you haven't talked to in a while stand out. Earliest date gives the first meeting; Date range gives the span.

5. Show a related page's property on the row

You want each task to show its project's deadline without opening the project. Rollup on Tasks: relation Project, property Deadline, calculate Show original. Now you can see (though not sort by) the project deadline in the Tasks table.

6. Show only a project's tasks on its page (linked database)

A linked database is a view of an existing database placed on another page. Edits made in it go to the original database; its filters, sorts and views stay local and don't change the original. To add one, type /linked on the page, pick the database, then copy an existing view or create a new one. Notion's newer help calls this linking an existing data source: /database → Link to existing data source.

  1. Open a project page and add a linked view of Tasks.
  2. Add a Filter on the Project relation: contains → this project.
  3. The page now lists only its own tasks. Checking Done here updates the Tasks database and, with it, the project's progress rollup.

When a rollup can't filter: use a formula

A rollup has one calculation and no filter: it can't count "only meetings after today". Formulas can read related pages directly since Formulas 2.0. For upcoming meetings per client:

prop("Meetings").filter(current.prop("Date") > now()).length()

Where Relations and Rollups Hit Their Ceiling

  • One hop only. A rollup reads pages one relation away, and Notion doesn't support rolling up a rollup (its help says this avoids unintended loops). For Client → Project → Tasks answers, add a direct relation or restructure.
  • Export loses the links. In a CSV export, relation properties become plain-text URLs, and importing that CSV doesn't restore the relations.
  • You see cells, not structure. A relation column shows links one row at a time. Nobody can look at three related databases and say what the overall network looks like.
  • Auditing is manual. Which projects have no notes? Which notes connect to nothing? Rollups count per row; there's no workspace-level view of connection health.
  • Complexity hides. Mature workspaces collect dozens of relations; the model in your head and the model in the schema drift apart without anyone noticing.

Relations Are Edges: See Them That Way

Everything a relation encodes is graph data: pages are nodes, and relations (plus backlinks, @-mentions and sub-page nesting) are edges. Notion itself shows none of this as a map, as we covered in Does Notion Have a Graph View?

IVGraph reads your workspace through the official API and draws that structure: the Projects ↔ Tasks ↔ Notes triangle from your second brain becomes a visible shape, with hubs, clusters and unconnected pages in plain sight. Use it in 3D in the app, or embed a 2D graph view widget inside a Notion page.

A project page selected in IVGraph: its properties (parent, status, owner) and 47 connections to tasks, bugs, releases and meeting notes
Relations as edges: the properties Notion shows in columns, and the related tasks, bugs and notes drawn as lines from one project page.

FAQ

What is the difference between a relation and a rollup in Notion?

A relation is the link: a property whose values are pages from another (or the same) database, like each Task pointing to its Project. A rollup is a calculation that reads through that link, like a Project showing how many of its tasks are done. A rollup always needs an existing relation.

How do I make a Notion relation two-way?

In the relation property's settings, switch on the toggle Show on [name of the related database], name the matching property and confirm. Both databases then have a relation property, and a link added on one side appears on the other.

How do I show the percent of done tasks as a progress bar in Notion?

Relate Projects to Tasks, give Tasks a Done checkbox, then add a Rollup to Projects: relation Tasks, property Done, calculation Percent checked. Set the rollup to display as a bar or ring instead of a number. If you track tasks with a Status property, use Percent per group and pick the Complete group.

Can I roll up a rollup in Notion?

No. Notion's help says rollups of rollups are not supported, to avoid unintended loops. A rollup reads properties of pages one relation away; for a two-hop answer, add a direct relation between the two databases.

Your relations, drawn as structure

Connect Notion and see every database relation as an edge in a living 3D graph. Free up to 500 nodes.

Map my Notion
Andrii Danylchenko

About the Author

Andrii Danylchenko is the Founder and CTO of IVGraph. A visionary technologist passionate about transforming how people interact with knowledge, he leads IVGraph's technical development, architecting the 3D graph visualization engine and Notion sync.

Keep reading

More from the Journal

Guide

The Zettelkasten Method: How Linked Notes Help You Think and Write

What a Zettelkasten is, how Luhmann’s slip box worked, and how to build one in Obsidian or Notion, with example notes, common mistakes and a way to see your links as a graph.

Guide

Claude and Obsidian: Four Ways to Connect an Agent to Your Vault

Connect Claude Code or Claude Desktop to an Obsidian vault: direct folder access, the Obsidian CLI, Obsidian skills, MCP servers and agent plugins—plus Cursor, Codex, permissions and an LLM wiki layout.

Guide

Obsidian Graph View: A Practical Guide to Reading Your Notes as a Network

A practical guide to Obsidian’s global and local graphs: ways to open them, filters, color groups and CSS colors, display and forces settings, Maps of Content—and how graph views work in Logseq and Anytype.

Guide

What Is a Knowledge Graph? A Plain-English Guide with Examples

A plain-English explanation of knowledge graphs with a graph you can click, examples from Google and Wikidata to biomedicine and your own notes, how they compare with databases, mind maps and vector search, and how to build one.

Guide

GraphRAG, Explained: When a Knowledge Graph Beats Vector Search

How GraphRAG works, where it helps beyond vector search, and what extra indexing and maintenance to budget for. Plus a practical starting point for linked Notion workspaces.

Guide

Notion vs Obsidian: Which One Fits the Way You Think?

An honest Notion vs Obsidian comparison updated for 2026: storage, offline mode, Bases vs databases, graph view in both apps, AI agents and pricing—plus how to move from Notion to Obsidian with the official Importer.

Guide

How to Make a Graph in Notion — Both Kinds

"Graph" means two things in Notion: data charts (native — /chart, five types, one free) and the graph of connections (not native at all). Step-by-step for both, plus limits nobody mentions.