How to Build Notion Relation for Lesson-Module-Course Curriculum
🔍 WiseChecker

How to Build Notion Relation for Lesson-Module-Course Curriculum

You need to connect lessons, modules, and courses in a single Notion database structure. Without proper relations, you cannot filter assignments by course or track student progress across multiple levels. Notion uses relational databases and rollup properties to link these three layers together. This article explains how to create the three databases and set up the correct relations and rollups so your curriculum stays organized.

Key Takeaways: Connecting Lesson, Module, and Course Databases

  • Three separate databases: Create one database each for Courses, Modules, and Lessons — do not combine them into one table.
  • Relation property from Lesson to Module: Each lesson relates to exactly one module to maintain a clear parent-child link.
  • Relation property from Module to Course: Each module relates to exactly one course to complete the chain.
  • Rollup property on Lesson: Use a rollup to pull the Course name into the Lesson database so you can filter lessons by course directly.

ADVERTISEMENT

Why You Need Three Separate Databases for Curriculum

A curriculum has three distinct levels: Course, Module, and Lesson. A course contains multiple modules. A module contains multiple lessons. If you put everything into a single database, you cannot enforce a one-to-many relationship without duplicating data. Separate databases let you link each lesson to one module and each module to one course. This structure also allows you to use rollup properties to display course-level information inside the lesson database without copying data.

Before you start, make sure you have a Notion workspace where you can create new databases. You do not need any special plan — this works on Free, Plus, Business, and Enterprise plans. You will use the database relation property and the rollup property. No formulas are required for the basic setup.

Steps to Create the Course, Module, and Lesson Databases

  1. Create the Course database
    In your Notion workspace, click the + icon in the sidebar and select Database > Table. Name the database Courses. Add a text property called Course Name. Optionally add a select property called Status with options like Active, Archived, and Draft.
  2. Create the Module database
    Create another table database and name it Modules. Add a text property called Module Title. Then add a relation property: click the + in the table header, choose Relation, and name it Course. In the relation settings, select the Courses database as the related table. Set the relation type to One per module so each module belongs to exactly one course.
  3. Create the Lesson database
    Create a third table database and name it Lessons. Add a text property called Lesson Title. Add a relation property named Module and relate it to the Modules database. Set the relation type to One per lesson so each lesson belongs to exactly one module.
  4. Add a rollup property to the Lesson database
    In the Lessons database, add a Rollup property. Name it Course Name. In the rollup settings, select the relation Module. Then choose the property Course from the Modules database. For the rollup calculation, select Show original. This displays the course name from the module’s related course.
  5. Populate the databases with sample data
    Add a course row: in the Courses database, type Introduction to Algebra. Switch to the Modules database and add a module named Linear Equations. In the Course relation column, select Introduction to Algebra. Switch to the Lessons database and add a lesson named Solving for x. In the Module relation column, select Linear Equations. The Course Name rollup now shows Introduction to Algebra automatically.

ADVERTISEMENT

Common Mistakes and Limitations When Building Curriculum Relations

Relation shows no options when linking a lesson to a module

This happens if the Modules database has no rows yet. Add at least one module before trying to relate a lesson. Also confirm that the relation property points to the correct database. If you accidentally linked the Lesson database to itself, delete the relation property and create it again with the correct target.

Rollup property shows blank or “No data”

The rollup property depends on the chain: Lesson > Module > Course. If the module row does not have a course selected, the rollup cannot retrieve anything. Open the Modules database and verify that each module has a course selected in the Course relation column. If a module has no course, the rollup on every lesson under that module will remain empty.

Cannot filter lessons by course in a linked database view

The rollup property is not filterable by default in a linked database view. To filter lessons by course, add a formula property to the Lessons database. Create a formula property named Course Filter with the formula prop("Course Name"). This formula duplicates the rollup value into a text-based property that you can use in filters. Then in your linked view, add a filter: Course Filter contains “Algebra”.

Deleting a course removes all related modules and lessons

Notion does not cascade delete by default. If you delete a course, the modules still exist but their Course relation becomes empty. The lessons under those modules remain intact but their rollup shows no data. To avoid orphaned data, archive the course instead of deleting it. Use a Status property with an “Archived” option and filter it out in your views.

Course-Module-Lesson Relation vs Single Database with Tags

Item Three Separate Databases Single Database with Tags
Structure Three tables linked by relation properties One table with multi-select tags for Course and Module
Data integrity Each lesson belongs to exactly one module; each module belongs to exactly one course Tags can be misspelled or inconsistent across rows
Rollup capability Can pull course-level data into lessons (e.g., instructor name, start date) No rollup possible; all data must be duplicated in each row
Filtering Filter lessons by module or course using rollup or formula Filter by tag, but cannot enforce hierarchy
Maintenance Update course name once; all related modules and lessons reflect the change Must update every row if a course name changes

The three-database approach is better for any curriculum that has more than 20 lessons or multiple instructors. It prevents typos in course names and lets you use rollups for dynamic data like course descriptions or instructor bios. The single-database approach works only for very small projects with fewer than 10 lessons where you do not need rollups.

You can now create a three-level curriculum in Notion using separate Course, Module, and Lesson databases. Add a rollup property on the Lesson database to display the course name without manual entry. For advanced filtering, create a formula property that copies the rollup value. If you later need to add a fourth level such as Units, repeat the same pattern: create a Units database, add a relation to Lessons, and update the rollup chain.

ADVERTISEMENT