무결성이란?

  • Integrity(Integrate)는 흠이 없이 온전함을 의미. 완전해지려고 노력하는 삶을 원할 때 사용.
  • 데이터 무결성이란 데이터 값이 정확한 상태를 의미


정합성이란?

  • 어떤 데이터들의 값이 서로 일치하는 상황
  • "정합성은 데이터가 서로 모순이 없이 일관되게 일치해야 한다는 의미 무결성은 데이터가 정확하고 완전해야 한다는 의미"


무결성의 종류

엔터티 무결성(Entity Integrity)
  • 엔터티에 존재하는 모든 인스턴스는 고유해야 하며 널(Null)값을 가지면 안됨.
  • 한 엔터티에는 동일한 주 식별자가 존재할 수 없으며 주 식별자 속성은 모르는 값인 널(Null)값이 허용 불가
  • 엔터티 무결성은 식별자(Identifier)에 의해서 지켜질 수 있다.


참조 무결성(Referential Integrity)
  • 엔터티의 외래 식별자 속성은 참조되는 엔터티의 주 식별자 값과 일치하거나 널(Null) 값이어야 함.
  • 외래 식별자 속성 값이 상위 엔터티의 인스턴스에 반드시 존재하거나 널(Null)이어야 함.
  • 참조 무결성은 FK(Foreign Key)제약에 의해서 지켜진다.


도메인 무결성(Domain Integrity)
  • 엔터티의 특정 속성 값은 같은 데이터 타입과 길이, 같은 널 여부, 같은 기본 값, 같은 허용 값 등 동일한 범주의 값만이 존재해야 한다
  • 도메인 무결성은 기본 값이나 널 여부, 체크 조건 등으로 지켜질 수 있다.


업무 무결성(Business Integrity)
  • 기업에서 업무를 수행하는 방법이나 데이터를 처리하는 규칙을 의미
  • 업무 무결성은 범위가 넓어 주로 프로그램에서 체크한다.
  • 업무 무결성을 물리적으로 강제하는 대표적인 방법에 트리거(Trigger)가 존재한다.


참조/업무 무결성을 지키기 위한 다양한 규칙

입력 규칙
  • Dependent입력 규칙 : 상위(부모) 엔터티에 해당하는 주 식별자 값이 존재할 때만 하위(자식) 엔터티의 외래 식별자에 입력 가능
  • Automatic 입력 규칙 : 상위(부모) 엔터티에 해당하는 주 식별자 값이 없을 때 상위(부모) 엔터티에 주 식별자를 생성
  • Default 입력 규칙 : 상위(부모) 엔터티에 해당하는 주 식별자 값이 없을 때 하위(자식) 엔터티의 외래 식별자에 기본 값으로 입력.
    외래 식별자에 기본 값이 설정돼 있어야 함.
  • Nullify 입력 규칙 : 상위(부모) 엔터티에 해당하는 주 식별자 값이 없을 때 하위(자식) 엔터티의 외래 식별자에 널(Null) 값으로 입력.
    외래 식별자는 널(Null) 허용으로 설정해야 함.


삭제 규칙
  • Restrict 삭제 규칙 : 상위(부모) 엔터티의 주 식별자를 삭제할 때, 같은 값이 하위(자식) 엔터티의 외래 식별자에 없을 때만 상위(부모) 엔터티의 주 식별자 삭제를 허용.
  • Cascade 삭제 규칙 : 상위(부모) 엔터티의 주 식별자를 삭제할 때, 같은 값이 하위(자식) 엔터티의 외래 식별자에 존재하면 해당 값을 모두 삭제하고 나서 상위(부모) 엔터티의 주 식별자 삭제
  • Default 삭제 규칙 : 상위(부모) 엔터ㅣ의 주 식별자를 삭제할 때, 같은 값이 하위(자식) 엔터티의 외래 식별자에 존재하면 해당 값을 모두 기본 값으로 수정하고 나서 상위(부모) 엔터티의 주 식별자 삭제
  • Nullify 삭제 규칙 : 상위(부모) 엔터이의 주 식별자를 삭제할 때, 같은 값이 하위(자식) 엔터티의 외래 식별자에 존재하면 해당 값을 모두 널(Null) 값으로 수정하고 나서 상위(부모) 엔터티의 주 식별자 삭제


수정 규칙
  • Restrict 수정 규칙 : 상위(부모) 엔터티의 주 식별자를 업데이트 할 때, 같은 값이 하위(자식) 엔터티의 외래 식별자에 없을 때만 상위(부모) 엔터티의 주 식별자를 수정
  • Cascade 수정 규칙 : 상위(부모) 엔터티의 주 식별자를 업데이트 할 때, 같은 값이 하위(자식) 엔터티의 외래 식별자에 존재하면 해당 값을 모두 업데이트한 후에 상위(부모) 엔터티의 주 식별자를 수정


DBMS 제약

제약특징주요무결성
Primary Key
  • 엔터티에서 PK로 지정된 속성에는 동일한 값을 가질 수 없다.
  • PK로 지정된 속성에는 널(Null) 값을 가지면 안 된다.
엔터티 무결성
Unique
  • 엔터티에서 Unique로 지정된 속성에는 동일한 값을 가질 수 없다.
  • Unique로 지정된 속성에는 널(Null) 값을 가질 수 있다.
  • 엔터티에 여러 개의 Unique 속성이 지정될 수 있다
엔터티무결성
Foreign Key
  • 관계 속성의 FK값은 참조 엔터티의 PK 속성에 존재하거나 널(Null)이어야 한다.
  • 참조 엔터티의 PK값이 수정.삭제되면 참조한 모든 값은 수정.삭제돼야 한다.
참조 무결성
Check
  • 속성 값에는 특정한 범위의 값이나 특정 규칙을 따르는 값만이 존재할 수 있다.
도메인 무결성
Default
  • 속성 값에는 특정한 범위의 값이나 특정 규칙을 따르는 값만이 존재할 수 있다.
도메인 무결성
Data Type
  • 속성에 데이터 타입을 지정해 특정 형식을 유지할 수 있다.
도메인 무결성
Null/Not Null
  • 속성 값이 널(Null)일 수 있는지, 값이 반드시 존재해야 하는지를 지정한다.
도메인 무결성
Trigger
  • 속성 값이 입력되거나 수정.삭제 될 때 자동적으로 데이터를 처리할 수 있도록 지정
업무 무결성