바이브 코딩 · 만들기 · 04 / 10

화면보다 데이터부터,
비전공자를 위한 테이블 설계

AI에게 “견적 화면 만들어 줘”라고 하면 그럴듯한 화면이 금방 나옵니다. 문제는 그 뒤입니다. 화면은 언제든 다시 그릴 수 있지만, 그 아래에 쌓인 데이터의 모양은 한번 정해지면 바꾸기가 매우 어렵습니다. 업무시스템을 오래 만들며 가장 먼저 확인한 것도 언제나 데이터 구조였습니다.

HandsMate 바이브 코딩 가이드 · 예상 읽기 7분
결론 먼저화면을 만들기 전에 업무에 나오는 ‘명사’를 표로 나누고, 표마다 고유번호·상태·작성일시를 두세요. 한 칸에는 한 가지 값만, 표끼리는 이름이 아니라 번호로 연결하고, 지우는 대신 상태를 바꾸면 나중에 고칠 일이 크게 줄어듭니다.

1. 화면은 옷이고, 데이터는 뼈대입니다.

금융·공공·기업 시스템에서 가장 비싼 수정은 화면이 아니라 테이블 구조 변경이었습니다. 이미 쌓인 데이터를 새 구조로 옮기고, 그 데이터를 쓰는 모든 화면과 계산을 함께 고쳐야 하기 때문입니다.

AI는 화면을 먼저 만들면서 데이터 구조를 그때그때 필요한 만큼만 만듭니다. 기능이 붙을수록 표가 엉키고, 어느 순간 작은 수정 하나가 여러 곳을 깨뜨립니다.

2. 업무를 표로 옮기는 4단계

1단계명사 찾기

한 장 요구사항에서 ‘거래처, 품목, 견적서’처럼 반복해서 나오는 명사를 고릅니다.

2단계표 나누기

명사 하나가 표 하나입니다. 한 견적서에 품목이 여러 개라면 ‘견적 상세’ 표를 따로 둡니다.

3단계항목 정하기

표마다 필요한 칸(이름, 수량, 금액, 날짜)을 적고 필수 여부를 표시합니다.

4단계관계 잇기

‘견적서는 거래처 하나를 가진다’처럼 표 사이의 관계를 번호로 연결합니다.

3. 예시: 견적 관리 도구의 표 4개

표주요 항목메모
거래처거래처번호, 거래처명, 사업자번호, 담당자, 사용여부삭제 대신 사용여부로 관리
품목품목번호, 품목명, 규격, 기본단가, 사용여부단가가 바뀌어도 과거 견적은 그대로
견적서견적번호, 거래처번호, 견적일, 상태, 합계, 작성자, 작성일시상태: 작성중 · 발송 · 수주 · 취소
견적 상세견적번호, 순번, 품목번호, 수량, 단가, 금액견적 당시 단가를 따로 저장

‘견적 상세’에 단가를 다시 저장하는 이유는, 품목의 기본단가가 나중에 바뀌어도 이미 보낸 견적의 금액이 바뀌면 안 되기 때문입니다. 이런 판단이 업무를 아는 사람이 데이터 설계에 꼭 참여해야 하는 이유입니다.

4. 코드·이력·상태 값은 처음부터 나누세요.

코드 값

정해진 선택지는 목록으로

상태, 구분, 지역처럼 고를 수 있는 값은 글자로 자유 입력받지 말고 목록(코드)으로 관리합니다. ‘완료’, ‘완료됨’, ‘끝’이 섞이지 않습니다.

이력

누가 언제 바꿨는지 남기기

작성자·작성일시·수정자·수정일시 네 칸만 있어도 문제가 생겼을 때 추적할 수 있습니다. 금액·상태처럼 중요한 값은 변경 기록을 따로 남깁니다.

상태

지우지 말고 상태를 바꾸기

데이터를 실제로 삭제하면 연결된 기록이 깨지고 되돌릴 수 없습니다. ‘취소’, ‘사용 안 함’ 같은 상태로 숨기는 것이 업무시스템의 기본입니다.

5. 비전공자가 자주 하는 설계 실수

실수생기는 문제이렇게 바꾸세요
한 칸에 여러 값 (예: 품목 칸에 ‘A, B, C’)합계·검색이 안 됨상세 표로 나누어 한 줄에 하나씩
이름으로 연결 (거래처명으로 견적 연결)이름이 바뀌면 연결이 끊김고유번호로 연결
금액·수량을 글자로 저장계산·정렬 오류숫자 형식으로 저장
날짜 형식이 제각각기간 조회가 틀림날짜 형식으로 통일
삭제 버튼으로 실제 삭제기록 손실, 복구 불가상태 변경으로 처리

6. AI에게 데이터 설계를 맡길 때

데이터 설계도 AI에게 초안을 받을 수 있습니다. 다만 화면보다 먼저, 따로 요청하고, 결과를 아래 질문으로 검토하세요.

요청 예시
아래 요구사항으로 데이터베이스 표를 설계해 줘. 화면이나 코드는 아직 만들지 마. 표 이름, 항목, 형식, 필수 여부, 표 사이 관계를 표로 정리하고, 삭제 대신 상태로 관리할 항목과 변경 이력이 필요한 항목을 따로 표시해 줘.
[한 장 요구사항 붙여넣기]
검토 질문 · 한 칸에 두 가지 값이 들어가는 곳은 없나? · 표끼리 이름이 아닌 번호로 연결됐나? · 나중에 바뀌면 안 되는 값(당시 단가 등)이 따로 저장되나? · 지우면 안 되는 데이터에 상태 칸이 있나?

7. 화면을 만들기 전 체크리스트

업무의 명사를 찾아 표로 나눴다.
모든 표에 고유번호가 있다.
표끼리는 이름이 아니라 번호로 연결했다.
선택지 값은 목록(코드)으로 관리한다.
작성자·작성일시 등 이력 칸을 넣었다.
삭제 대신 상태로 처리할 데이터를 정했다.
한 줄 원칙

나중에 고치기 어려운 것부터 먼저 정합니다.

화면은 열 번 바꿔도 되지만 데이터 구조는 한 번 바꾸는 데도 큰 비용이 듭니다. 표 설계가 끝났다면 이제 AI에게 작게 나눠서 일을 시킬 차례입니다. 다음 편에서 다룹니다.