FOREIGN KEY (외래 키)
FOREIGN KEY는 한 테이블의 열이 다른 테이블의 기본 키와 관계를 맺는 데 사용되는 키입니다. 외래 키 제약 조건을 사용하면 두 테이블 간의 일관성을 유지하고 데이터 무결성을 강화할 수 있습니다.
FOREIGN KEY의 특징
1. 데이터 일관성 유지
외래 키는 참조하는 테이블의 기본 키와 관계를 맺어, 데이터 일관성을 유지하고 무결성을 강화합니다.
2. 참조 무결성 제약
외래 키 제약은 참조하는 테이블에 있는 값이 참조되는 테이블의 기본 키에 반드시 존재해야 함을 보장합니다.
3. 삭제 및 갱신 제어
외래 키 제약을 통해 참조된 값이 있는 경우, 부모 테이블에서 해당 값이 삭제되거나 갱신되지 못하도록 제어할 수 있습니다.
FOREIGN KEY의 적절한 사용 사례
1. 테이블 간의 관계 정의
두 테이블 간에 관계를 정의하고, 부모 테이블의 변경이 자식 테이블에 영향을 미치도록 할 때 사용됩니다.
2. 데이터 일관성 유지
참조 무결성을 유지하고, 데이터의 무결성을 강화하기 위해 사용됩니다.
FOREIGN KEY 예제
-- 부모 테이블 생성 (users 테이블)
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL
);
-- 자식 테이블 생성 (orders 테이블, user_id가 외래 키)
CREATE TABLE orders (
order_id INT PRIMARY KEY,
order_date DATE NOT NULL,
total_amount DECIMAL(10, 2) NOT NULL,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
-- 데이터 삽입 (참조되는 값이 있는 경우에만 데이터 삽입 가능)
INSERT INTO users (user_id, username, email)
VALUES (1, 'john doe', 'john@example.com');
INSERT INTO orders (order_id, order_date, total_amount, user_id)
VALUES (101, '2023-01-01', 50.00, 1);
-- 참조된 값이 없는 경우 데이터 삽입 시도 (오류 발생)
INSERT INTO orders (order_id, order_date, total_amount, user_id)
VALUES (102, '2023-01-02', 30.00, 2);
위 예제에서 `orders` 테이블의 `user_id` 열은 `users` 테이블의 `user_id` 열을 참조하고 있습니다. 이로써 두 테이블 간에 관계가 형성되었습니다. 부모 테이블에서 값을 삭제하거나 갱신하려고 할 때 참조된 값이 있는 경우, 이러한 변경이 제한됩니다.
'데이터 > MySQL' 카테고리의 다른 글
[MySQL] CREATE TABLE 문 (0) | 2023.12.08 |
---|---|
[MySQL] PRIMARY KEY (1) | 2023.12.06 |
[MySQL] AUTO INCREMENT (1) | 2023.12.06 |
[MySQL] CHECK 제약조건 (0) | 2023.12.06 |
[MySQL] NOT NULL 제약조건 (1) | 2023.12.06 |