스키마 추론 도구

새로운 연동은 늘 같은 방식으로 시작됩니다. API가 JSON 덩어리를 반환하면, 그것을 담을 모델이 필요합니다. 20개의 필드를 손으로 입력하는 것은 지루하고 실수하기 쉽습니다. 이 도구는 샘플 JSON 객체를 분석해 각 키의 컬럼 타입을 추론하고, 원하는 형식으로 붙여넣기만 하면 되는 스키마를 출력합니다. SQL CREATE TABLE, Mongoose 스키마 또는 Sequelize 모델 정의입니다.

JSON에서 스키마를 추론하는 방법

  1. 1

    샘플 객체 붙여넣기

    JSON 객체 하나, 또는 객체 배열을 입력하세요(배열의 첫 번째 객체를 읽습니다). 각 컬럼이 타입을 받도록 모든 필드가 채워진 완전한 레코드를 사용하세요.

  2. 2

    출력 형식 선택

    SQL CREATE TABLE(Postgres / MySQL / SQLite 스타일), MongoDB를 쓰는 Node.js 앱용 Mongoose, 또는 관계형 Node.js 앱용 Sequelize.

  3. 3

    테이블 또는 모델 이름 지정

    SQL 출력의 테이블 이름, 또는 Mongoose와 Sequelize 출력의 스키마나 모델 이름을 설정합니다.

  4. 4

    생성된 스키마 복사

    시작점으로 삼아 마이그레이션이나 모델 파일에 바로 붙여넣으세요.

타입은 어떻게 추론되는가

추론은 최선의 추측입니다. 도구는 샘플 객체 하나의 값을 읽고, 본 값을 바탕으로 각 키의 컬럼 타입을 고릅니다. 레코드끼리 비교하거나 어떤 필드가 선택 사항인지 짐작하지 않으므로, 완전하고 대표적인 객체를 주세요.

타입 매핑

JSON 값 SQL 타입 Mongoose 타입 Sequelize 타입
42(정수) INTEGER Number DataTypes.INTEGER
3.14(소수) DECIMAL(10,2) Number DataTypes.FLOAT
"안녕하세요"(짧은 문자열) VARCHAR(255) String DataTypes.STRING
255자보다 긴 문자열 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](배열) JSON Object DataTypes.JSON
{ "nested": ... }(객체) JSON Object DataTypes.JSON

SQL 출력이 추가하는 것

SQL CREATE TABLE은 항상 자동 증가하는 기본 키로 시작합니다.

id INTEGER PRIMARY KEY AUTOINCREMENT,

Mongoose와 Sequelize 출력은 id 필드를 추가하지 않습니다. 두 라이브러리가 알아서 하나 만들어 주기 때문입니다.

기억해 둘 기본값과 한계

  • 하나의 객체만 읽습니다. 배열을 붙여넣어도 첫 번째 요소만 검사하므로, 그 필드가 전체 스키마를 정의합니다.
  • 없는 키는 없는 컬럼입니다. 샘플 객체에 없는 필드는 출력에 아예 나타나지 않습니다.
  • 중첩된 객체와 배열은 하나의 JSON 컬럼이 됩니다. 도구는 이들을 하위 테이블, 하위 스키마, 외래 키로 펼치지 않습니다.
  • 어떤 제약도 생성되지 않습니다. 컬럼은 NOT NULL, 고유성, 인덱스 없이 출력되므로, 당신이 조일 때까지 모두 null을 허용합니다.

더 깔끔한 결과를 위한 팁

  • 완전히 채워진 레코드를 사용하세요. 샘플에서 null인 필드는 텍스트/문자열 타입으로 추론되는데, 이는 원하는 바인 경우가 드뭅니다.
  • 생성 후 예약어의 이름을 바꾸세요. type, order, user 같은 필드는 SQL에서 따옴표로 감싸야 합니다.
  • 출력을 발판으로 여기세요. VARCHAR 길이와 DECIMAL 정밀도를 조정하고, 인덱스를 추가하고, 컬럼을 NOT NULL로 표시하며, 출시 전에 진짜 키를 고르세요.

자주 묻는 질문

중첩된 객체나 배열은 하나의 JSON 컬럼으로 매핑됩니다(SQL과 Sequelize에서는 JSON, Mongoose에서는 Object 필드). 도구는 중첩 구조를 하위 테이블이나 하위 스키마로 펼치지 않으므로, 필요하면 직접 평탄화하거나 정규화하세요.

아니요. 객체 배열을 붙여넣어도 첫 번째 객체만 검사하며, 그 키가 스키마를 정의합니다. 그 첫 레코드가 필요한 모든 필드를 각각 실제 값과 함께 담고 있는지 확인하세요.

아니요. 각 컬럼은 타입만 붙어 출력되므로, 결과에는 외래 키, 고유성 제약, 인덱스, NOT NULL 절이 없습니다. 이것들은 손으로 추가하세요. 도구가 샘플로부터 복원할 수 없는 의도를 담고 있기 때문입니다.

관계형 데이터베이스 마이그레이션에는 SQL CREATE TABLE, MongoDB 위의 Node.js 앱에는 Mongoose Schema, Sequelize ORM을 통해 관계형 데이터베이스 위에서 도는 Node.js 앱에는 Sequelize Model을 고르세요.

관련 도구

이 도구는 다른 언어로도 제공됩니다