Core concepts
Grunddata has a small vocabulary. Learn these eight words and the rest of the product follows.
The object hierarchy
Section titled “The object hierarchy”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
Attribute
Section titled “Attribute”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.
Domain table
Section titled “Domain table”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.
Record
Section titled “Record”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
Validation
Section titled “Validation”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.
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
Commit
Section titled “Commit”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.