← 목차로
Ch.2

데이터의 세계

DB, SQL, NoSQL, 스키마

데이터베이스란 무엇인가

앱의 모든 정보 — 사용자 계정, 게시글, 설정, 로그 — 는 어딘가에 저장되어야 한다. 그 “어딘가”가 데이터베이스(Database, DB)다. 프론트엔드가 레스토랑의 홀이고 백엔드가 주방이라면, 데이터베이스는 냉장고다. 재료(데이터)를 안전하게 보관하고, 필요할 때 꺼내 쓸 수 있어야 한다.

바이브 코딩에서 데이터베이스를 이해하는 것이 중요한 이유가 있다. AI가 코드를 짜주더라도, 데이터를 어떻게 구조화할지는 사람이 결정해야 한다. 잘못된 데이터 구조는 나중에 앱 전체를 다시 만들어야 하는 이유가 된다.

스키마(Schema)

스키마는 데이터의 설계도다. “사용자 테이블에는 이름, 이메일, 비밀번호 필드가 있다” — 이런 구조를 정의하는 것이 스키마다. 집을 짓기 전 설계도를 그리는 것과 같다.

📋 스키마 예시: 상담 앱의 사용자

User {
  id:        고유 식별자 (자동 생성)
  name:      이름 (텍스트)
  email:     이메일 (텍스트, 고유)
  role:      역할 ("counselor" 또는 "client")
  createdAt: 가입 날짜 (타임스탬프)
}

CRUD — 데이터의 네 가지 기본 동작

모든 앱이 데이터로 하는 일은 결국 네 가지다.

C
Create (생성)
새 상담 일지 작성
R
Read (읽기)
내담자 목록 조회
U
Update (수정)
상담 노트 편집
D
Delete (삭제)
취소된 예약 삭제

💡 바이브 코딩 팁

AI에게 기능을 요청할 때 CRUD로 생각하면 명확해진다. “상담 일지 CRUD를 만들어줘”라고 하면 AI가 생성·조회·수정·삭제 기능을 모두 만들어준다.

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

비교표

구조테이블 (행 × 열)문서 (JSON 형태)
스키마엄격 (미리 정의)유연 (자유로운 구조)
관계테이블 간 JOIN중첩(nested) 또는 참조
적합한 경우정형 데이터, 복잡한 쿼리빠른 개발, 유연한 구조
바이브코딩에서Supabase (Lovable 기본)Firebase (Replit 연동)

💡 어떤 걸 선택해야 하는가?

바이브 코딩에서는 도구가 선택을 결정하는 경우가 많다. Replit → Firebase(NoSQL), Lovable → Supabase(SQL). 둘 다 바이브 코딩에 적합하다. 중요한 것은 선택한 DB의 특성을 이해하고, AI에게 그에 맞는 코드를 요청하는 것이다.

← Ch.1 웹의 구조Ch.3 개발 도구 →