# 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 ý.

Nguồn: https://whypik.com/docs/schema-reference
Nhóm: Lập trình viên
Phiên bản tài liệu: 2026-10-14.10
Ngôn ngữ: vi

## Table và Column

Liên kết mục: https://whypik.com/docs/schema-reference#section-0

| 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

Liên kết mục: https://whypik.com/docs/schema-reference#section-1

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ó

Liên kết mục: https://whypik.com/docs/schema-reference#section-2

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

Liên kết mục: https://whypik.com/docs/schema-reference#section-3

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.


## Đọc tiếp

- [Nhập JSON, SQL và dữ liệu có sẵn](https://whypik.com/docs/database-import)
- [Quản trị viên và quyền dữ liệu dùng chung](https://whypik.com/docs/database-permissions)
- [Bắt đầu với Database Migration](https://whypik.com/docs/data-migrations)
- [Migration: hợp đồng, baseline và phục hồi](https://whypik.com/docs/data-migrations-reference)
