🔹 기본 키(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)와 함께 사용하면 테이블 간의 관계를 효과적으로 설정할 수 있다.
✅ 전자상거래, 금융, 물류 시스템 등 다양한 데이터 중심 애플리케이션에서 기본 키는 필수적인 데이터베이스 설계 요소로 사용된다.
'IT이야기 > 데이터베이스' 카테고리의 다른 글
제1정규형(1NF): 데이터베이스의 기본적인 정규화 단계 (0) | 2025.02.28 |
---|---|
정규화(Normalization): 데이터베이스의 중복을 최소화하고 무결성을 유지하는 핵심 기법 (0) | 2025.02.28 |
외래 키(Foreign Key): 관계형 데이터베이스에서 데이터 무결성을 유지하는 핵심 키 (0) | 2025.02.28 |
DCL(데이터 제어 언어): 데이터베이스 보안과 접근 권한을 관리하는 SQL 명령어 (0) | 2025.02.28 |
DML(데이터 조작 언어): 데이터베이스에서 데이터를 효율적으로 관리하는 핵심 SQL 명령어 (0) | 2025.02.28 |