반응형
-
데이터 무결성의 개요
-
데이터 무결성의 정의
- 의미적 측면에서 데이터가 정확하고 완전함을 의미
- 데이터베이스 관리자나 응용 프로그램 개발자가 결정한 대로 미리 정의된 일련의 규칙에 따라 데이터가 관리됨
-
무결성 제약의 개념
- 데이터 무결성을 보장하기 위해 데이터에 적용되는 일련의 규칙
- 데이터베이스에 저장된 데이터의 정확성을 보장하기 위해, 정확하지 않은 데이터가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건
-
-
데이터 무결성 제약의 유형
-
도메인 무결성 제약
- 주어진 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 한다는 것을 규정한 것
-
도메인이란, 하나의 속성에서 취할 수 있는 모든 가능한 원자값들의 집합예) 성별의 도메인은 {남자, 여자}이고,대학교 학년의 도메인은 {1,2,3,4}임
-
릴레이션 무결성 제약
- 릴레이션을 조작하는 과정에서 의미적 관계를 명세한 것
- 삽입, 삭제, 갱신과 같은 연산을 수행하기 전과 후에 대한 상태를 제약
-
상태(state) 제약과 과도(Transition) 제약
- 상태 제약 : 데이터베이스가 일관성 있는 상태가 되기 위한 조건을 명세한 것으로, 특정 시점에 만족되어야 하는 정적 제약의 성질을 가짐
- 무결성 제약의 종류
-
종류 | 내용 |
도메인(Domain) 무결성 제약 |
릴레이션의 각 속성값들은 그 속성이 정의된 도메인에 속한 값이어야 함 예) 직원 릴레이션에서 성별 속성의 값들은 도메인 {남자,여자}에 속한 값이어야 함 |
키(Key) 무결성 제약 |
한 릴레이션에 같은 키 값을 갖는 튜플들은 허용되지 않음 예) 직원 릴레이션에서 주민번호가 기본키라면 모든 직원은 유일한 주민번호를 가져야 함 |
개체(Entity) 무결성 제약 |
기본키에는 NULL 값이 허용되지 않음 예) 직원 릴레이션에서 어떤 직원도 기본키인 주민번호로 NULL을 가질 수 없음 |
참조(Referential) 무결성 제약 |
외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 함 예) 직원 릴레이션의 부서 속성이 부서 릴레이션의 부서번호 속성을 참조한다면, 직원 릴레이션의 부서 속성값은 부서 릴레이션의 부서번호 속성값 중 하나이거나 NULL이어야 함 |
의미(Semantic) 무결성 제약 |
사용자의 의미적 요구 사항을 준수해야 함 예) 직원의 월급은 그의 매니저의 월급보다 많아서는 안 됨 |
-
과도 제약 : 데이터베이스의 한 상태에서 다른 상태로 변환되는 과정에서 적용되는 규칙으로, 데이터베이스 변경 전후 모두만족 되어야 하는 동적 제약의 성질을 가짐예) 직원의 월급 조정은 현재보다 금액이 작아서는 안됨
-
튜플 제약과 집합 제약
-
튜플 제약 : 처리되고 있는 튜플에만 적용되는 규칙예) AFTER UPDATING EMP.Salary:
- CHECK(EMP.Salary ≤ 600);
-
집합 제약 : 튜플 집합 전체에 관련되어 적용되는 규칙예) AFTER UPDATING EMP.Salary:
- CHECK(MIN(EMP.Salary) ≤ 5000);
-
-
즉시(Immediate) 제약과 지연(Deferred)제약
-
즉시 제약 : 연산이 수행되는 즉시 적용되는 규칙예) AFTER UPDATING EMP.Sex:
- CHECK(Sex = 'M' OR Sex = 'F' );
-
지연 제약 : 트랜잭션이 완전히 수행된 후 적용되는 규칙예) WHEN COMMIT;
- CHECK(SUM(ACCOUNT.Balance)) = SUMMARY.Total);
-
-
데이터 무결성의 구현 방법
-
무결성 제약 조건 활용
-
DBA가 DCL을 이용하여 무결성 제약 조건을 명시적으로 기술
- 데이터 사전이나 시스템 카탈로그에 저장되어 실행
- 도메인을 생성할 때 제약 조건 명세
- 테이블을 정의할 때 제약 조건 명세
-
-
트리거(Trigger)의 활용
- 트리거는 데이터베이스가 특정 상태에 도달하면 자동으로 작동하도록 설정된 프로그램 모듈
- 트리거를 사용하여 업무 규칙 강제 시행
- 트리거는 사용자가 직접 호출할 수 없으며, '트리거링 작업' 실행 시 자동으로 활성화됨(즉, DBMS에 의해 자동적으로 호출)
-
트리거의 특징
- 레코드의 삽입, 삭제,갱신 명령의 이전이나 이후에 작동할 수 잇도록 설정될 수 있음
- 데이터에 대한 변경을 시도할 때마다 자동적으로 호출되고, 데이터의 변경 전 상태와 변경 후의 상태를 사용
- 데이터베이스의 변경이 항상 업무 규칙에 부합하여 이루어지도록 함
- 설정된 조건이 충족될 경우 트리거는 반드시 실행되며, 이를 다른 방법으로 중지시키거나 실행되지 않도록 할 수 없음
- 뷰가 아님 테이블에서만 정의되고, 뷰의 기본테이블에 대한 트리거는 뷰에 대해 삽입, 갱신, 삭제 명령문이 발생되면 실행됨
- 트랜잭션의 복구와 같은 동작을 수행할 수 있음
-
저장 프로시저 활용
- 저장 프로시저를 사용하여 데이터에 대한 접근을 제어
- 저장 프로시저는 SQL과 SPL(Stored Procedure Language) 언어를 조합하여 만든 프로시저로, SPL 언어는 변수 지정 명령과 'IF-THEN-ELSE', 'WHILE', 'FOR' 문과 같은 기본적인 프로그램 제어 구문을 지원
- 저장 프로시저는 데이터베이스 엔진의 각 인스턴스에 컴파일된 형태로 저장
- 보안, 테이블 로그 작업, 데이터 처리, 데이터베이스 성능 향상 등의 목적을 위해 사용
-
데이터베이스 응용 프로그램 활용
- 데이터베이스 응용 프로그램 코드에 업무 규칙을 강제로 시행
- DBMS의 무결성 유지 기능이 미비할 경우 성능 향상 등을 목적으로 데이터베이스 및 시스템 관리의 효율화를 위해 적용
-
DBMS 기능 활용
- 트랜잭션의 ACID 보장을 위한 동시성 제어 기능
- 데이터베이스의 회복/복구 기능
- 데이터베이스의 보안 기능
-
반응형
'밥벌이 > 데이터베이스' 카테고리의 다른 글
트랜잭션 관리 (0) | 2011.03.01 |
---|---|
동시성(병행) 제어 (0) | 2011.03.01 |
데이터베이스 보안 (0) | 2011.02.20 |
질의(Query) 처리의 개요 (0) | 2011.01.31 |
셀렉션(Selection) 연산 (0) | 2011.01.31 |