Công cụ suy luận lược đồ

Mọi tích hợp mới đều bắt đầu như nhau: một API trả về một khối JSON và bạn cần một mô hình để lưu nó. Gõ tay 20 trường thì tẻ nhạt và dễ sai. Công cụ này phân tích một đối tượng JSON mẫu, chọn kiểu cột cho từng khóa và tạo ra một lược đồ sẵn sàng để dán ở định dạng bạn muốn: SQL CREATE TABLE, lược đồ Mongoose hoặc định nghĩa mô hình Sequelize.

Cách suy luận lược đồ từ JSON

  1. 1

    Dán một đối tượng mẫu

    Nhập một đối tượng JSON, hoặc một mảng các đối tượng (đối tượng đầu tiên trong mảng sẽ được đọc). Hãy dùng một bản ghi đầy đủ với mọi trường đều có giá trị để mỗi cột nhận được một kiểu.

  2. 2

    Chọn định dạng đầu ra

    SQL CREATE TABLE (kiểu Postgres / MySQL / SQLite), Mongoose cho ứng dụng Node.js dùng MongoDB, hoặc Sequelize cho ứng dụng Node.js quan hệ.

  3. 3

    Đặt tên bảng hoặc mô hình

    Đặt tên bảng trong đầu ra SQL, hoặc tên lược đồ/mô hình trong đầu ra Mongoose và Sequelize.

  4. 4

    Sao chép lược đồ đã tạo

    Dán thẳng vào một migration hoặc một tệp mô hình để làm điểm khởi đầu.

Cách suy luận các kiểu

Suy luận là một phỏng đoán tốt nhất. Công cụ đọc các giá trị của một đối tượng mẫu và chọn kiểu cột cho từng khóa dựa trên giá trị nó thấy. Nó không so sánh các bản ghi và không đoán trường nào là tùy chọn, vì vậy hãy đưa cho nó một đối tượng đầy đủ và tiêu biểu.

Ánh xạ kiểu

Giá trị JSON Kiểu SQL Kiểu Mongoose Kiểu Sequelize
42 (số nguyên) INTEGER Number DataTypes.INTEGER
3.14 (số thập phân) DECIMAL(10,2) Number DataTypes.FLOAT
"xin chào" (chuỗi ngắn) VARCHAR(255) String DataTypes.STRING
chuỗi dài hơn 255 ký tự TEXT String DataTypes.STRING
"2026-04-18T10:00:00Z" TIMESTAMP Date DataTypes.DATE
"2026-04-18" DATE Date DataTypes.DATEONLY
true / false BOOLEAN Boolean DataTypes.BOOLEAN
null TEXT String DataTypes.STRING
[1, 2, 3] (mảng) JSON Object DataTypes.JSON
{ "nested": ... } (đối tượng) JSON Object DataTypes.JSON

Đầu ra SQL bổ sung gì

SQL CREATE TABLE luôn bắt đầu bằng một khóa chính tự tăng:

id INTEGER PRIMARY KEY AUTOINCREMENT,

Đầu ra Mongoose và Sequelize không thêm trường id, vì cả hai thư viện đều tự tạo một trường cho bạn.

Giá trị mặc định và giới hạn cần nhớ

  • Chỉ một đối tượng được đọc. Nếu bạn dán một mảng, chỉ phần tử đầu tiên được kiểm tra, nên chính các trường của nó định nghĩa toàn bộ lược đồ.
  • Khóa thiếu là cột không tồn tại. Các trường không có trong đối tượng mẫu đơn giản là không xuất hiện trong đầu ra.
  • Đối tượng và mảng lồng nhau trở thành một cột JSON duy nhất. Công cụ không khai triển chúng thành bảng con, lược đồ con hay khóa ngoại.
  • Không có ràng buộc nào được tạo. Các cột được xuất ra mà không có NOT NULL, tính duy nhất hay chỉ mục, nên tất cả đều cho phép null cho đến khi bạn siết lại.

Mẹo cho kết quả gọn gàng hơn

  • Dùng một bản ghi được điền đầy đủ. Một trường là null trong mẫu của bạn sẽ được gán kiểu text/string, điều hiếm khi là thứ bạn muốn.
  • Đổi tên các từ khóa dành riêng sau khi tạo. Các trường như type, order hoặc user sẽ cần đặt trong dấu ngoặc trong SQL.
  • Xem đầu ra như một khung nền. Điều chỉnh độ dài VARCHAR và độ chính xác DECIMAL, thêm chỉ mục, đánh dấu cột là NOT NULL và chọn các khóa thực sự trước khi đưa vào vận hành.

Câu hỏi thường gặp

Một đối tượng hoặc mảng lồng nhau được ánh xạ tới một cột JSON duy nhất (JSON trong SQL và Sequelize, một trường kiểu Object trong Mongoose). Công cụ không khai triển các cấu trúc lồng nhau thành bảng con hay lược đồ con, nên bạn tự làm phẳng hoặc chuẩn hóa chúng nếu cần.

Không. Nếu bạn dán một mảng các đối tượng, chỉ đối tượng đầu tiên được kiểm tra và chính các khóa của nó định nghĩa lược đồ. Hãy đảm bảo bản ghi đầu tiên đó có mọi trường bạn quan tâm, với một giá trị thực trong từng trường.

Không. Mỗi cột chỉ được xuất ra với một kiểu, nên đầu ra không có khóa ngoại, ràng buộc duy nhất, chỉ mục hay mệnh đề NOT NULL. Hãy tự thêm chúng, vì chúng mã hóa một ý định mà công cụ không thể khôi phục từ một mẫu.

Chọn SQL CREATE TABLE cho một migration cơ sở dữ liệu quan hệ, Mongoose Schema cho một ứng dụng Node.js trên MongoDB, hoặc Sequelize Model cho một ứng dụng Node.js trên cơ sở dữ liệu quan hệ thông qua ORM Sequelize.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác