본문으로 건너뛰기
DB 설계

DDL 빌더

테이블을 시각적으로 설계하고 CREATE TABLE 문(MySQL / PostgreSQL / SQLite)과 ER 다이어그램을 함께 생성합니다. JSON 샘플을 붙여넣으면 컬럼을 자동으로 추론할 수도 있습니다. 모든 처리는 브라우저 내에서 이루어지며 입력한 내용은 전송되지 않습니다.

가이드: 사용 방법 및 특징

  • "JSON으로 자동 생성"에 객체 또는 배열 JSON을 붙여넣으면 컬럼 타입·기본키·NOT NULL이 자동 추론된 테이블이 추가됩니다.
  • "테이블 설계"에서 테이블 이름·컬럼 이름·타입·PK/NOT NULL/UNIQUE/자동 증가·기본값을 화면에서 직접 편집할 수 있습니다.
  • "관계"에서 참조 테이블·컬럼과 대상 테이블·컬럼을 선택하면 외래 키 제약과 ER 다이어그램의 연결선이 추가됩니다.
  • 방언(MySQL / PostgreSQL / SQLite)을 선택하고 "DDL 생성"을 누르면 해당 방언 형식의 CREATE TABLE 문이 출력됩니다.

FAQ: 자주 묻는 질문

  • MySQL·PostgreSQL·SQLite에서 타입은 어떻게 달라지나요?

    테이블은 내부적으로 공통 논리 타입(INTEGER, DECIMAL, VARCHAR 등)으로 관리되며, DDL을 생성할 때만 각 데이터베이스의 실제 타입으로 변환됩니다. 예를 들어 BOOLEAN은 SQLite에 불리언 타입이 없어 INTEGER로 변환되고, 자동 증가 기본키는 MySQL은 AUTO_INCREMENT, PostgreSQL은 SERIAL, SQLite는 INTEGER PRIMARY KEY AUTOINCREMENT로 출력됩니다.
  • PK를 체크하면 NOT NULL·UNIQUE·기본값 설정은 어떻게 되나요?

    기본키는 정의상 NOT NULL이면서 UNIQUE이므로, PK로 표시한 컬럼은 NOT NULL·UNIQUE·기본값 설정이 무시되고 "타입 PRIMARY KEY"(자동 증가가 켜져 있으면 AUTO_INCREMENT 등 추가)로만 출력됩니다.
  • JSON에서 생성할 때 중첩된 데이터는 어떻게 처리되나요?

    최상위 속성의 값이 객체 배열이면 부모 테이블을 참조하는 외래 키를 가진 별도 테이블로 자동 분리됩니다. 단순한 중첩 객체는 JSON 타입 컬럼으로 처리됩니다. 1단계보다 깊은 중첩은 자동으로 분리되지 않습니다.

활용: 주요 활용 사례

  • 새 API·서비스의 초기 테이블 설계

    프로젝트 초기 단계에서 필요한 테이블과 컬럼을 시각적으로 구성하고 바로 CREATE TABLE 문으로 내보낼 수 있습니다.

  • 기존 JSON 응답에서 DB 스키마 역산

    API 응답이나 로그의 JSON 샘플을 붙여넣어 대응하는 테이블 구성과 DDL을 초안으로 자동 생성할 수 있습니다.

  • 팀 ER 다이어그램 리뷰 자료 작성

    설계한 테이블 구성을 Mermaid 형식 ER 다이어그램으로 즉시 확인·공유할 수 있어 리뷰 시 의견을 맞추는 데 유용합니다.

  • sql-to-er·SQL Builder와 연계한 설계 흐름

    생성한 DDL을 SQL Builder로 넘겨 쿼리를 작성하거나, 나중에 sql-to-er에 붙여넣어 구조를 다시 확인하는 등 설계부터 쿼리 작성까지 브라우저 안에서 이어갈 수 있습니다.

