<aside> 📖

학습 목표

1. 키와 제약조건 구현

1-1. 기본키 구현 전략

1-1-1. ✅ 개념

1-1-2. 📌 PK 생성 전략

전략 설명 예시
SERIAL 자동 증가 정수 id SERIAL
BIGSERIAL 대용량 데이터 시 사용 id BIGSERIAL
UUID 전역 유일 식별자 사용 id UUID
복합키 여러 컬럼 조합으로 식별 (user_id, role_id)

1-1-3. 예시

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>


1-2. 외래키 제약조건

1-2-1. ✅ 개념

1-2-2. 📌 옵션

옵션 설명
ON DELETE CASCADE 참조 대상 삭제 시 함께 삭제
ON UPDATE CASCADE 참조 대상 변경 시 함께 변경
RESTRICT / NO ACTION 기본값, 변경/삭제 거부