Lập trình viên / Tra cứu
Tham chiếu cấu trúc bảng
Schema JSON là hợp đồng giới hạn rõ ràng, không phải SQL tùy ý.
Table và Column
| Trường | Ý nghĩa |
|---|---|
| tables[].name | Tên duy nhất, chữ thường [a-z][a-z0-9_]{0,47}; không pg_/wpk_ hoặc __ |
| columns[].type | uuid, integer, bigint, numeric, text, boolean, date, timestamptz, jsonb |
| primary | Mỗi bảng đúng một PK UUID/integer/bigint, không null |
| nullable / unique | Boolean; dùng rõ theo nhu cầu |
| max_length | Chỉ text, tối đa 16384; mặc định 4096 |
| default | {kind:literal,value}, {kind:uuid}, {kind:now}, {kind:identity} theo kiểu |
| identity | owner hoặc group trên cột UUID; liên kết Project Auth, khác default identity sequence |
| references | {table,column,alias,reverse_alias?,on_delete:restrict} |
| indexes | [{name,columns:[...],unique:false}]; tối đa bốn cột/index |
| policies | Chỉ sửa qua quyền/schema quản lý; form import không cấp quyền |
Giá trị dữ liệu
integer là số nguyên 32-bit. bigint và numeric là chuỗi chính xác; numeric tối đa 38 chữ số, 12 số thập phân. date: YYYY-MM-DD; timestamptz: ISO-8601 có múi giờ. jsonb là giá trị JSON tối đa giới hạn mỗi ô. UUID dùng định dạng chuẩn.
Thay đổi bảng hiện có
Dùng UI Cấu trúc bảng/Quyền truy cập hoặc PATCH schema với revision hiện tại. Đổi tên phải khai báo changes rõ. Xóa cột/bảng cần bản sao đã kiểm chứng và xác nhận dự án; không suy đoán đổi tên từ diff. Không sửa kiểu/PK/identity/max_length của cột hiện có trong bản này.
Database được quản lý bằng Migration
Các loại dữ liệu và giới hạn compiler trong bài vẫn áp dụng. Với mode migration, sửa schema.json rồi sinh diff/plan; Dashboard và Admin SDK không PATCH trực tiếp cấu trúc. Tên bảng/cột xuất hiện hoặc biến mất không tự được coi là rename.
Thêm cột không tự cấp quyền client; cập nhật policy/bindings trong cùng kế hoạch hoặc migration riêng. Xem bài Migration để phân biệt thay đổi thêm, constraint-sensitive, permission-widening và destructive.