데이터의 세계
DB, SQL, NoSQL, 스키마
데이터베이스란 무엇인가
앱의 모든 정보 — 사용자 계정, 게시글, 설정, 로그 — 는 어딘가에 저장되어야 한다. 그 “어딘가”가 데이터베이스(Database, DB)다. 프론트엔드가 레스토랑의 홀이고 백엔드가 주방이라면, 데이터베이스는 냉장고다. 재료(데이터)를 안전하게 보관하고, 필요할 때 꺼내 쓸 수 있어야 한다.
바이브 코딩에서 데이터베이스를 이해하는 것이 중요한 이유가 있다. AI가 코드를 짜주더라도, 데이터를 어떻게 구조화할지는 사람이 결정해야 한다. 잘못된 데이터 구조는 나중에 앱 전체를 다시 만들어야 하는 이유가 된다.
스키마(Schema)
스키마는 데이터의 설계도다. “사용자 테이블에는 이름, 이메일, 비밀번호 필드가 있다” — 이런 구조를 정의하는 것이 스키마다. 집을 짓기 전 설계도를 그리는 것과 같다.
📋 스키마 예시: 상담 앱의 사용자
User {
id: 고유 식별자 (자동 생성)
name: 이름 (텍스트)
email: 이메일 (텍스트, 고유)
role: 역할 ("counselor" 또는 "client")
createdAt: 가입 날짜 (타임스탬프)
}CRUD — 데이터의 네 가지 기본 동작
모든 앱이 데이터로 하는 일은 결국 네 가지다.
💡 바이브 코딩 팁
SQL vs NoSQL
데이터베이스는 크게 두 종류로 나뉜다.
SQL (관계형 데이터베이스)
SQL(Structured Query Language)은 엑셀 스프레드시트와 비슷하다. 데이터가 행(row)과 열(column)로 정리된 테이블에 저장된다. 테이블 간에 “관계”를 맺을 수 있다. 예: 사용자 테이블과 상담 일지 테이블이 “사용자 ID”로 연결된다.
📊 SQL은 엑셀이다
| id | name | email | role | |----|--------|------------------|------------| | 1 | 김상담 | kim@example.com | counselor | | 2 | 이내담 | lee@example.com | client |
대표 제품: PostgreSQL (Supabase), MySQL, SQLite
NoSQL (비관계형 데이터베이스)
NoSQL은 테이블 대신 문서(document) 형태로 데이터를 저장한다. JSON과 비슷한 구조다. 스키마가 유연해서, 같은 컬렉션 안에서도 문서마다 다른 필드를 가질 수 있다.
📄 NoSQL은 서류함이다
{
"id": "user_001",
"name": "김상담",
"email": "kim@example.com",
"role": "counselor",
"specialties": ["CBT", "가족치료"],
"settings": {
"theme": "dark",
"notifications": true
}
}대표 제품: Firebase Firestore, MongoDB, DynamoDB
비교표
💡 어떤 걸 선택해야 하는가?
바이브 코딩에서는 도구가 선택을 결정하는 경우가 많다. Replit → Firebase(NoSQL), Lovable → Supabase(SQL). 둘 다 바이브 코딩에 적합하다. 중요한 것은 선택한 DB의 특성을 이해하고, AI에게 그에 맞는 코드를 요청하는 것이다.