[sql] SQL 데이터베이스 테이블 데이터 무결성

관계형 데이터베이스에서 데이터 무결성은 데이터의 정확성과 일관성을 보장하기 위한 중요한 요소입니다. 데이터베이스 테이블의 데이터 무결성은 다양한 제약 조건과 규칙을 통해 유지됩니다. 다음은 SQL 데이터베이스 테이블에서 주로 사용되는 데이터 무결성을 유지하기 위한 방법에 대한 설명입니다.

1. 엔터티 무결성 (Entity Integrity)

엔터티 무결성은 기본 키(primary key)를 통해 보장됩니다. 각 행은 유일한 기본 키 값을 가져야 하며, NULL 값을 허용하지 않습니다. 이것은 기본 키 제약을 사용하여 유지됩니다.

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    employee_name VARCHAR(50) NOT NULL,
    ...
);

2. 참조 무결성 (Referential Integrity)

참조 무결성은 다른 테이블에 있는 외래 키(foreign key)와 관련이 있습니다. 외래 키 값은 참조하는 테이블의 기본 키나 후보 키와 일치해야 하며, 삭제되는 경우에는 같이 삭제되거나 NULL로 설정되어야 합니다. 외래 키 제약을 사용하여 유지됩니다.

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    employee_id INT,
    FOREIGN KEY (employee_id) REFERENCES employees(employee_id)
);

3. 도메인 무결성 (Domain Integrity)

도메인 무결성은 각 열(column)의 값을 정의된 도메인 내에서 유지해야 한다는 것을 의미합니다. 이는 열에 대한 데이터 유형, 크기, 형식 등에 대한 제약을 의미합니다.

CREATE TABLE students (
   student_id INT PRIMARY KEY,
   student_name VARCHAR(50) NOT NULL,
   birth_date DATE CHECK (birth_date >= '2000-01-01')
);

4. 사용자 정의 무결성 (User-defined Integrity)

사용자 정의 무결성은 특정 비즈니스 규칙이나 조건을 충족시키기 위해 사용자가 정의한 제약 조건입니다. 이를 위해 데이터베이스 트리거나 저장 프로시저를 활용할 수 있습니다.

CREATE TRIGGER salary_check
BEFORE UPDATE OF salary ON employees
FOR EACH ROW
BEGIN
   IF new.salary < 1000 THEN
      SIGNAL SQLSTATE '45000'
      SET MESSAGE_TEXT = 'Salary cannot be less than 1000';
   END IF;
END;

SQL 데이터베이스 테이블의 데이터 무결성은 위와 같은 다양한 방법을 통해 유지되며, 데이터의 정확성과 일관성을 보장하는 데 중요한 역할을 합니다.

References: