무결성제약의 조건
태그 :
- 개념
- -데이터의 중복이나 누락이 없는 정확성과 원인과 결과 의미의 연속성이 보장되는 일관성이 확보된 상태 -데이터를 인가되지 않은 방법으로 변경 하 수 없도록 보호하는 성질 -데이터의 정확성, 유효성, 일관성, 신회성을 위해 무효 갱신으로부터 데이터 보호 -데이터 베이스 관리자나 응용프로그램 개발자가 결정한 대로 미리 정의된 일련의 규칙에 데이터를 적용시킨 것
1. 데이터무결성의 개요
가. 데이터 무결성의 정의
- 데이터의 중복이나 누락이 없는 정확성과 원인과 결과 의미의 연속성이 보장되는 일관성이 확보된 상태
- 데이터를 인가되지 않은 방법으로 변경 하 수 없도록 보호하는 성질
- 데이터의 정확성, 유효성, 일관성, 신회성을 위해 무효 갱신으로부터 데이터 보호
- 데이터 베이스 관리자나 응용프로그램 개발자가 결정한 대로 미리 정의된 일련의 규칙에 데이터를 적용시킨 것
나.데이터무결성의 중요성
- 데이터 가치 : 업무에 있어 사용자에게 의미 있는 정보를 제공하기 위함
- 데이터 신뢰성 : 항상 정확하고 오류가 없는 데이터가 데이터베이스에 저장되는 신뢰성 제공
다. 무결성 보장의 효과
- Data의 정확성 확보로 신뢰할 수 있는 정보 제공
- Data의 일관성 유지로 자료의 효율적 관리
- 사용자 및 Application 개발자의 생산성 향상 기대
- 데이터 무결성 규칙 강제 시행은 약간의 성능 저하를 동반
2. 데이터무결성의 4가지 종류과 데이터 무결성 요소에 대한 설명
가. 데이터 무결성의 4가지 종류
종류 |
의미 |
종류 |
엔티티무결성 |
릴레이션의 기본키 속성은 절대 널 값(Null Value)을 가질 수 없음 PK의 속성이 Null을 허용할 수 없음 |
Primary Key, Unique Index |
키 무결성 (Key Integrity) |
한 릴레이션에 같은 키값을 가진 투플들이 허용 안 됨 |
Primary Key, Unique Index |
참조무결성 |
외래키가 참조하는 다른 개체의 기본키에 해당하는 값이 기본키 값이나 Null 이어야 함 |
Foreign Key |
속성무결성 |
속성의 값은 기본값, Null 여부, 도메인 (데이터 타입, 길이)가 지정된 규칙을 준수하여 존재해야 함 |
CHECK, NULL/NOT NULL, DEFAULT |
사용자무결성 |
사용자의 의미적 요구사항을 준수 해야함 |
Trigger, User Defined Data Type |
나. 무결성 제약조건 요소에 대한 설명
DBMS 요소 |
종류 |
Primary key |
지정된 컬럼들이 유일성이 위배되는 일이 없음을 보장 Primary Key는 Null 값이 될 수 없음 |
Unique |
다중의 보조키 개념을 지원함 Primary Key 와 마찬가지로 지정된 컬럼들의 유일성이 위배되지 않음을 보장 Unique는 Null을 허용 |
Foreign Key |
테이블간의 논리적 관계가 유지됨을 보장함 Foreign Key 값은 반드시 참조하려는 테이블의 Primary Key값으로 나타나야 함 Foreign Key 값은 Null 값을 가질 수 없음 Cascaded Option : Master가 삭제 시 레코드가 함께 삭제 Nullified Option : Master 삭제시 해당 값을 Null로 셋팅 Restricted Option : Forengn Key가 존재하면 Master 레코드를 삭제 할 수 없음 |
Data Type |
데이터의 형을 제한 함으로써 데이터 무결성을 유지함 |
Check |
데이터를 추가할 때마다 SQL 서버가 해당 값이 해당 컬럼들에 지정된 Check 제약을 위배하는지를 검사함으로써 데이터 무결성을 유지 |
Default |
특정 컬럼에 대해 명시적으로 값을 입력하지 않은 경우에 SQL 서버가 자동적으로 지정된 값을 삽입할 수 있도록 함으로써 데이터 무결성을 유지 INSERT 또는 UPDATE 에서 DEFAULT 키워드를 사용할 수 있음 |
Trigger |
테이블의 내용을 변경하려는 특정 사건 (DB 연산)에 대해서 DBMS가 미리 정의된 일련의 행동(DB 연산)들을 수행하는 메커니즘 DBMS 서버에 의해 자동적으로 호출됨 데이터에 대한 변경을 시도 할 때마다 자동적으로 호출됨 (데이터의 변경 전 상태와 변경 후의 상태를 사용) 트랜잭션의 철회 (rollback)와 같은 동작을 수행할 수 있음 저장 프로시져의 특별한 형태로서 SQL의 모든 기능을 이용할 수 있음 참조 무결성을 위해 사용될 수도 있음. 참조 무결성이 위배되는 경우에 원하는 동작을 하도록 트리거를 구성하면 됨 |
3. 실전 프로젝트에서 데이터무결성 설계와 참조무결성 활용
가. 데이터 무결성과 관련된 모델링의 요소
나. 데이터 무결성과 관련된 모델링의 요소
무결성 요소 |
|
개체(엔티티)무결성 |
Book 엔티티 타입에서 Book_no 라는 PK를 통해 데이터의 중복(Duplicate)과 누락(Null)을 방지하는 역할을 수행합니다. 즉, 엔티티 무결성을 PK를 통해 유지 하는 역할 |
참조무결성 |
Member와 Order 엔티티타입의 관계(Relationship)에서 Order는 반드시 member에 등록된 사용자가 신청을 해야 하는 관계 입니다. 따라서 Order에 들어가는 Member_no의 값은 member의 값을 반드시 참조하여 들어가야 데이터무결성을 유지할 수 있습니다 |
속성무결성 |
Order 속성은 데이터타입이 Varchar2를 많이 사용하고 있습니다. 이러한 데이터 타입에는 number 형식이 들어가면 안되는 무결성 규칙 존재. Member_no가 Not Null 로 반드시 데이터가 들어가야 하는 의미 |
사용자무결성 |
Book에 Price라는 속성에 들어가는 단가 정보가 주문된 여러가지 도서 정보를 종합하여 계산된 (Derived Column) OrderItem의 Buy_Amt는 반드시 일관성이 있는 값을 가지고 있어야 합니다. 즉. 주문된 단가 정보의 총합이 Buy_Amt값과 일치해야 하는 데이터 무결성 특징을 가지고 있음. 사용자 무결성제약은 트리거를 통해서 할 수도 있으나, 대부분 어플리케이션 프로그램에서 논리처리를 수행하는 것이 일반적 처리임 |
다. 참조무결성 종류
라. 참조무결성 활용의 예
- 참조무결성이 DBMS에 결려있는 테이블에서 인덱스가 생성되어 있지 않으면 성능적인 문제가 나타날 수 있음
- 인덱스가 설정 안된 상태로 참조무결성 제약이 걸린 테이블의 Delete 명령어가 실행된 경우 다음과 같이 Full scan으로 인한 성능저하 발생할 수 있음
- Foreign Key 제약 시 연쇄(Casecde) 삭제 – Full Scan
- 다음과 같이 발령 테이블의 PK 인덱스를 생성할 때 다음과 같이 확인이 가능하므로 성능이 향상됨. 참조무결성 테이블의 PK 인덱스는 성능과 직결됨