Tables, fields, and records
- Tables hold records of one kind (Customers, Tickets, Invoices).
- Fields are the typed columns on a table. The first field is the table’s primary field.
- Records are the rows.
- Views are saved filters, sorts, and field arrangements over a table.
Some field types are computed or system-managed:
formula, rollup, created_at, updated_at,
updated_by, and user. They’re maintained by the platform, so they’re read-only from your code
and can’t be set directly.SDK names
In your apps, tables and fields are addressed by SDK names, not their display labels. A table’s SDK name appears in two spellings, and which one you use depends on the surface:
Fields are camelCase everywhere. The generated
.zite/db.ts shows both table spellings on one line:
tickets: createTableClient<TicketsRecordType>('Tickets'). The accessor is on the left, and the
PascalCase name SQL and permissions use is on the right.
SDK names are stable (renaming a table or field in the UI does not change its SDK name), so your code
keeps working. You’ll see them in the generated .zite/db.ts for each workspace. See the
database client.
How apps use the database
The frontend never talks to the database directly. Reads and writes run inside backend workflows, which use a typed client generated from the schema:zite.sql(). Both the client and zite.sql() are covered in the
database client reference.
Editing the schema
You can change the schema from the database UI in the dashboard, or ask an agent to do it through the Zite MCP (create_table, create_field, and friends). You can also
manage tables, fields, and records programmatically with the Database API.