관계형 데이터베이스에서 Primary Key (기본 키)와 Foreign Key (외래 키)는 데이터 무결성을 유지하고 테이블 간의 관계를 정의하는 데 중요한 역할을 한다. 이 두 개념은 데이터 베이스 설계의 핵심 요소이다.
NULL 값을 헝요하지 않는다.예시
CREATE TABLE users (
user_id INT AUTO_INCREMENT,
username VARCHAR(50),
email VARCHAR(100),
PRIMARY KEY (user_id)
);
user_id는 Primary Key로 설정되어 있으며, 각 사용자를 고유하게 식별할 수 있다. AUTO_INCREMENT는 자동으로 증가하는 숫자를 생성하여 Primary key의 중복을 방지한다.CREATE TABLE orders (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id)
);
order_id와 product_id가 결합된 복합 Primary Key는 주문과 상품을 고유하게 식별한다.NULL이 있어서는 안 된다.CASCADE, SET NULL, RESTRICT 등)CASCADE, SET NULL, RESTRICT 등)예시
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
order_date DATE,
FOREIGN KEY (user_id) REFERENCES users(user_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
user_id는 orders 테이블에서 Foreign Key로서 users 테이블의 user_id를 참조하고 있다. ON DELETE CASCADE 옵션은 사용자가 삭제될 경우 해당 사용자의 주문도 자동으로 삭제되도록 설정한다.NULL로 설정한다.| 특징 | Primary Key (기본 키) | Foreign Key (외래 키) |
|---|---|---|
| 역할 | 테이블의 각 행을 고유하게 식별 | 다른 테이블의 Primary Key를 참조 |
| NULL 허용 여부 | 허용하지 않음 | 허용 가능 |
| 고유성 | 반드시 고유해야 함 | 고유하지 않아도 됨 |
| 테이블 내 수 | 한 테이블에 하나만 존재 가능 | 한 테이블에 여러 개 존재 가능 |
| 참조 관계 | 다른 테이블을 참조하지 않음 | 다른 테이블의 Primary Key 또는 Unique Key 참조 |
Foreign Key를 사용하면 참조 무결성을 강제할 수 있다. 참조 무결성은 두 테이블 간의 데이터 일관성을 유지하는 데 중요한 개념으로, 아래와 같은 상황을 방지할 수 있다.
참조 무결성을 통해 데이터베이스는 이러한 비정상적인 상태를 방지하고, 테이블 간의 관계를 안전하게 유지할 수 있다.