본문 바로가기

데이터/MySQL

[MySQL] FOREIGN KEY

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