기본 패턴
text
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email TEXT NOT NULL UNIQUE,
nickname TEXT UNIQUE,
name TEXT NOT NULL
);설명
PRIMARY KEY는 각 행을 유일하게 식별하는 대표 키입니다. 보통 테이블당 하나만 두고, 다른 테이블이 이 값을 참조하게 됩니다.UNIQUE는 특정 열 값이 중복되지 않도록 강제합니다. 이메일, 사용자 이름, 외부 시스템 식별자 같은 값에 자주 씁니다.NOT NULL은 값이 비어 있으면 안 되는 열을 지정합니다. 이름, 생성 시각, 상태값처럼 항상 있어야 하는 값에 중요합니다.- 세 제약은 서로 비슷해 보여도 역할이 다릅니다.
PRIMARY KEY는 식별,UNIQUE는 중복 금지,NOT NULL은 값 필수라는 규칙을 담당합니다. - 애플리케이션 코드에서도 검사할 수 있지만, 데이터베이스 차원 제약을 함께 두어야 여러 경로에서 들어오는 데이터 품질을 지킬 수 있습니다.
짧은 예제
text
ALTER TABLE posts
ADD CONSTRAINT posts_slug_unique UNIQUE (slug);빠른 정리
| 제약 | 의미 |
|---|---|
PRIMARY KEY | 행을 대표하는 유일 식별자 |
UNIQUE | 중복 금지 |
NOT NULL | 빈 값 금지 |
| 함께 사용 | "필수이면서 중복 불가" 규칙 표현 가능 |
주의할 점
UNIQUE만 있다고 해서 그 열이 항상 채워지는 것은 아닙니다. "반드시 있어야 하고 중복도 안 된다"는
요구라면 NOT NULL과 UNIQUE를 함께 고려해야 합니다.
참고 링크
1 sources