Modulify v2 is live on PeerlistUpvote us
Back to insights

Insights and updates

Why Your CMS Should Be Relational (And Most Aren't)

September 8, 2026

Why Your CMS Should Be Relational (And Most Aren't)

There are two kinds of CMS, and the difference decides how much manual work your site costs you forever. One stores pages. The other stores data and generates pages from it. The second is called relational, most website builders do not offer it, and the gap only becomes obvious once you have a few hundred items and need them organised more than one way.

What does relational actually mean?

It means your collections can point at each other, and the database enforces those links. Two shapes cover almost everything:

  • One to many. A post belongs to one category, an order to one customer, a property to one city. The owning record stores a reference to exactly one target, so it is impossible to end up with two.
  • Many to many. A post has several tags, an agency offers several services. This needs a real join between the two collections rather than a text field with commas in it.

The important word is enforced. In a relational system a reference cannot point at something that no longer exists, because the database refuses. In a flat one, deleting a category leaves every post quietly holding a dead label.

Why does it matter for a website?

Because relationships are what let one collection generate a whole set of pages. Define posts and categories properly and you get the category hubs, the filtered listings, the related-items blocks and the breadcrumbs from the same structure, automatically, and they stay correct as content changes.

Without relationships you build each of those by hand. Adding a category means creating a page, adding it to a menu, and remembering to file future posts into it. Renaming one means finding every place the old name was typed. That work never ends, it just accumulates quietly until the site is too tedious to maintain.

Where flat content models break

Three failures, in roughly the order people hit them.

  1. Typed instead of chosen. When a category is a text field rather than a reference, you eventually have "Design", "design" and "Desgin" as three categories, and no listing shows everything.
  2. Renaming becomes a migration. Change a category name and every record holding the old string is wrong until someone finds them all.
  3. One organisation only. Flat content can be listed one way. Related content can be listed by category, by tag, by author, by location, by any combination, without duplicating a single record.

The fields matter too

A collection is only usable if each field edits the way its content deserves. Plain text boxes for everything is how people end up pasting raw HTML into a description. What a serious CMS should give you:

  • Rich text with a real editor for article and page bodies
  • Images with preview, replace, and alt text edited inline, plus ordered galleries where each image carries its own alt text
  • Files for the things that are not images, PDFs, spreadsheets, archives
  • Colour as a swatch and picker rather than a hex string someone can typo
  • Timestamps managed by the system, so created and updated are true rather than whatever was typed

Alt text deserves a specific mention. When it lives next to the image rather than in a separate field somewhere else, it actually gets filled in, which is the difference between an accessible site and an audit finding.

How does Modulify do this?

The database behind a project is genuine PostgreSQL, queried with SQL, not a proprietary content store. That is why the relationships above are real database relationships rather than a convenience in the editor, and it is also why the data can be exported as CSV, JSON or SQL and moved into any standard system.

Text stored in the database can also be edited directly on the page: click a heading or a label in the preview, type over it, and the change is written back to that record. On a multilingual site it writes to the language you are currently viewing, which saves a surprising amount of navigating between tabs.

One honest limit worth knowing. You can add, edit, search, duplicate and delete records yourself, but you cannot create or restructure tables or change a field's type from the CMS. That is done by asking, which keeps the structure coherent but does mean structural changes go through a request rather than a settings screen.

How do I tell if my CMS is relational?

Two quick tests, no documentation required.

  1. Is the category field a dropdown of existing records, or a text box? A dropdown backed by another collection is a reference. A text box is a string, and strings drift.
  2. Rename a category. What breaks? If everything that referred to it updates, it is relational. If you now have to find and fix each record, it is not.

If your content is a few dozen pages that rarely change, none of this will hurt you. The moment you have items that belong to things, and need listing more than one way, it decides whether the site grows by itself or by your hand. For the wider picture, see how AI builds a full-stack app with a real database, and how the same structure carries multiple languages.

Other posts

Related reads from the blog.

What are we building?

Create a website, landing page, dashboard, or app...

Start building
Made with Modulify