본문 바로가기
Data Migration 개요

데이터 무결성 원칙 : 키 무결성(Integrity of Keys)

by save-time 2024. 8. 15.

키 무결성(Integrity of Keys)은 데이터베이스에서 각 데이터 레코드가 고유하게 식별되도록 보장하는 중요한 데이터 무결성 원칙입니다. 데이터 마이그레이션 과정에서 키 무결성을 보장하는 것은 데이터의 정확성, 신뢰성, 그리고 데이터베이스 간의 관계를 올바르게 유지하는 데 필수적입니다. 다음은 키 무결성의 주요 개념, 종류, 보장 방법에 대한 설명입니다.


키 무결성의 주요 개념


기본 키(Primary Key):

정의: 테이블 내에서 각 레코드를 고유하게 식별하는 필드 또는 필드 조합입니다.
특징: 기본 키는 중복된 값을 허용하지 않으며 NULL 값을 허용하지 않습니다.
예: 고객 테이블의 고객 ID, 주문 테이블의 주문 ID 등이 기본 키가 될 수 있습니다.

외래 키(Foreign Key):

정의: 다른 테이블의 기본 키를 참조하여 테이블 간의 관계를 정의하는 필드입니다.
특징: 외래 키는 참조된 기본 키와 일치해야 하며, 참조된 기본 키가 변경되거나 삭제될 때 외래 키의 무결성도 유지해야 합니다.
예: 주문 테이블의 고객 ID가 고객 테이블의 고객 ID를 참조하는 경우입니다.

대체 키(Candidate Key):

정의: 기본 키로 선택될 수 있는 모든 가능한 키입니다.
특징: 테이블에서 각 레코드를 고유하게 식별할 수 있는 여러 키 중 하나가 기본 키로 선택됩니다.
예: 고객 테이블에서 고객 ID와 이메일 주소 모두 대체 키가 될 수 있습니다.

복합 키(Composite Key):

정의: 두 개 이상의 필드를 결합하여 테이블 내에서 레코드를 고유하게 식별하는 키입니다.
특징: 단일 필드로는 유일성을 보장할 수 없지만, 여러 필드를 조합하여 유일성을 보장합니다.
예: 주문 항목 테이블에서 주문 ID와 제품 ID를 결합하여 복합 키를 구성할 수 있습니다.


키 무결성을 보장하는 방법


1. 기본 키 설정

정의: 기본 키를 정의하여 각 레코드가 고유하게 식별되도록 합니다. 기본 키는 NULL 값을 허용하지 않으며, 테이블 내에서 유일해야 합니다.

CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    customer_name VARCHAR(100)
);


기본 키 자동 생성: 기본 키를 자동으로 생성하도록 설정하여 중복을 방지합니다. 예를 들어, 자동 증가(auto-increment) 속성을 설정합니다.

CREATE TABLE orders (
    order_id INT AUTO_INCREMENT PRIMARY KEY,
    order_date DATE
);


2. 외래 키 설정

정의: 외래 키를 정의하여 테이블 간의 관계를 설정하고 무결성을 유지합니다. 외래 키는 참조된 테이블의 기본 키와 일치해야 합니다.

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);



무결성 유지: 외래 키 제약 조건을 설정하여 참조된 기본 키의 변경 또는 삭제가 외래 키에 영향을 미치지 않도록 합니다. 예를 들어, ON DELETE CASCADE를 설정하여 참조된 레코드가 삭제될 때 관련 레코드도 삭제하도록 할 수 있습니다.

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE
);

 


3. 대체 키 및 복합 키 설정

대체 키: 대체 키를 정의하여 기본 키 외에 다른 키로도 유일성을 유지할 수 있습니다.

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    email VARCHAR(100) UNIQUE
);

 


복합 키: 복합 키를 정의하여 여러 필드를 조합하여 유일성을 보장합니다.

CREATE TABLE order_items (
    order_id INT,
    product_id INT,
    PRIMARY KEY (order_id, product_id)
);

 


4. 데이터 검증 및 모니터링

데이터 검증: 데이터 마이그레이션 후 기본 키와 외래 키 무결성을 검증하여 모든 레코드가 정확하게 매핑되었는지 확인합니다.

-- 기본 키 무결성 검토

SELECT *
FROM customers
WHERE customer_id IS NULL;

-- 외래 키 무결성 검토

SELECT *
FROM orders o
LEFT JOIN customers c ON o.customer_id = c.customer_id
WHERE c.customer_id IS NULL;


모니터링: 데이터베이스에서 키 무결성을 지속적으로 모니터링하여 무결성 제약 조건이 위배되지 않도록 합니다. 데이터 변경 시 무결성 검토를 자동화하는 도구를 활용할 수 있습니다.


데이터 마이그레이션에서의 키 무결성 보장 예시

기본 키 중복 검출

-- 기본 키 중복 검출

SELECT customer_id, COUNT(*)
FROM customers
GROUP BY customer_id
HAVING COUNT(*) > 1;


외래 키 무결성 검토

-- 외래 키 무결성 검토

SELECT *
FROM orders o
LEFT JOIN customers c ON o.customer_id = c.customer_id
WHERE c.customer_id IS NULL;


복합 키 검증

-- 복합 키 중복 검출

SELECT order_id, product_id, COUNT(*)
FROM order_items
GROUP BY order_id, product_id
HAVING COUNT(*) > 1;
요약



요약

키 무결성은 데이터베이스에서 데이터를 정확하고 일관되게 유지하는 데 필수적입니다. 기본 키, 외래 키, 대체 키, 복합 키를 적절히 정의하고 설정하여 데이터의 고유성과 관계를 보장합니다. 데이터 마이그레이션 과정에서 키 무결성을 검토하고 검증함으로써 데이터의 신뢰성과 품질을 높일 수 있습니다.