Table schema¶
The table designer defines the structure of a case table. It has three tabs: Basic Information, Columns Designer, and Indexes & Relationships. Saving never changes the live table: it creates a draft version that is compared and published later.
Basic information¶
| Field | Rules |
|---|---|
| Domain | Required. The table always belongs to a domain, and the domain prefix is part of the physical table name: PREFIX_TABLE_NAME |
| Name | Required, up to 80 characters, uppercase letters, digits, and underscores, starting with a letter |
| Classification | Required, chosen once at creation and cannot be changed later |
| Description | Optional context for other users |
Classifications¶
| Classification | Data behaviour | Columns |
|---|---|---|
| Configuration | Seed rows are the source of truth; free data editing is blocked | Audit columns added |
| Editable | Seeds are initial data only; after the first publish you own the rows | Audit columns added |
| Process | Rows are created by cases | System columns added automatically: APP_NUMBER, APP_TITLE, CASE_UID |
| Analytics | Read-only; populated asynchronously by the consumer service | No seeds, no audit columns |
| System | Managed by the plugin itself | — |
Choosing the classification is the most consequential decision in this tab: it decides whether the grid is editable, whether seeds apply, and which columns are added for you.
Columns¶
Types¶
VARCHAR, INT, BIGINT, DECIMAL, FLOAT, BOOLEAN, DATE, DATETIME,
TIME, TEXT, ENUM, JSON.
VARCHAR and DECIMAL take a length or precision; ENUM takes its option list;
BOOLEAN accepts true, false, 0, or 1; dates use YYYY-MM-DD and times
HH:MM:SS.
There is no File type.
Structure rules¶
The designer validates as you type, using the same rules the server applies:
- a table needs at least one column;
- column names follow the same pattern as the table name and must be unique within the table;
- a default value is checked against the column type before it is accepted;
- at least one column must be the primary key.
Keys and defaults¶
- A primary-key column cannot be nullable; the nullable switch is disabled.
- Auto-increment is only offered for integer primary keys (
INT,BIGINT). - The default
IDcolumn cannot be removed. - For
ENUMcolumns, the accepted values are listed in the column editor.
Removing and reordering¶
Drag columns to reorder. Removing a column is destructive: the designer warns when the table already has rows, and dropping a column of a published table is a blocked operation (see the review below). To retire a column without losing data, mark it as deprecated instead.
Indexes and relationships¶
Indexes¶
- Names are generated:
idx_<table>_<COL_1>_<COL_2>for regular indexes anduidx_<table>_<COL_1>for unique ones, truncated to 64 characters. - The same ordered set of columns is reported as a duplicate index.
- An index can be marked unique or fulltext.
- The designer lists the indexes that already exist, so you can see what a change would add.
Foreign keys¶
A foreign key points a local column at a column of another table:
- Choose the local column.
- Choose the referenced table and referenced column.
- Choose the display column — the column shown in data-entry dropdowns, so users pick a recognisable value instead of a bare ID.
ON DELETE CASCADE and ON UPDATE CASCADE are optional. When a foreign key is
active, the data grid shows a dropdown of the referenced rows instead of a number.
Review and publish¶
Review & Publish runs the same diff the server will run, without touching the table. For every operation it shows what changes, how confident it is, and what it costs:
| Signal | Meaning |
|---|---|
| Operation | ADD_COLUMN, RENAME_COLUMN, CHANGE_TYPE, DROP_COLUMN, DROP_TABLE, … |
| Rename confidence | Low-confidence renames are treated as a drop plus an add, because the data cannot be mapped safely |
| Severity score and label | LOW, MEDIUM, HIGH, or CRITICAL |
| Estimated time | How long the migration is expected to take |
Severity gates¶
| Label | Triggered by | What happens |
|---|---|---|
| LOW | Small additive changes | Runs automatically from Jobs |
| HIGH | Score ≥ 41, or an operation that deletes rows | Needs approval before it runs |
| CRITICAL | Score ≥ 61, a COPY algorithm, an estimate over 10 minutes, or a table drop |
Needs approval and scheduling outside working hours |
Blocked operations¶
Two operations are refused outright on a published table:
- dropping a column — mark it deprecated instead;
- dropping the table — use the table actions in Tables.
Ambiguous renames are also blocked: renaming two columns at once, or renaming and moving a column in the same change, is reported as possible rename — revert and rename one at a time. Fix the problems listed in the review and the publish button becomes available again.
After publishing¶
Publishing bundles the operations into a single job plan:
PENDING → ACTIVE_PENDING → IN_PLAN → SYNCING → ACTIVE
If the migration fails the table moves to ERROR and can be retried. See Table states and sync and Jobs.
Related¶
- Tables — the table list and its lifecycle.
- Table data — working with the rows.
- Table states and sync — what happens while a table migrates.
- Jobs — the plans created by publishing.