<aside> 📖
학습 목표
| 전략 | 설명 | 예시 |
|---|---|---|
| SERIAL | 자동 증가 정수 | id SERIAL |
| BIGSERIAL | 대용량 데이터 시 사용 | id BIGSERIAL |
| UUID | 전역 유일 식별자 사용 | id UUID |
| 복합키 | 여러 컬럼 조합으로 식별 | (user_id, role_id) |
CREATE TABLE members (
id SERIAL PRIMARY KEY,
email VARCHAR(100) UNIQUE NOT NULL
);
CREATE TABLE orders (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE user_roles (
user_id INT,
role_id INT,
PRIMARY KEY (user_id, role_id)
);
-- PK 명시적 이름 지정
CREATE TABLE products (
product_id SERIAL,
name VARCHAR(100) NOT NULL,
PRIMARY KEY (product_id)
);
<aside> 💡
PostgreSQL에서는 UUID 타입과 gen_random_uuid()를 조합하여 글로벌 식별자로 활용 가능
복합키는 조인 관계가 많아질수록 구조 복잡도 증가에 주의
</aside>
| 옵션 | 설명 |
|---|---|
| ON DELETE CASCADE | 참조 대상 삭제 시 함께 삭제 |
| ON UPDATE CASCADE | 참조 대상 변경 시 함께 변경 |
| RESTRICT / NO ACTION | 기본값, 변경/삭제 거부 |