ignatius · data modeling · works with or without noorm
Analysis costs less than rebuilding a system. ignatius turns a folder of markdown into a picture of the plan: what captures data, the shape it takes, why each table exists, the rules it follows, and who outside the system sends it and receives it.
01 · Movement
A data flow diagram answers both. It shows who produces data, including people outside the technical system, which process moves or transforms it, and which store keeps it: a table, a cache, a log file, a paper form. Most teams skip this step and draw logic flowcharts, which show decisions, not data.
┌─────────────┐
│ charge card │
└──────┬──────┘
│
approved?
┌───┴───┐
yes│ │no
┌──────▼───┐ ┌─▼──────────┐
│ mark paid│ │ show error │
└──────────┘ └────────────┘What the code decides. No table, log file, or person appears in it.
Read each process as an operation your database must support. Place order takes the customer's order request and product prices and writes sales_order and order_line. That is place_order(), specified before anyone writes the SQL or the code that calls it.
02 · Relationships
An ER diagram lists every column and buries the relationships under them. ignatius draws the relationships alone: entities by name, joined by the business verbs that relate them. Click an entity to open its columns, keys, example rows, and the reason it exists, then walk the graph to tell the story in a meeting.
---
entity: sales_order
group: sales
pk: [party_id, order_no]
columns:
party_id: { type: integer }
order_no: { type: integer }
placed_at: { type: datetime, default: now }
status: { type: text, default: open }
examples:
- { party_id: 2, order_no: 1, status: invoiced }
- { party_id: 2, order_no: 2, status: open }
- { party_id: 1, order_no: 1, status: paid }
relationships:
- target: party
on: { party_id: party_id }
predicate:
fwd: places
rev: is placed by
---Cardinality and identifying edges come from the keys, and subtype clusters from the subtypes: block. Nothing is drawn by hand, and saving a file reloads the open browser.
03 · Agents
Agents write schemas faster than anyone can read them, so the review has to happen before the code exists. The model is markdown, so it is the thing you review before you sign off on what the agent builds. The agent reads the same files, and the ignatius-modeling skill writes them one question at a time and validates each one.
# check the model in CI
$ ignatius validate model/
✓ /home/you/shop/model: valid — 11 entities, no findings.# model with an agent, in Claude Code
> /ignatius-modeling discover
interviews you about how the business runs,
then writes the entities and flows04 · Documentation
Everything above comes from one folder of markdown. The same files are your database's documentation and its data dictionary, the place the team plans and shares plans, and the place an agent looks to see what it should build.
The ER diagram in your wiki stopped matching the database months ago.
The diagram renders from markdown in the repo, so it changes in the same pull request as the schema.
ignatius serve model/ -oNobody remembers why a table exists.
Each entity carries its purpose and example rows beside its keys, searchable in the dictionary.
examples:The person who signs off on the design can't read DDL.
Export the whole model to one HTML file. They open it from their desktop, with nothing installed.
ignatius export -o model.htmlYou inherited a database nobody documented.
An agent reads it through noorm's read-only MCP server, and the ignatius-modeling skill writes the model.
/ignatius-modeling05 · Lineage
ignatius is not a new invention. It is a looking glass into excellent standards: IDEF1X for entities, grown out of E. F. Codd's relational model, and SSADM-style data flow diagrams for movement.
| Year | Step |
|---|---|
| 1970 | E. F. Codd publishes the relational model of data. |
| 1977–78 | Chris Gane and Trish Sarson, then Tom DeMarco, publish structured analysis built on data flow diagrams. |
| 1981 | The US Air Force's ICAM program publishes IDEF1, built on Codd's relational theory and Peter Chen's entity-relationship model. |
| 1982 | Robert Brown develops the logical database design technique for Bank of America. |
| 1983 on | The Air Force extends IDEF1 into IDEF1X, using Brown's technique. |
| 1993 | NIST publishes IDEF1X as federal standard FIPS 184. |
| 2012 | IDEF1X becomes part of the international standard ISO/IEC/IEEE 31320-2. |
Try it
01 · Install
Windows and other options: Download.
curl -fsSL https://noorm.dev/ignatius.sh | sh02 · Write one entity
A folder with an ignatius.yml is a model. Each file under data/ is one entity: keys and columns in the frontmatter, what it is for in the body.
name: Shop---
entity: party
pk: [party_id]
columns:
party_id: { type: integer }
name: { type: text }
---
# party
Anyone who places orders.03 · Serve it
The browser opens on the diagram. Save party.md and the open tab redraws. Add the next entity with a relationships: block pointing at party, and the edge appears.
ignatius serve model -oGo deeper