데이터베이스의 Primary Key(PK)란 무엇인가?

0
post-thumbnail

데이터베이스의 Primary Key(PK)란 무엇인가?

1. Primary Key(PK)의 정의

Primary Key(기본 키)는 데이터베이스 테이블에서 각 행(row)고유하게 식별하기 위해 사용되는 하나 이상의 컬럼(column)으로 구성된다.

즉, 테이블에 여러 레코드가 있어도, PK는 각각의 레코드를 구별해주는 유일한 기준이다.


2. Primary Key의 주요 특징

(1) 고유성 (Uniqueness)

  • 기본 키에 해당하는 컬럼은 테이블 내에서 중복 값을 가질 수 없다.
  • 같은 값을 두 번 넣으려고 하면 오류가 발생한다.

(2) NULL 불허 (NOT NULL)

  • 기본 키는 NULL 값을 허용하지 않는다.
  • 즉, 항상 값이 있어야 한다. 비워둘 수 없다.

(3) 테이블당 하나만 존재

  • 하나의 테이블에는 기본 키를 하나만 정의할 수 있다.
  • 단, 이 기본 키는 하나의 컬럼일 수도 있고, 여러 컬럼의 조합(복합 키)일 수도 있다.

(4) 자동 인덱싱

  • 대부분의 데이터베이스 시스템은 PK를 정의하면 해당 컬럼에 대해 자동으로 인덱스를 생성한다.
  • 인덱스는 검색 속도를 빠르게 해주는 자료 구조로, PK는 자연스럽게 조회 성능 향상에도 기여한다.

3. 기본 키의 예시 (단일 키 vs 복합 키)

예제 테이블 1: 사용자 정보 테이블

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    email TEXT NOT NULL,
    name TEXT
);
  • 이 테이블에서 id는 PK로 지정되어 있고, 자동 증가하는 숫자다.
  • 각 사용자는 id 값으로 고유하게 식별된다.
  • 같은 이메일이 있어도 id는 중복되지 않는다.

예제 테이블 2: 주문 상세 테이블 (복합 기본 키)

CREATE TABLE order_items (
    order_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT,
    PRIMARY KEY (order_id, product_id)
);
  • 이 테이블은 한 주문(order)에 여러 상품(product)이 들어갈 수 있으므로,
    order_idproduct_id조합을 기본 키로 사용한다.
  • 즉, 한 주문에 같은 상품이 한 번만 등장해야 함을 보장한다.
  • order_id = 1001, product_id = 2001인 행이 이미 있으면, 같은 조합으로 또 넣을 수 없다.

4. 복합 기본 키(Composite Primary Key)란?

  • 기본 키는 하나의 컬럼뿐 아니라 여러 컬럼을 조합하여 구성할 수 있다.
  • 이를 복합 키(Composite Key) 또는 복합 기본 키라고 부른다.
  • 복합 키는 두 개 이상의 컬럼 값의 조합이 고유해야 할 때 사용한다.

예시 상황:

  • 어떤 사용자(user)가 프로젝트(project)를 여러 개 갖고, 각 프로젝트 안에 같은 이름의 태스크(task_name)가 존재할 수 있다면?
    user_id + project_id + task_name이 복합 키가 될 수 있다.

5. Primary Key와 관련된 잘못된 예

잘못된 설계이유
PK로 중복 가능한 값을 설정고유성을 보장하지 못함
NULL이 들어갈 수 있는 컬럼을 PK로 설정PK는 NULL 불가
의미 있는 값(예: 이메일)을 PK로 사용값 변경 가능성이 있음 → 다른 컬럼으로 식별자를 두는 게 안전

6. Primary Key와 Candidate Key, Surrogate Key의 관계

  • Candidate Key: 테이블에서 기본 키가 될 수 있는 후보
  • Primary Key: 그중 실제로 선택된 키
  • Surrogate Key: 의미 없는 인공적인 식별자 (예: id SERIAL처럼 숫자로만 이루어진 키)

보통 실무에서는 Surrogate Key를 PK로 두고, 의미 있는 컬럼(email 등)은 제약 조건(UNIQUE)으로 따로 관리하는 게 일반적이다.


7. 요약

특징설명
고유성테이블 내에서 중복 불가
NULL 불가반드시 값이 있어야 함
단일한 테이블에 하나만 존재
자동 인덱싱성능 향상을 위해 자동으로 인덱스 생성
복합 키 가능여러 컬럼의 조합으로 기본 키 구성 가능

마무리

Primary Key는 모든 테이블 설계의 기초이다.

관계형 데이터베이스에서 데이터의 정합성, 조회 성능, 참조 무결성(Foreign Key) 등을 유지하기 위해 반드시 적절한 PK를 설정해야 한다.

단일 키든 복합 키든, 테이블의 "이 데이터를 어떻게 유일하게 식별할 것인가?" 를 중심으로 PK를 설계하는 것이 핵심이다.

0개의 댓글