키와 형식 선택
BIGSERIAL과 UUID 기본 키 중에서 선택하고 TEXT와 VARCHAR(n) 중 적절한 형식을 결정하며 모든 열에 알맞은 형식을 선택합니다.
키와 형식 선택은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
기본 키 선택하기
실제로 선택할 수 있는 방법은 세 가지입니다:
- BIGSERIAL — 단조롭게 증가하는 64비트 정수
- UUID — 전역적으로 고유한 128비트 값
- 자연 키 — 실제 세계의 식별자(이메일, ISBN)
BIGSERIAL이 유리한 경우
대부분의 애플리케이션에서 기본적으로 선택할 수 있습니다:
- 작고(8바이트), 인덱스가 빠르며, 캐시 효율이 좋습니다
- 단조롭게 증가하므로 최근 데이터가 인덱스의 끝에 모입니다
- URL에서 읽기 쉽습니다(예:
/posts/42)
UUID가 유리한 경우
다음과 같은 경우 UUID를 선택하세요:
- 전역적으로 고유한 ID가 필요한 경우(여러 데이터 센터, 오프라인 우선 애플리케이션)
- URL에서 ID를 통해 비즈니스 규모가 노출되는 것을 원하지 않는 경우
- INSERT 전에 클라이언트 측에서 ID를 생성하려는 경우
비용은 16바이트입니다(BIGINT의 8바이트와 비교). 또한 v4 UUID는 인덱스에 무작위로 삽입됩니다.
자연 키가 위험한 이유
이메일은 바뀝니다. 상품 식별 코드는 이름이 바뀔 수 있습니다. 국가 코드는 분리되기도 합니다. PK에는 대리 키를 사용하고 자연 키에는 UNIQUE 제약 조건을 설정하세요.
열 유형: 문자열
대부분의 텍스트 열에는 다음을 사용합니다:
VARCHAR(n)— 엄격한 최대 길이가 있을 때(이메일, 코드)TEXT— 자유 형식의 긴 콘텐츠CITEXT— 비교 시 항상 대소문자를 구분하지 않아야 할 때(이메일!)
열 유형: 숫자
숫자 열에는 다음을 사용합니다:
- ID와 카운터에는
BIGINT - 금액에는
NUMERIC(p, s) - 과학 계산에만
REAL/DOUBLE PRECISION
열 유형: 시간
시간 열에는 다음을 사용합니다:
- 이벤트에는
TIMESTAMPTZ(기본값) - 달력상의 날짜에는
DATE(생일, 공휴일) - 날짜 없이 하루 중 시간을 나타낼 때는
TIME(영업시간)
불리언과 상태
열에 앞으로 추가될 상태가 두 개보다 많다면 불리언 대신 상태 텍스트와 CHECK를 사용하는 편이 좋습니다:
-- Will probably grow:
status TEXT NOT NULL CHECK (status IN ('draft','published','archived'))
-- vs the trap of "is_published BOOLEAN" when you later need a third state.제약 조건 함께 적용하기
모든 열에는 다음이 있어야 합니다:
- 요구사항에 맞는 가장 좁은 유형
- NULL에 의미가 있는 경우가 아니라면
NOT NULL - 대부분 같은 값이 들어가는 열이라면
DEFAULT - 도메인 규칙이 있다면
CHECK - WHERE/JOIN/ORDER에서 사용하는 열이라면 인덱스
저장 공간에 미치는 영향
좁은 유형 = 더 작은 행 = 페이지당 더 많은 행 = 더 높은 캐시 적중률입니다. TEXT를 VARCHAR(20)으로 바꾸어도 저장 공간은 절약되지 않습니다(저장 방식이 같음). BIGINT를 INT로 바꾸면 열 너비가 절반으로 줄어듭니다.
외래 키 유형은 일치해야 함
FK 열 유형은 참조하는 PK 유형과 정확히 일치해야 합니다:
-- Wrong (silently won't use the index efficiently):
user_id INT REFERENCES users(id) -- where users.id is BIGINT
-- Right:
user_id BIGINT REFERENCES users(id)복습
유형 선택은 설계입니다.
- PK에는 BIGSERIAL 또는 UUID
- 금액에는 NUMERIC
- 이벤트에는 TIMESTAMPTZ
- 변경될 수 있는 상태에는 TEXT와 CHECK 조합
- 기본적으로 NOT NULL
빠른 확인
여러 시간대의 사용자에 대한 이벤트 시각을 저장하려고 합니다. 어떤 유형을 사용해야 합니까?
자주 묻는 질문
“키와 형식 선택” 강의는 무료인가요?
네 — “키와 형식 선택” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“키와 형식 선택”에서 뭘 배우나요?
BIGSERIAL과 UUID 기본 키 중에서 선택하고 TEXT와 VARCHAR(n) 중 적절한 형식을 결정하며 모든 열에 알맞은 형식을 선택합니다. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“키와 형식 선택” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.