데이터베이스 무결성, 정합성, 일관성
1. 무결성
항상 정확하고 유효한 값을 유지하는 것을 말하며 개체 무결성, 참조무결성, 도메인 무결성이 있습니다.
1.1 개체 무결성(Entity Integrity)
튜플의 유일성을 보장하기 위해 모든 테이블은 null 값이 아닌 고유 속성값을 가지는 기본키(Primary Key)가 있어야 합니다. 그리고 기본키와 비슷한 개념의 유니크키(Unique Key)는 고유 속성값을 가지지만 null값을 허용합니다. 기본키와 유니크키의 차이점은 아래와 같습니다.
기본키 | 유니크키 | 비교 |
---|---|---|
고유 속성값을 가짐. | 고유 속성값을 가짐. | 같음 |
테이블 당 한 개만 생성 가능. | 테이블 당 여러개 생성 가능. | 다름 |
null 값을 허용하지 않음. | null 값을 허용함. 단, null의 중복 삽입 가능여부는 DBMS 마다 다를수 있고 만약 null 중복삽입이 된다면 튜플의 유일성은 보장할 수 없음. |
다름 |
기본키를 참조하는 외래키(Foreign Key)를 생성할 수 있음. | 유니크키를 참조하는 외래키(Foreign Key)를 생성할 수 없음. | 다름 |
회원을 식별하기 위해 회원번호 속성을 기본키로 설정. | 회원이메일, 주민등록번호와 같이 중복되면 안되는 속성에 유니크키를 설정. | 다름 |
1.2 참조 무결성(Referential integrity)
테이블간의 참조의 일관성을 보장하는 것으로 기본키 값과 이를 참조하는 외래키의 값이 일관되어야 합니다. 일반적으로 참조 관계에서 기본키 값을 변경, 삭제하려고 하면 참조 관계의 무결성 오류가 발생합니다. 이러한 오류는 외래키 값을 적절하게 변경하거나 삭제하도록 하는 CASCADE, SET NULL 같은 옵션을 사용하여 회피할 수 있습니다.
1.3 도메인 무결성(Domain Integrity)
도메인이란 하나의 속성에 대한 데이터 타입, 길이, DEFAULT, NULL 허용여부, CHECK 조건을 정의한 것이고, 도메인 무결성이라는 것은 속성이 정의된 도메인을 만족해야 한다는 것입니다.
ALTER TABLE TEST ADD USE_YN varchar(100) DEFAULT 'Y' NOT NULL;
ALTER TABLE TEST.USER_POINT ADD CONSTRAINT USER_POINT_CHECK CHECK (USE_YN in ('Y','N'));
2. 정합성
정합성은 논리적으로 데이터가 일치하는지를 말합니다.
다음은 정합성이 깨진 경우의 예시입니다.
예 1) 거래 테이블 정보와 합계 테이블 정보가 다른 경우


예 2) 반정규화된 테이블에 이상현상(Anomaly)이 발생한 경우

*이상현상(Anomaly)이란? 잘못된 설계(정규화)로 데이터를 갱신, 삽입, 삭제할 때 문제가 발생하는 현상을 말합니다.
-
갱신 이상(Modification Anomaly): 동일한 식별값을 가지는 중복된 튜플 중에서 일부분만 수정되어 정합성이 깨지는 현상.
예) 테이블에 사원명이 변경되었을 때 일부 행만 변경된 경우.
-
삽입 이상(Insertion Anomaly): 튜플을 삽입할 때 불필요한 정보까지 함께 넣어야하는 현상.
예) 사원 테이블에 사내 동호회 코드가 존재할 경우 사내 동호회가 없는 사원들은 null로 넣어야 하는 경우.
-
삭제 이상(Deleteion Anomaly): 튜플을 삭제할 때 원하지 않는 데이터도 함께 삭제되는 현상.
예) 사원과 부서가 한 개의 테이블에 존재할 때 사원을 삭제하면 부서도 함께 삭제되는 경우.
3. 일관성
일관성은 동일한 상태를 유지하는 것을 말합니다.
-
트랜잭션 특성의 일관성은 트랜잭션 수행 전, 후의 무결성 상태가 동일해야한다.
-
Repeatable Read 격리수준 이상에서는 Non-Repeatable Read 현상을 방지 하기 위해 트랜잭션 내의 읽기의 일관성을 유지해야 한다.
댓글남기기