데이터 무결성

반응형
  • 데이터 무결성의 개요
    • 데이터 무결성의 정의
      • 의미적 측면에서 데이터가 정확하고 완전함을 의미
      • 데이터베이스 관리자나 응용 프로그램 개발자가 결정한 대로 미리 정의된 일련의 규칙에 따라 데이터가 관리됨
    • 무결성 제약의 개념
      • 데이터 무결성을 보장하기 위해 데이터에 적용되는 일련의 규칙
      • 데이터베이스에 저장된 데이터의 정확성을 보장하기 위해, 정확하지 않은 데이터가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건
  • 데이터 무결성 제약의 유형
    • 도메인 무결성 제약
      • 주어진 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 한다는 것을 규정한 것
      • 도메인이란, 하나의 속성에서 취할 수 있는 모든 가능한 원자값들의 집합
        예) 성별의 도메인은 {남자, 여자}이고,대학교 학년의 도메인은 {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