데이터 무결성
- 데이터의 정확성, 일관성, 유효성, 신뢰성을 위해 무효 갱신으로부터 데이터를 보호하기 위해 무결성 설계가 필요하다.
데이터 무결성 종류
종류 | 설명 |
실체 무결성 | 실체는 각 인스턴스를 유일하게 식별할 수 있는 속성이나 속성 그룹을 가져야 한다. |
영역 무결성 | 컬럼 데이터 타입, 길이, 유효 값이 일관되게 유지되어야 한다. |
참조 무결성 | 데이터 모델에서 정의된 실체 간의 관계 조건을 유지하는 것이다. |
사용자 정의 무결성 | 다양하게 정의될 수 있는 비즈니스 규칙이 데이터적으로 일관성을 유지하는 것이다. |
데이터 무결성 강화 방법
- 데이터 무결성은 데이터 품질에 직접적인 영향을 준다. 프로그램이 완성되고 데이터가 축적된 후 데이터 클린징을 하거나 무결성 방법을 강구할 때는 많은 비용이 발생된다.
- 데이터 품질을 확보하기 위해서는 데이터베이스 구축 과정에서 적정한 무결성 방안을 확보해야 한다.
<무결성 강화 방법>
분류 | 설명 |
애플리케이션 | 데이터를 조작하는 프로그램 내에 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 추가함 |
데이터베이스 트리거 | 트리거 이벤트 시 저장 SQL을 실행하여 무결성 조건을 실행함 |
제약 조건 | 데이터베이스 제약 조건 기능을 선언하여 무결성을 유지함 |
<무결성 강화 방법에 따른 장단점>
구분 | 장점 | 단점 |
애플리케이션 | - 사용자 정의 같은 복잡한 무결성 조건을 구현함 | - 소스코드에 분산되어 관리의 어려움이 있음 - 개별적으로 시행되므로 적정성 검토에 어려움 |
데이터베이스 트리거 | - 통합 관리가 가능함 - 복잡한 요건 구현 기능 |
- 운영 중 변경이 어려움 - 사용상 주의가 필요함 |
제약 조건 | - 통합 관리가 가능함 - 간단한 선언으로 구현 가능 - 변경이 용이하고 유효/무효 상태 변경이 가능함 - 원천적으로 잘못된 데이터 발생을 막을 수 있음 |
- 복잡한 제약 조건 구현이 불가능 - 예외적인 처리가 불가능 |
실체 무결성
- 실체에서 개체의 유일성을 보장하기 위한 무결성으로 반드시 보장되어야 하므로 프로그램이나 트리거 등을 이용하는 것보다 데이터베이스에서 제공하는 PK 제약 조건과 Unique 제약 조건 등을 이용하여 보장하는 것이 좋다.
- PK 제약 조건
- 데이터베이스에서 가장 중요한 무결성 조건으로 식별자 값은 NOT NULL이고 유일해야 한다.
- UNIQUE 제약
- 실체 무결성은 식별자 외에 실체 내에 후보키 대상인 UNIQUE 컬럼도 대상이다.
영역 무결성
- 컬럼에 적용되어 단일 행의 컬럼 값만으로 만족 여부를 판단할 수 있다.
- 프로그램 소스와 제약 조건을 상호 보완적으로 사용을 하는 것이 효과적이다.
- 프로그램 기능에 의해 유효 값에 대한 검증을 선행하고 추가적으로 제약 조건을 선언하여 무결성을 강화하면 효과적이다.
- 데이터 타입 & 길이
- 조회 조건이나 비교 연산에 많이 사용되는 컬럼은 문자 데이터 타입으로 정의하고 프로그램에 의해서 유효일자인지를 확인하는 것이 효과적이다.
- 유효값
- 컬럼 유효 값에 대한 제약 조건으로 CHECK를 이용한다.
- CHECK 무결성 제한은 참이 되어야 하는 조건을 명시적으로 정의한다.
- NOT NULL
- 숫자 타입의 컬럼은 NOT NULL 제약 조건을 부여하고 기본값으로 '0'을 정의한다.
참조 무결성
- 두 실체 사이의 관계 규칙을 정의하기 위한 제약 조건으로 데이터가 입력, 수정, 삭제될 때 두 실체의 튜플들 사이의 정합성과 일관성을 유지하는 데 사용된다.
- 참조 무결성 제약 조건은 어떤 실체의 튜플이 다른 실체에 있는 튜플을 참조하려면 참조되는 튜플이 반드시 그 실체 내에 존재하여야 한다는 것이다.
- 입력 참조 무결성
- 복잡한 처리 규칙을 위해 애플리케이션에서 구현한다.
- 반드시 참조 무결성을 유지해야 하는 경우에는 추가적으로 FK 제약을 사용한다.
<입력 참조 무결성>
구분 | 설명 |
DEPENDENT | 참조되는 테이블에 PK 값이 존재할 때만 입력을 허용 |
AUTOMATIC | 참조되는 테이블에 PK 값이 없는 경우는 PK를 생성 후 입력 |
DEFALUT | 참조되는 테이블에 PK 값이 없는 경우 지정된 기본값으로 입력 |
CUSTOMIZED | 특정한 조건이 만족할 때만 입력을 허용 |
NULL | 참조되는 테이블에 PK 값이 없는 경우 외부키를 NULL 값으로 처리 |
NO EFFECT | 조건 없이 입력을 허용 |
- 수정/삭제 참조 무결성
- 부모 식별자가 변경되었을 경우이다.
- 식별자 값 변경이 없이 데이터가 운영되는 것이 바람직하다.
- 변경이 불가피한 경우라도 삭제되고 다시 입력되는 규칙을 적용하여 애플리케이션에서 구현한다.
<수정/삭제 참조 무결성>
구분 | 설명 |
RESTRICT | 참조하는 테이블에 PK 값이 없는 경우 삭제/수정 허용 |
CASCADE | 참조되는 테이블과 참조하는 테이블의 외부키를 연쇄적 삭제/수정 |
DEFAULT | 참조되는 테이블의 수정을 항상 허용하고 참조하는 테이블의 외부키를 지정된 기본값으로 변경 |
CUSTOMIZED | 특정한 조건이 만족할 때만 수정/삭제 허용 |
NULL | 참조되는 테이블의 수정을 항상 허용하고 참조하는 테이블의 외부키를 NULL 값으로 수정 |
NO EFFECT | 조건 없이 삭제/수정 허용 |
- 디폴트 규칙 정의의 필요성
- 참조 무결성에서 NULL 값을 정의하는 것은 바람직하지 않다.
- NULL은 알 수 없는 상태이거나 아직 정의되지 않은 상태를 의미한다.
- NULL 조건은 DEFAULT 조건으로 설계하는 것이 바람직하다.
- 모델상에서 슈퍼타입-서브타입 관계
- 삽입 시에는 DEPENDENT, AUTOMATIC 조건을 적용하고, 삭제나 변경 시에는 CASCADE 조건을 적용하는 것이 바람직하다.
- 참조 무결성은 데이터베이스에서 제공하는 FK를 정의하는 것만으로는 구현이 불가능하다. 따라서 프로그램, 데이터베이스 트리거, FK 제약을 사용해야 한다.
- 추가적으로 대량의 트랜잭션이 발생하는 데이터베이스 환경에서는 FK 제약 조건 생성 범위를 조정할 필요가 있다.
'DAP' 카테고리의 다른 글
[DAP 전문가 가이드] 5.1.1 저장 공간 설계 (0) | 2025.04.30 |
---|---|
[DAP 전문가 가이드] 4.4.5 물리 데이터 모델 품질 검토 (0) | 2025.04.30 |
[DAP 전문가 가이드] 4.4.4 반정규화 (0) | 2025.04.30 |
[DAP 전문가 가이드] 4.4.3 논리-물리 모델 변환 (0) | 2025.04.30 |
[DAP 전문가 가이드] 4.4.2 물리 요소 조사 및 분석 (0) | 2025.04.30 |