데이터베이스에선, 정확한 데이터 처리를 위해 데이터의 무결성을 최대한으로 보장하도록 하고 있다.

데이터베이스를 이해하기 위해 아주 중요한 개념인 데이터 무결성에 대해 알아보자.

 

데이터 무결성

데이터 무결성이란, 데이터에 어떠한 허점이나 결점이 없는 상태를 의미한다.

조금 더 이론적으로 말하자면 정확성, 일관성, 유효성이 유지되는 상태라고 한다.

 

정확성이란?

특정 데이터에 대해 중복이나 누락이 존재하지 않아 원하는 데이터를 정확하게 찾을 수 있는 상태를 의미한다.

 

Ex) 동일한 튜플이 2~3개씩 저장되어 있다면, 어떠한 튜플을 참조해야 할 지 식별할 수가 없어진다.

 

일관성이란?

모든 데이터에 대해, 그 의미나 형식 등이 일관되어 있는 상태를 의미한다.

 

Ex 1) 사람의 나이를 만나이로 저장하기로 했다면, 모든 나이 데이터가 만 나이로 저장되어 있어야 한다.

Ex 2) 모든 학번을 NULL이 아닌 값을 저장하기로 했다면, 임시 학번을 부여해서라도 NULL이 저장되지 않도록 해야 한다.

 

유효성이란?

모든 데이터가 유효한 형식으로 저장되어 있는 상태를 의미한다.

 

Ex) 주민번호는 xxxxxxx - xxxxxxx 의 앞의 6자리와 뒤의 7자리 형식으로 저장되어야 한다. 사용자로부터 입력받을 경우, 유효하지 않은 데이터의 저장을 방지하기 위해 형식을 강제해야 한다.

 

무결성 제약조건

무결성을 보장하기 위해, 데이터베이스에 여러가지 제약조건을 설정할 수 있다.

대표적인 제약조건 3가지를 알아보자.

 

도메인 무결성 제약조건

 

도메인이란, 속성의 저장 범위를 강제하는 조건이다.

 

에를 들어, 성별이라는 속성값이 있다면 혹은 로만 저장되어야 한다.

혹은, 초등학교 학년이라는 속성값이 있다면, 1~6 사이의 정수값만 저장될 수 있을 것이다.

 

모든 데이터는 해당 도메인의 범위 내에서만 저장되어야 한다는 제약조건이 도메인 무결성 제약조건이다.

 

성별을 입력하는 입력칸에 사용자가 남이 아닌, 담, 납, 낭 등의 오탈자를 입력할 가능성이 있으므로, 체크박스를 두어 성별을 둘 중 하나로 선택하도록 강제하는 것이 도메인 무결성 제약조건을 지키는 사례라고 생각하면 된다.

 

개체 무결성 제약조건

 

개체 무결성 제약 조건이란, 테이블의 기본키에 포함되는 모든 속성값은 NULL이어서는 안된다는 조건이다.

 

기본키란, 튜플을 식별하기 위해 기본으로 사용하는 키이다. 해당 키로 데이터를 탐색하는데 NULL값이 포함되어 있다면 원하는 데이터를 정확하게 탐색하고 식별할 수 없을 것이다.

 

즉, 기본키에 해당하는 속성만큼은 절대 NULL을 포함하지 말자는 제약 조건이 개체 무결성 제약 조건이다.

 

참조 무결성 제약조건

 

참조 무결성 제약 조건이란, 외래키는 NULL이거나 참조 릴레이션의 기본키와 일치해야 한다는 것이다.

 

예를 들어, 학생 정보 튜플에 학과 번호라는 속성이 포함되어 있다고 해보자.

학과 번호를 외래키로 사용하여, 외부의 학과 정보 테이블에서 {학과 번호, 학과 이름, 학과장 }의 튜플을 식별하고자 한다고 해보자.

 

그렇다면, 해당 외래키 값에 대한 학과 번호는 반드시 학과 정보 테이블에 저장되어 있어야 한다.

학과 번호는 1~9번까지 존재하는데, 만약 외래키 학과 번호에 10이 저장되어 있다면, 학과 정보 테이블에서 올바른 학과 정보를 참조를 할 수 없을 것이다.

 

그러므로 안전한 참조를 위해, 반드시 외래키 값은 참조 테이블의 기본키 값에 존재해야 한다.

만약, 참조할 대상이 아직 없다면 NULL을 입력하여 명확히 표현해주어야 한다.

+ Recent posts