본문 바로가기
computer science/데이터베이스

[데이터베이스] 무결성 제약조건

by 박연호의 개발 블로그 2020. 2. 27.

이번시간에는 데이터베이스 무결성에 대해 공부해 보겠습니다.

 

관계 데이터 모델에서 정의하고 있는 기본 제약 사항은 키와 관련한 무결성 제약조건(Integrity constraint)입니다. 무결성은 데이터에 결함이 없는 상태, 즉 데이터를 정확하고 유효하게 유지하는 것입니다.

 

무결성 제약조건의 주요 목적은 데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지하는 것입니다. 그래서 이를 위해 필요한 세부 규칙도 정의하고 있습니다. 데이트베이스가 삽입, 삭제, 수정, 연산으로 상태가 변하더라도 무결성 제약조건은 반드시 지켜져야 합니다.


무결성 제약조건의 종류와 개념

1. 개체 무결성 : 기본키는 null 값이 될 수 없음

개체 무결성 제약조건은 기본키를 구성하는 모든 속성은 널 값을 가지면 안된다는 규칙입니다. 관계 데이터 모델에서는 릴레이션에 포함되는 튜플들을 유일하게 구별해주고 각 튜플에 쉽게 접근할 수 있도록 릴레이션마다 기본키를 정의하는 기본키를 구성하는 속성 전체나 일부가 널 값이 되면 튜플의 유일성을 판단할 수 없기 때문에 본래의 목적을 상실하게 됩니다. 

 

2. 참조 무결성 : 외래키는 참조할 수 없는 값을 가질 수 없음

참조 무결성 제약조건은 외래키는 참조할 수 없는 값을 가질 수 없다는 규칙입니다. 외래키는 다른 릴레이션의 기본키를 참조하는 속성이고 릴레이션 간의 관계를 표현하는 역할을 합니다. 그런데 외래키가 자신이 참조하는 릴레이션의 기본키와 상관없는 값을 가지게 되면 두 릴레이션을 연관시킬 수 없으므로 외래키 본래의 의미가 없어집니다.

 

3. 도메인 무결성 : 특정 속성값은 그 속성이 정의된 도메인에 속한 값이어야 함

도메인 무결성은 데이터 베이스에 삽입되는 데이터들에 제약조건을 의미합니다. 각각의 속성은 숫자, 문자 등의 도메인을 가지면 해당 도메인에 맞는 데이터를 삽입해야 합니다. 그 뿐만 아니라 삽입되는 데이터를 제한하거나, 삽입되지 않을 경우 기본값, null 제한 등의 기능을 제공합니다. 예를 들어 "성"에 대한 속성의 경우 입력되는 데이터를 "남", "여"로 제한하여 그 외의 데이터가 삽입되는 경우를 제한할 수 있습니다. 

 

4. 키 무결성 : 릴레이션에는 최소한 하나의 키가 존재해야 함

 

5. null 무결성 : 특정 속성은 null 값을 가질 수 없음

null 무결성은 특정 속성값에는 null 값을 가질 수 없다는 규칙입니다. 기본적으로 속성값으로 null 값을 가질 수 있는데 만약 "유저 아이디"처럼 중요한 정보에는 스키마를 정의할 때 해당 속성을 null 데이터가 올 수 없음을 미리 정의할 수 있습니다. 

 

6. 고유 무결성 : 특정 속성값은 서로 달라야 함

고유 무결성은 특정 속성에 삽입되는 데이터는 고유한 값을 가져야 한다는 규칙입니다. 이말은 즉, 각 튜플에서 하나의 속성값은 중복된 값이 없는 각각 서로 다른 값을 가져야 한다는 의미입니다. 예를 들어 이름, 나이, 사는 곳과 같은 속성은 튜프들이 서로 같은 값을 가질 수 있지만 고객 아이디의 경우 각 튜플을 서로 다른 값을 가져야 합니다.