무결성 제약조건은 데이터무결성과 제약조건의 합성어이다. 그러면 이 뜻을 이해하기 위해서는 저 두 단어의 뜻을 이해할 필요가 있다는 것이다. 

 

앞서 봤듯이 제약 조건이란 데이터 구조 안에 데이터를 저장할 때의 구조적 제약 사항과 연산을 적용할 때의 행위적 제약 사항을 표현한 것을 말한다

 

그리고 데이터무결성이란 데이터의 정확성과 일관성을 유지하고 보수하는 것을 말한다.

 

따라서 무결성 제약조건은 데이터의 정확성과 일관성을 유지하고 보수하기 위해서 데이터를 저장할 때의 제약 사항을 거는 것을 말한다.

 

이 무결성 제약조건은 3가지 혹은 4가지 유형과(데이터과학자마다 지지하는 유형 갯수가 다르지만 여기서는 일단 4가지라고 한다)  그 유형에 대응하는 키(Key)라는 개념이 있는데 먼저 키에 대해서 살펴보면 다음과 같다

 

키 : 각 튜플을 유일하게 식별할 수 있는 하나 이상의 속성 집합

 

릴레이션의 특징 중 튜플의 유일성이라는 특징 때문에 모든 릴레이션은 키를 가진다고 볼 수 있다.

 

이러한 키의 종류에는 크게 5가지가 있다.

 

예를 들기 위해서 다음과 같은 릴레이션을 예로 들어 키를 설명한다

 

ID

소유자 이름

거주지

     
     

 

1. 후보키(CANDIDATE KEY)

-유일성과 최소성을 만족하는 키이다.

(최소성은 꼭 필요한 최소한의 속성들로만 구성된것을 의미한다.)

ex) ID  혹은  (소유자 이름+거주지)  

유일성은 속성의 조합으로도 가질 수 있는 성질이지만 이렇게 조합해버리면 최소성은 만족을 못할 수도 있다. 

여기서 최소성에 대한 부연설명을 하면 (이름+거주지)에서 거주지가 빠져도 이름만으로 튜플끼리 구별할 수 있으면 이름+거주지는 최소성을 만족하지 못하는 다시 말하자면 후보키가 아닌 것이다.  

 

2. 고유키(PRIMARY KEY) = 기본 키

-후보키 중에서 기본적으로 사용하기 위해 선택한 키이다.

ex) ID

 

2. 슈퍼키(SUPER KEY)

-유일성을 만족하는 키이다.

ex) ID ,(ID+ID 소유자 이름),(ID 소유자 이름, 거주지) 등 

 

4. 대체 키(SURROGATE KEY) 

-기본키로 선택되지 못한 후보키

ex) 위에서 ID가 기본키로 설정되었으면 (ID 소유자 이름, 거주지)

 

5. 외래키(FOREIGN KEY) 포링 키

-다른 릴레이션의 키본키를 참조하는 키이다.

참조하는 릴레이션 : 외래키를 가진 릴레이션

참조되는 릴레이션 : 외래키가 참조하는 기본키를 가진 릴레이션

 

이제 키에 대해서 알았으니 무결정 제약조건의 4가지 종류를 쉽게 이해 할 수 있다.

 

개체 무결성(Entity integrity) :

모든 테이블이 기본 키(primary key)를 가져야 됨(따라서 기본 키가 된 열은 기본키 성질인 유일성과 최소성을 만족한다)

기본 키로 선택된 열은 빈 값은 허용치 않음

적용되는 시점은 릴레이션에 기본키를 선언하는 즉시 적용됨

 

참조 무결성(Referential integrity) : 

모든 외래 키 값은 참조하는 릴레이션의 기본키 속성값과 일치하는 값이거나 NULL값 둘 중 한 상태에만 속함

적용되는 시점은 릴레이션에 외래키를 선언하는 즉시 적용됨

 

예를 들어 과자 신제품 과자 가격을 정하기 위해서 이전 시중에 나온 과자 가격을 참조한다고 할 때를 생각해보자

밑의 탱크보이같은 경우는 이전 시중에 같은 과자가 나오지 안았으므로 참조할 값이 없으므로 NULL값이 될 수 있다.

 <!--[endif]-->

<과자 가격 릴레이션>

이름<기본키>

가격

참조하는 과자<외래키>

탱크보이

1000

 

몽쉘

1500

초코파이

밀키스

1500

암바사

 

'과자 가격'의 속성 <참조하는 과자>는 '과자 원가'의 속성 <이름>과 외래키로 연결되어 있다.

 

<과자 원가 릴레이션>

이름<기본키>

재료

원가

초코파이

.....

700

암바사

.....

700

 

 

범위 무결성(Domain integrity) :

정의된 범위에서 관계형 데이터베이스의 모든 열이 선언되도록 규정함

그 속성이 지정한 값 범위 내에 있는지에 대해서 규정하는 것이다.

 

유일성 제약 :

튜플의 데이터가 속해 있는 속성에서 유일하도록 규정함

 

 

정리하면 다음과 같다

 

제약조건

SQL 명령어 키워드

개체 무결성

PRIMARY KEY

참조 무결성

FOREINGN KEY

범위 무결성

CHECK, DEFAULT , NULL/NOT NULL, 열 유형

유일성 제약

UNIQUE

 

+ Recent posts