Skip to content
Get started

Core concepts

Grunddata has a small vocabulary. Learn these eight words and the rest of the product follows.

Model
└── Table
├── Attribute ──► (optionally references) ──► Domain table
├── Validation
├── View
└── Record (many versions, grouped into commits)

A grouping of tables. Nothing more. A model has a name, a description and tags, and exists so that related tables live together.

Think: a folder, a workbook, or a database schema.

→ Models

The thing that actually holds data. A table lives inside exactly one model and has a set of attributes you define.

Think: a sheet in a workbook, or a table in a database.

Every table carries two built-in fields that you can neither add nor delete: Code and Name. Whether users must fill them in is decided by the table’s code generation setting.

→ Tables

A column on a table. An attribute has a name, a datatype, and optional constraints.

Supported datatypes:

Datatype Extra settings
string Max length
integer —
decimal Precision, scale
boolean —
date —
datetime —

An attribute can instead point at a domain table, in which case its datatype is determined by that table.

→ Attributes

An ordinary table used as a lookup. Setting Code generation = MANUAL makes a table eligible to be referenced. Once an attribute points at a domain table, only records from that table are valid values for it.

→ Domain tables

A row. Records are the data itself. A record belongs to one table, has a source_id, a version, an optional code and name, and its attribute values.

Records are append-only. Editing a row writes a new version; deleting a row writes a version flagged as deleted.

→ Records

A rule applied when records are saved. Validations are expressed as JSON Schema, built for you through the web app’s form. They can be attached to a single attribute, or to the table as a whole when the rule compares two attributes.

→ Validations

A named, stable contract over a table, exposed as an OData entity set. A view chooses which fields are published and what they are called, insulating downstream reports from internal renames.

→ Views

A single save operation, whether it covers one row or thousands. A commit has an author, a timestamp and a message, and groups together all record versions produced by that save.

→ Commits and versions