IT이야기/데이터베이스

기본 키(Primary Key): 데이터의 무결성을 보장하는 핵심 키

Chiba-in 2025. 2. 28. 09:00

🔹 기본 키(Primary Key)란?

1. 기본 키의 정의

기본 키(Primary Key, PK)는 테이블에서 각 행(Row)을 고유하게 식별하는 열(Column) 또는 열의 조합을 의미합니다.
기본 키는 NULL 값을 가질 수 없으며, 중복된 값을 허용하지 않음으로써 데이터의 무결성(Integrity)과 일관성(Consistency)을 보장합니다.

기본 키의 주요 역할:

  • 각 행을 고유하게 식별하여 중복 데이터 방지
  • 데이터 무결성을 유지하고 관계형 데이터베이스의 정확성을 보장
  • 다른 테이블과의 관계 설정(외래 키)에서 참조하는 기준이 됨
  • 데이터 검색과 조회 속도를 최적화하여 성능 향상

📌 기본 키는 관계형 데이터베이스의 핵심 요소로, 모든 테이블에는 최소한 하나의 기본 키가 있어야 함


🔹 기본 키의 주요 특징

1. 고유성(Unique)

  • 기본 키 값은 테이블 내에서 반드시 유일해야 함
  • 동일한 값을 가진 두 개의 행이 존재할 수 없음

✔️ 예제:
| CustomerID (PK) | Name | Email |
|----------------|---------|------------------|
| 1 | John Doe | john@example.com |
| 2 | Jane Doe | jane@example.com |
| 3 | Alice | alice@example.com |

📌 CustomerID가 기본 키이므로 동일한 CustomerID 값을 가진 데이터는 존재할 수 없음


2. NOT NULL (NULL 값 허용 불가)

  • 기본 키는 반드시 값을 가져야 하며, NULL 값을 허용하지 않음

✔️ 잘못된 예제 (NULL 값 포함 – 오류 발생):
| CustomerID (PK) | Name | Email |
|----------------|---------|------------------|
| 1 | John Doe | john@example.com |
| NULL | Jane Doe | jane@example.com | ❌ 오류 발생!

📌 기본 키는 NULL 값을 가질 수 없으므로, 반드시 값이 존재해야 함


3. 단일 키(Single Key) 또는 복합 키(Composite Key) 가능

  • 단일 키(Single Primary Key): 하나의 열(Column)만을 기본 키로 설정
  • 복합 키(Composite Primary Key): 두 개 이상의 열(Column)을 조합하여 기본 키로 사용

✔️ 단일 기본 키 예제:

CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    Name VARCHAR(100),
    Email VARCHAR(100) UNIQUE
);

✔️ 복합 기본 키 예제:

CREATE TABLE Orders (
    OrderID INT,
    ProductID INT,
    Quantity INT,
    PRIMARY KEY (OrderID, ProductID)
);

📌 Orders 테이블에서는 OrderID와 ProductID가 함께 기본 키를 구성하므로, 같은 OrderID라도 다른 ProductID 값이 있으면 삽입 가능


🔹 기본 키 설정 방법

1. 테이블 생성 시 PRIMARY KEY 지정

✔️ 기본 키 설정 예제:

CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    Name VARCHAR(100),
    Email VARCHAR(100) UNIQUE
);

✔️ AUTO_INCREMENT를 사용하여 자동 증가 기본 키 설정 (MySQL, MariaDB)

CREATE TABLE Products (
    ProductID INT PRIMARY KEY AUTO_INCREMENT,
    Name VARCHAR(255),
    Price DECIMAL(10,2)
);

📌 ProductID는 자동 증가되므로, 새로운 데이터를 삽입할 때마다 자동으로 증가하는 고유한 값이 설정됨


2. 기존 테이블에 기본 키 추가(ALTER TABLE)

✔️ 기본 키가 없는 테이블에 추가:

ALTER TABLE Customers ADD PRIMARY KEY (CustomerID);

✔️ 복합 기본 키 추가:

ALTER TABLE Orders ADD PRIMARY KEY (OrderID, ProductID);

3. 기본 키 제거(DROP PRIMARY KEY)

✔️ 기본 키 삭제:

ALTER TABLE Customers DROP PRIMARY KEY;

📌 기본 키를 삭제하면 중복 데이터 및 NULL 값을 허용할 수 있으므로 신중하게 사용해야 함


🔹 기본 키와 외래 키(Primary Key vs. Foreign Key)

기본 키(Primary Key) vs. 외래 키(Foreign Key) 비교

특징 기본 키 (Primary Key) 외래 키 (Foreign Key)
고유성 모든 행이 고유해야 함 중복 가능
NULL 허용 여부 허용되지 않음 (NOT NULL) NULL 허용 가능
역할 테이블에서 각 행을 식별하는 키 다른 테이블의 기본 키를 참조하여 관계 설정
사용 목적 데이터 무결성 유지, 검색 최적화 테이블 간 관계 설정 및 데이터 연결

✔️ 외래 키 설정 예제:

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    CustomerID INT,
    OrderDate DATE,
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

📌 Orders 테이블의 CustomerID는 Customers 테이블의 CustomerID를 참조하는 외래 키로 사용됨


🔹 기본 키를 활용한 실무 사례

1. 전자상거래 시스템에서 고객 데이터 관리

📌 활용:

  • 고객 정보를 관리하기 위해 CustomerID를 기본 키로 설정하여 중복을 방지하고 데이터 무결성을 유지

✔️ SQL 코드:

CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY AUTO_INCREMENT,
    Name VARCHAR(100),
    Email VARCHAR(100) UNIQUE
);

2. 온라인 주문 처리에서 주문과 제품 데이터 연결

📌 활용:

  • OrderID와 ProductID를 복합 기본 키로 설정하여 특정 주문 내의 개별 상품을 고유하게 식별

✔️ SQL 코드:

CREATE TABLE OrderDetails (
    OrderID INT,
    ProductID INT,
    Quantity INT CHECK (Quantity > 0),
    PRIMARY KEY (OrderID, ProductID),
    FOREIGN KEY (OrderID) REFERENCES Orders(OrderID),
    FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);

📌 결론

기본 키(Primary Key)는 테이블에서 각 행을 고유하게 식별하는 열 또는 열의 조합으로, 데이터 무결성과 일관성을 유지하는 핵심 요소이다.
NULL 값을 가질 수 없으며, 중복을 허용하지 않아 데이터의 신뢰성을 보장한다.
단일 기본 키와 복합 기본 키를 활용하여 다양한 테이블 구조를 설계할 수 있으며, 외래 키(Foreign Key)와 함께 사용하면 테이블 간의 관계를 효과적으로 설정할 수 있다.
전자상거래, 금융, 물류 시스템 등 다양한 데이터 중심 애플리케이션에서 기본 키는 필수적인 데이터베이스 설계 요소로 사용된다.