CS 공부/DB

[DB] 데이터 무결성

양쏘쏘 2024. 7. 11. 13:49
728x90
반응형

데이터 무결성(Data Integrity)은 데이터베이스 내의 데이터가 정확하고 일관되며 신뢰할 수 있는 상태를 유지하는 것을 의미함.

데이터의 신뢰성을 보장하기 위해 중요한 개념으로 데이터 정확성과 일관성을 유지하기 위해 다양한 규칙과 제약조건을 적용함.

데이터 무결성의 종류

  1. 도메인 무결성 (Domain Integrity):
    • 각 컬럼의 값이 미리 정의된 데이터 타입과 값의 범위 내에 있어야 한다는 것을 의미함.
    • 예를 들어, 나이를 저장하는 컬럼은 음수가 될 수 없고, 특정 범위(예: 0~150세) 내의 값만을 허용하도록 설정할 수 있음.
  2. 엔터티 무결성 (Entity Integrity):
    • 각 테이블의 기본키(Primary Key)가 유일하고, NULL이 될 수 없음을 보장함.
    • 이는 각 레코드가 고유하게 식별될 수 있도록 함.
  3. 참조 무결성 (Referential Integrity):
    • 외래키(Foreign Key)가 참조하는 값이 항상 존재함을 보장함.
    • 예를 들어, 주문 테이블의 고객 ID는 항상 고객 테이블에 존재하는 고객 ID를 참조해야 함.
  4. 고유 무결성 (Unique Integrity):
    • 특정 컬럼이나 컬럼 조합에 중복된 값이 존재하지 않도록 함.
    • 이는 UNIQUE 제약 조건을 통해 구현됨.

데이터 무결성 유지 방법

  1. 제약 조건 (Constraints):
    • PRIMARY KEY: 기본키 제약 조건으로, 각 레코드가 고유하게 식별되도록 함.
    • FOREIGN KEY: 외래키 제약 조건으로, 참조 무결성을 보장함.
    • UNIQUE: 고유 제약 조건으로, 중복된 값을 허용하지 않음.
    • CHECK: 특정 조건을 만족하는 값만을 허용하도록 함.
    • NOT NULL: NULL 값을 허용하지 않음.
  2. 트랜잭션 (Transactions):
    • 트랜잭션은 데이터베이스 작업의 논리적 단위로, ACID 특성을 통해 데이터 무결성을 유지함.
    • 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)을 통해 트랜잭션 내의 모든 작업이 성공적으로 완료되거나 모두 롤백되어야 함.
  3. 데이터베이스 설계:
    • 정규화를 통해 데이터 중복을 최소화하고, 이상 현상(Anomalies)을 방지함.
    • 이를 통해 데이터의 일관성과 무결성을 유지함.

예시

  • 도메인 무결성 예시: 
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Age INT CHECK (Age >= 0 AND Age <= 150)
);
  • 엔터티 무결성 예시:
CREATE TABLE Products (
    ProductID INT PRIMARY KEY,
    ProductName VARCHAR(50)
);
  • 참조 무결성 예시:
CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    CustomerID INT,
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
  • 고유 무결성 예시:
CREATE TABLE Users (
    UserID INT PRIMARY KEY,
    Username VARCHAR(50) UNIQUE
);

 

데이터 무결성은 데이터베이스의 신뢰성과 일관성을 유지하는 데 매우 중요함.

무결성이 유지되지 않으면 데이터가 부정확하거나 불완전해져 비즈니스 의사 결정에 큰 영향을 미칠 수 있음.

728x90

'CS 공부 > DB' 카테고리의 다른 글

[DB] 트랜잭션(ACID와 격리수준)  (1) 2024.07.22
[DB] 1~3정규화  (0) 2024.07.11
[DB] 제 2정규화  (0) 2024.07.10
[DB] 제 1 정규화  (0) 2024.05.24