VCA

AI로 데이터베이스 설계하기

'무엇을 저장할지'를 AI로 테이블로. 컬럼·관계·인덱스, 그리고 처음부터 막다른 길로 가지 않는 설계 순서.

게시일 수정일 검토일 약 2분 분량편집 방침#실전 가이드#데이터베이스#설계
학습 경로CRM 경로

한 문장으로

데이터베이스 설계 = 먼저 무엇을 저장하고 어떻게 연결되는지 정한다. 그다음 AI에게 테이블로 만들게 한다.

만들 결과물

컬럼·타입·관계·인덱스가 명확한 테이블 초안. 그대로 AI에 넘겨 마이그레이션을 생성할 수 있다.

테이블을 건드리기 전에 '명사'를 나열하라

가장 쉬운 시작: 제품을 한 문장으로 설명하고 그 안의 명사에 동그라미를 칩니다. "사용자가 주문해서 상품을 산다"라면 명사는 사용자·주문·상품. 이 셋이 보통 세 개의 테이블이 됩니다.

명사 먼저, 그다음 컬럼. 반대로(컬럼 먼저) 하면 설계할수록 엉키기 쉽습니다.

먼저 답해야 할 세 가지

  1. 각 대상에 어떤 컬럼과 타입이 필요한가? 사용자는 email(문자열)과 생성 시각(타임스탬프), 주문은 금액(숫자)과 상태(문자열).
  2. 무엇과 무엇이 연결되는가? 한 사용자는 여러 주문을 가진다(1대다). 한 주문은 여러 상품을 포함한다(다대다, 중간 테이블 필요).
  3. 자주 검색되는 컬럼은? email로 사용자를 자주 찾는다면 email에 인덱스를 두어 검색을 빠르게 유지합니다.

AI에게 이렇게 말하세요

명사 목록·컬럼·관계를 정리한 뒤 AI에게 스키마와 마이그레이션을 생성하게 하고, 다음을 명시적으로 요구하세요.

  • 모든 테이블에 id·created_at·updated_at을 두고, 시각은 UTC로 저장.
  • 올바른 타입 사용(금액을 문자열로, 불리언을 "0"/"1" 문자열로 저장하지 않기).
  • 관계는 외래 키로 표현하고, 검색하는 컬럼에 인덱스를 둔다.
  • 마이그레이션은 롤백 가능해야 한다(up이 있으면 down도).

예: 단순한 주문 시스템

한 사용자는 여러 주문을 가지고, 한 주문은 여러 '주문 항목'으로 구성되며, 각 항목은 하나의 상품을 가리킵니다. 가운데의 ORDER_ITEM이 '다대다'를 처리하는 중간 테이블입니다.

초보자가 빠지는 함정

  • 거대한 한 테이블에 전부 담기: 컬럼이 폭발하고 한 곳의 변경이 전체에 파급. 필요하면 분리.
  • 전부 문자열 타입: 합계·정렬·크기 비교가 나중에 괴로워집니다.
  • 시각을 UTC로 저장하지 않기: 시간대를 넘으면 버그 확정. 표시할 때 로컬로 변환하면 됩니다.
  • 처음부터 과도한 설계: 쓸 것을 만들고, 필요해지면 추가. YAGNI.

다음 단계

자주 묻는 질문

데이터베이스 설계를 완전히 AI에 맡기고 저는 아무 생각도 안 해도 되나요?

권하지 않습니다. 적어도 ‘무엇을 저장할지(명사)와 어떻게 연결되는지’는 직접 나열해야 하며, 그것은 당신만 아는 업무 지식입니다. 그걸 명확히 해 AI에 스키마를 생성하게 하면 제품에 맞습니다. 아니면 AI는 일반적 추측만 하게 되어 나중에 바꾸기가 괴롭습니다.

처음부터 데이터베이스를 완벽하게 설계해야 하나요?

아닙니다. 실제로 쓸 컬럼과 관계만 만들고(YAGNI) 필요할 때 더합니다. 다만 ‘형태’는 처음에 맞추는 게 좋습니다. 금액은 숫자, 시각은 UTC, 자주 조회하는 컬럼에 인덱스—이런 건 나중에 바꾸는 비용이 큽니다.

참고 자료

  1. PostgreSQL DocumentationPostgreSQL Global Development Group
  2. SQLite DocumentationSQLite

CRM 경로 다음 단계: 인증