[데이터베이스] Key 개념 정리 (PK, FK, Unique, Composite Key)

Do Hyun ·2026년 3월 5일

1. Primary Key (PK)

Primary Key는 테이블에서 각 행(row)을 유일하게 식별하는 컬럼입니다.

즉 중복될 수 없고 NULL도 허용되지 않습니다.

예시

CREATE TABLE member (
    id BIGINT PRIMARY KEY,
    email VARCHAR(255),
    name VARCHAR(100)
);

여기서 id가 PK입니다.

PK 특징

  • 유일성 (Uniqueness)
  • 같은 값이 존재할 수 없습니다.
  • NOT NULL
  • 테이블당 하나만 존재
  • Index 자동 생성
  • 대부분의 데이터베이스에서는 Primary Key를 생성하면 자동으로 Index가 생성됩니다.
구분PKFK
의미기본키외래키
역할행 식별다른 테이블 참조
중복불가능가능
NULL불가능가능
개수테이블당 1개여러개 가능

2. Foreign Key (FK)

Foreign Key는 다른 테이블의 PK를 참조하는 컬럼입니다.
즉 테이블 간 관계(Relation) 를 만들기 위한 키입니다.

CREATE TABLE orders (
    id BIGINT PRIMARY KEY,
    member_id BIGINT,
    FOREIGN KEY (member_id) REFERENCES member(id)
);
idmember_id
11
21
32

orders.member_id → member.id 관계가 Foreign Key입니다.

FK의 역할

Foreign Key는 데이터 무결성(Data Integrity) 을 보장합니다.

구분PKFK
의미기본키외래키
역할행 식별다른 테이블 참조
중복불가능가능
NULL불가능가능
개수테이블당 1개여러개 가능

3. Unique Key

Unique Key는 중복을 허용하지 않는 제약조건입니다.
즉 식별자 역할이 아니라 데이터 중복 방지 목적으로 사용됩니다.

UK 특징

  • 중복 불가능
  • NULL 허용 (DB에 따라 여러 개 가능)
  • 여러 개 생성 가능
  • Index 생성
  • 식별자 역할은 아님
CREATE TABLE member (
    id BIGINT PRIMARY KEY,
    email VARCHAR(255) UNIQUE
);
구분PKUNIQUE
NULL불가능가능
개수1개여러개
역할기본 식별자중복 방지

4. Composite Key (복합키)

Composite Key는 여러 컬럼을 합쳐서 하나의 PK로 사용하는 것입니다.

JPA에서 Composite Key 매핑

JPA에서는 복합키를 사용할 때 두 가지 방법이 있습니다.

1️⃣ @IdClass

@Entity
@IdClass(OrderItemId.class)
public class OrderItem {

    @Id
    private Long orderId;

    @Id
    private Long productId;

}
public class OrderItemId implements Serializable {

    private Long orderId;
    private Long productId;

}

2️⃣ @EmbeddedId

@Entity
public class OrderItem {

    @EmbeddedId
    private OrderItemId id;

}
@Embeddable
public class OrderItemId implements Serializable {

    private Long orderId;
    private Long productId;

}
profile
우당탕탕

0개의 댓글