주의: 주의 사항·제한

  • 생성되는 DDL은 기본적인 제약만 포함합니다

    PRIMARY KEY, NOT NULL, UNIQUE, DEFAULT, FOREIGN KEY는 지원하지만 인덱스, CHECK 제약, 문자셋·정렬 순서, 파티셔닝 등은 생성되지 않습니다. 프로덕션 마이그레이션에 사용하기 전에 반드시 내용을 확인하세요.

  • JSON 타입 추론은 제공한 샘플에 의존합니다

    제공한 샘플에 포함된 값에서만 타입을 추론할 수 있습니다. 실제로 다른 타입의 값이 들어올 수 있다면 생성 후 타입을 직접 조정하세요.

JSON으로 자동 생성(선택)

테이블 설계

관계(외래 키)

DDL 출력

ER 다이어그램 미리보기

이 도구의 관련 기사

최신 아티클

활용 사례
2026-08-07

curl 옵션 정리|-X -H -d 가 실제로 하는 일과 함정

실무에서 만나는 curl 옵션을 표로 정리했습니다. -d 만으로 이미 POST가 되는 이유, -d 와 --data-raw 의 차이, 앞의 @ 가 조용히 파일을 읽는 함정, 작은따옴표와 큰따옴표의 구분, -k 와 -L 을 쉽게 붙이면 안 되는 이유까지 예제로 설명합니다.

도구 소개
2026-08-06

JSON Schema와 Zod를 상호 변환하는 원리|required와 .optional()의 대응

JSON Schema에서 Zod 스키마를 만들고 Zod 코드에서 다시 JSON Schema를 뽑아내는 양방향 변환기의 구현을 해설합니다. required와 .optional()의 기본값이 반대인 문제, 제약 조건 대응표, 코드를 실행하지 않고 해석하는 방법까지 정리합니다.

활용 사례
2026-08-06

SQL 절 실행 순서 레퍼런스|WHERE에서 SELECT 별칭을 못 쓰는 이유

SQL은 작성한 순서대로 실행되지 않습니다. 논리적 실행 순서(FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT)를 축으로, 별칭이 WHERE에서 안 되는 이유, WHERE와 HAVING의 구분, ONLY_FULL_GROUP_BY, COUNT(*)와 COUNT(컬럼)의 차이, LEFT JOIN + WHERE 함정을 예제로 정리합니다.

활용 사례
2026-08-06

unified diff 형식 읽는 법|git diff의 @@ 헤더 완전 해설

git이 출력하는 unified diff 형식을 읽는 법을 정리했습니다. @@ -12,7 +12,9 @@ 의 네 숫자가 뜻하는 것, 한 글자만 고쳐도 줄 전체가 바뀐 것처럼 보이는 이유, 공백과 줄바꿈 문자의 함정, \ No newline at end of file, 머지 커밋의 @@@, similarity index를 통한 이름 변경 감지까지 예제로 설명합니다.

활용 사례
2026-08-06

UTC⇄JST/KST 변환 레퍼런스|9시간 시차 대조표와 타임존 사고 예방법

UTC와 일본 시간(JST)·한국 시간(KST)의 변환을 대조표로 정리했습니다. ISO 8601의 Z와 +09:00의 의미, JavaScript 날짜 파싱이 9시간 어긋나는 조건, MySQL/PostgreSQL의 타임존 동작, GitHub Actions cron이 UTC로 도는 함정까지 예제와 함께 해설합니다.

활용 사례
2026-08-04

CREATE TABLE 레퍼런스|MySQL·PostgreSQL·SQLite의 타입과 제약 조건 차이

CREATE TABLE(DDL) 작성법을 3개 데이터베이스 비교표로 정리했습니다. 타입 대응표, 자동 증가(AUTO_INCREMENT / IDENTITY / rowid)의 방언 차이, 외래 키의 ON DELETE 동작, MySQL이 조용히 무시하는 CHECK 제약까지 예제와 함께 해설합니다.

광고

광고