-
데이터 무결성의 개요
-
데이터 무결성의 정의
- 의미적 측면에서 데이터가 정확하고 완전함을 의미
- 데이터베이스 관리자나 응용 프로그램 개발자가 결정한 대로 미리 정의된 일련의 규칙에 따라 데이터가 관리됨
-
무결성 제약의 개념
- 데이터 무결성을 보장하기 위해 데이터에 적용되는 일련의 규칙
- 데이터베이스에 저장된 데이터의 정확성을 보장하기 위해, 정확하지 않은 데이터가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건
-
데이터 무결성 제약의 유형
종류 |
내용 |
도메인(Domain) 무결성 제약 |
릴레이션의 각 속성값들은 그 속성이 정의된 도메인에 속한 값이어야 함 예) 직원 릴레이션에서 성별 속성의 값들은 도메인 {남자,여자}에 속한 값이어야 함 |
키(Key) 무결성 제약 |
한 릴레이션에 같은 키 값을 갖는 튜플들은 허용되지 않음 예) 직원 릴레이션에서 주민번호가 기본키라면 모든 직원은 유일한 주민번호를 가져야 함 |
개체(Entity) 무결성 제약 |
기본키에는 NULL 값이 허용되지 않음 예) 직원 릴레이션에서 어떤 직원도 기본키인 주민번호로 NULL을 가질 수 없음 |
참조(Referential) 무결성 제약 |
외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 함 예) 직원 릴레이션의 부서 속성이 부서 릴레이션의 부서번호 속성을 참조한다면, 직원 릴레이션의 부서 속성값은 부서 릴레이션의 부서번호 속성값 중 하나이거나 NULL이어야 함 |
의미(Semantic) 무결성 제약 |
사용자의 의미적 요구 사항을 준수해야 함 예) 직원의 월급은 그의 매니저의 월급보다 많아서는 안 됨 |
-
데이터 무결성의 구현 방법
-
무결성 제약 조건 활용
-
트리거(Trigger)의 활용
- 트리거는 데이터베이스가 특정 상태에 도달하면 자동으로 작동하도록 설정된 프로그램 모듈
- 트리거를 사용하여 업무 규칙 강제 시행
- 트리거는 사용자가 직접 호출할 수 없으며, '트리거링 작업' 실행 시 자동으로 활성화됨(즉, DBMS에 의해 자동적으로 호출)
-
트리거의 특징
- 레코드의 삽입, 삭제,갱신 명령의 이전이나 이후에 작동할 수 잇도록 설정될 수 있음
- 데이터에 대한 변경을 시도할 때마다 자동적으로 호출되고, 데이터의 변경 전 상태와 변경 후의 상태를 사용
- 데이터베이스의 변경이 항상 업무 규칙에 부합하여 이루어지도록 함
- 설정된 조건이 충족될 경우 트리거는 반드시 실행되며, 이를 다른 방법으로 중지시키거나 실행되지 않도록 할 수 없음
- 뷰가 아님 테이블에서만 정의되고, 뷰의 기본테이블에 대한 트리거는 뷰에 대해 삽입, 갱신, 삭제 명령문이 발생되면 실행됨
- 트랜잭션의 복구와 같은 동작을 수행할 수 있음
-
저장 프로시저 활용
- 저장 프로시저를 사용하여 데이터에 대한 접근을 제어
- 저장 프로시저는 SQL과 SPL(Stored Procedure Language) 언어를 조합하여 만든 프로시저로, SPL 언어는 변수 지정 명령과 'IF-THEN-ELSE', 'WHILE', 'FOR' 문과 같은 기본적인 프로그램 제어 구문을 지원
- 저장 프로시저는 데이터베이스 엔진의 각 인스턴스에 컴파일된 형태로 저장
- 보안, 테이블 로그 작업, 데이터 처리, 데이터베이스 성능 향상 등의 목적을 위해 사용
-
데이터베이스 응용 프로그램 활용
- 데이터베이스 응용 프로그램 코드에 업무 규칙을 강제로 시행
- DBMS의 무결성 유지 기능이 미비할 경우 성능 향상 등을 목적으로 데이터베이스 및 시스템 관리의 효율화를 위해 적용
-
DBMS 기능 활용
- 트랜잭션의 ACID 보장을 위한 동시성 제어 기능
- 데이터베이스의 회복/복구 기능
- 데이터베이스의 보안 기능