> ## Content Index
> Fetch the complete content index at: https://notionsolutions.net/llms.txt
> Use this file to discover other available public pages before exploring further.

# Notion Relations and Rollups: Build a Client and Project Database
- URL: https://notionsolutions.net/notion-relations-and-rollups/
- Published: 2026-09-29T12:55:11.000Z
- Updated: 2026-10-14T11:43:43.000Z
- Description: Connect each project to its client, then calculate only the values that answer a useful question.
- Author: Kevin Turner
- Tags: guide, databases

A relation connects a project to its client. A rollup then reads a property from those linked projects, such as their count, earliest due date or total planned budget. Build the connection first, since a rollup cannot determine which client a project belongs to.

I would start with two databases and one useful calculation. The setup below uses fictional clients and projects to explain the structure; the steps follow [Notion’s documented relation and rollup controls](https://www.notion.com/help/relations-and-rollups?ref=notionsolutions.net).

## Prepare the two databases

Start with two databases you can add properties to, named Clients and Projects. Use a table view while setting up the fields. Keep the client names in the Clients title property and project names in the Projects title property; a row is a database page, not a second database.

For a new field, choose **Add property**, name it, and choose its type. If the table already has properties, use the **+** beside the right-most column. These are Notion’s [property-creation controls](https://www.notion.com/help/database-properties?ref=notionsolutions.net#create-a-property). Add Due date as Date and Planned budget as Number in Projects before configuring the corresponding rollups.

__A small client/project schema__
| Database | Property       | Type and purpose                                                          |
| -------- | -------------- | ------------------------------------------------------------------------- |
| Clients  | Client         | Title: one record per client.                                             |
| Clients  | Projects       | The reciprocal relation created in the next step.                         |
| Projects | Project        | Title: a recognizable project name.                                       |
| Projects | Client         | Relation to Clients; limit to one page if each project has one client.    |
| Projects | Due date       | Date: the project’s deadline.                                             |
| Projects | Planned budget | Optional Number property. Use one currency before adding values together. |

Create client records named *North Studio* and *Harbor Co.*. Use the following fictional project data. All budgets use the same currency, and the dates are example deadlines, not live project dates. Enter the source values now; choose the Client pages after creating the relation.

__Example inputs for the relation and rollups__
| Project            | Client to link | Due date | Planned budget |
| ------------------ | -------------- | -------- | -------------- |
| Brand refresh      | North Studio   | May 14   | 1,200          |
| Website launch     | Harbor Co.     | May 28   | 2,800          |
| Unassigned inquiry | Leave empty    | May 10   | 900            |

A Select option named “North Studio” is a category. It does not point to the North Studio page. Use a Relation when you need a real record connection.

## 1\. Connect Projects to Clients

1. In **Projects**, add a property, name it **Client** and choose **Relation**.
2. Search for the **Clients** database and select it. Check the database name carefully if you have copies.
3. Turn on **Show on Clients** and name the corresponding property **Projects**. This gives you a two-way connection.
4. Select **Add relation**.
5. Open the Client cell for Brand refresh and select North Studio. Link Website launch to Harbor Co.
6. Open North Studio in Clients. Its Projects field should contain Brand refresh; Harbor Co. should show Website launch.

Relations between different databases are [one-way by default](https://www.notion.com/help/relations-and-rollups?ref=notionsolutions.net); the reciprocal property is an option you enable. If your client record does not show Projects, check that setting before creating a second, independent relation.

For ordinary freelance delivery, I recommend the relation’s **1 page** limit on the Project side. Use **No limit** only when a project really can have several clients. Choose the limit to match your client assignments instead of making every connection many-to-many.

[![Client relation setup points to Clients with Show on Clients enabled and reciprocal property named Projects.](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/relations-create-two-way.webp)](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/relations-create-two-way.webp?ref=notionsolutions.net)

Create the reciprocal property from this connection, then limit each project to one client.

## 2\. Add the calculation on Clients

The rollup belongs in the database where you want to see the answer. Here, that is Clients. Add a property with type **Rollup**, then click a cell to choose its relation, source property and calculation.

__Three useful rollup configurations__
| Rollup name               | Relation | Source property              | Calculate     |
| ------------------------- | -------- | ---------------------------- | ------------- |
| Project count             | Projects | Project (the title property) | Count all     |
| Earliest project due date | Projects | Due date                     | Earliest date |
| Total planned budget      | Projects | Planned budget               | Sum           |

[Available calculations depend on the source property type](https://www.notion.com/help/relations-and-rollups?ref=notionsolutions.net#rollup-types). Sum needs numbers; Earliest date needs dates. Count all counts values in the selected property, so using the single title value is more suitable for a project count than counting multi-select tags.

For Total planned budget, the dependency is **Projects → Planned budget → Sum**. Selecting the Client relation in the Projects database would summarize clients instead; it is the wrong direction for this answer. Choose the rollup’s Number format to match your budget currency. Formatting the output does not make amounts in different currencies suitable for one total.

[![Total planned budget rollup uses Projects, Planned budget and Sum, with the source marked Number.](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/relations-rollup-configuration.webp)](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/relations-rollup-configuration.webp?ref=notionsolutions.net)

The three selections determine the result; the Number source makes Sum available.

Name the result to reflect the value it measures. Planned budgets are not revenue received. The earliest deadline across all linked projects is not necessarily the next deadline for *active* work: a completed project can still be linked. A view filter hiding completed projects does not remove those records from the relation.

## 3\. Check the links, then the result

First open each client’s Projects relation and confirm the linked page names. With the example inputs, North Studio has Brand refresh: one project, a May 14 deadline and a planned budget of 1,200\. Harbor Co. has Website launch: one project, May 28 and 2,800\. Unassigned inquiry contributes to neither client even though its date is earlier and its budget is filled in. A rollup reads linked records, not every row in Projects.

Then move Website launch’s Client relation from Harbor Co. to North Studio. In the relation picker, remove the current page with the **–** beside its name, then select North Studio. This follows Notion’s [related-page removal control](https://www.notion.com/help/relations-and-rollups?ref=notionsolutions.net#view-and-remove-related-pages) and keeps the one-client rule clear.

__Expected relationships after moving Website launch__
| Client       | Linked projects                  | What the inputs imply                                                    |
| ------------ | -------------------------------- | ------------------------------------------------------------------------ |
| North Studio | Brand refresh and Website launch | Project count 2; earliest due date May 14; planned budgets sum to 4,000. |
| Harbor Co.   | None                             | No project deadlines or budgets remain to summarize.                     |

These are the expected relationships and arithmetic for the fictional data, not captured product results. Check the reciprocal page names before checking the numbers. Restore Website launch’s original Harbor Co. link when you are finished.

[![North Studio links to budgets 1,200 and 2,800 for a 4,000 total; an unlinked 900 inquiry is excluded.](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/relations-membership-example.webp)](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/relations-membership-example.webp?ref=notionsolutions.net)

An unlinked row contributes nothing to the client total, even when its budget is filled in.

For a temporary audit, choose **Show original** for the selected source property and inspect the values being brought across, then return to your intended calculation. Notion’s [rollup calculation list](https://www.notion.com/help/relations-and-rollups?ref=notionsolutions.net#rollup-types) distinguishes showing values from counting or adding them.

If the relation changes correctly but the calculation does not match your expectation, inspect the source field on every linked record. For a budget total, distinguish a genuine zero from a missing budget. For an earliest date, inspect the actual dates rather than the order of rows in the view.

## Blank or unexpected rollups

__Diagnose the dependency that produces the answer__
| Symptom                             | What to inspect                                                                                                                                |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| No useful value appears             | Is the relation populated? Does it link to the intended database and pages? Is the selected source property filled in?                         |
| Sum is unavailable                  | Check that the source property is Number, rather than a text field containing currency symbols.                                                |
| The count is higher than expected   | Inspect which property is being counted and which pages are linked. A multi-value property can produce a different count from a project title. |
| An old due date appears             | Look for completed projects or old dates still included in the relation.                                                                       |
| You want a rollup of another rollup | Notion does not support directly rolling up a rollup. Return to the source property and design the calculation from it.                        |

For a focused diagnosis, use the [empty rollup troubleshooting guide](https://notionsolutions.net/notion-rollup-not-working/). If another person sees a different result, inspect their access to the related pages separately. A blank cell by itself does not establish a permissions problem.

## Keep the connection separate from sharing and exports

A relation is a data connection, not permission to share another client’s records. Before giving a client access, check [the portal’s pages, related records and inherited permissions](https://notionsolutions.net/notion-client-portal-permissions/).

Also retain this schema outside the database. [CSV exports turn relation values into plain-text URLs](https://www.notion.com/help/relations-and-rollups?ref=notionsolutions.net), and importing that exported CSV does not automatically re-establish the relationships. An exported table is not a portable copy of the complete working model.

Once the two-database model is clear, add Tasks only if you need a separate task list. The [three-database project tracker](https://notionsolutions.net/notion-client-project-tracker-template/) explains that next layer without making this basic setup larger than it needs to be.