Primary Key(기본 키)는 데이터베이스 테이블에서 각 행(row)을 고유하게 식별하기 위해 사용되는 하나 이상의 컬럼(column)으로 구성된다.
즉, 테이블에 여러 레코드가 있어도, PK는 각각의 레코드를 구별해주는 유일한 기준이다.
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email TEXT NOT NULL,
name TEXT
);
id
는 PK로 지정되어 있고, 자동 증가하는 숫자다.id
값으로 고유하게 식별된다.id
는 중복되지 않는다.CREATE TABLE order_items (
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT,
PRIMARY KEY (order_id, product_id)
);
order_id
와 product_id
의 조합을 기본 키로 사용한다.order_id = 1001, product_id = 2001
인 행이 이미 있으면, 같은 조합으로 또 넣을 수 없다.예시 상황:
user_id + project_id + task_name
이 복합 키가 될 수 있다.잘못된 설계 | 이유 |
---|---|
PK로 중복 가능한 값을 설정 | 고유성을 보장하지 못함 |
NULL이 들어갈 수 있는 컬럼을 PK로 설정 | PK는 NULL 불가 |
의미 있는 값(예: 이메일)을 PK로 사용 | 값 변경 가능성이 있음 → 다른 컬럼으로 식별자를 두는 게 안전 |
id SERIAL
처럼 숫자로만 이루어진 키)보통 실무에서는 Surrogate Key를 PK로 두고, 의미 있는 컬럼(email 등)은 제약 조건(UNIQUE)으로 따로 관리하는 게 일반적이다.
특징 | 설명 |
---|---|
고유성 | 테이블 내에서 중복 불가 |
NULL 불가 | 반드시 값이 있어야 함 |
단일 | 한 테이블에 하나만 존재 |
자동 인덱싱 | 성능 향상을 위해 자동으로 인덱스 생성 |
복합 키 가능 | 여러 컬럼의 조합으로 기본 키 구성 가능 |
Primary Key는 모든 테이블 설계의 기초이다.
관계형 데이터베이스에서 데이터의 정합성, 조회 성능, 참조 무결성(Foreign Key) 등을 유지하기 위해 반드시 적절한 PK를 설정해야 한다.
단일 키든 복합 키든, 테이블의 "이 데이터를 어떻게 유일하게 식별할 것인가?" 를 중심으로 PK를 설계하는 것이 핵심이다.