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

DevHwan·2023년 4월 6일
0

들어가며

갑자기 데이터 베이스 무결성 제약조건에 대해 다루게 되었다. 그 이유는 바로 다음 글이 될 트랜잭션의 ACID라는 성질 때문이다. 어려운 내용은 아니므로 빠르게 정리해보자.

데이터베이스의 무결성 제약조건이란?

데이터 베이스 내의 데이터가 항상 일관성 있고 정확한 값을 가지도록 보장하는 제약조건을 의미한다. 데이터베이스의 무결성 제약조건은 다음과 같이 분리될 수 있다.

개체 무결성

개체 무결성은 데이터베이스의 각 테이블에 있는 레코드들의 무결성을 보장한다. 각 레코드들은 항상 고유한 기본키(primary key)를 갖고, 이 기본키가 없거나 중복되는 경우 개체 무결성이 어긋난다.

참조 무결성

참조 무결성은 데이터베이스 내의 다른 테이블을 참조하는 외래키의 무결성을 보장한다. 이를 위해 외래키를 참조하는 테이블의 기본키와 일치해야 하며, 참조하는 테이블의 기본키가 삭제되거나 수정되는 경우에도 데이터의 무결성이 유지되어야 한다.

만약 참조하는 테이블에서 기본키가 있는 레코드가 삭제되거나 수정되는 경우에는 참조 무결성을 어떻게 보장할 수 있는가 ??

세 가지 방식으로 크게 분류할 수 있다.

  1. 참조 무결성 제약 조건을 삭제하거나 비활성화한다. → 즉 참조 무결성 제약조건을 지키지 않는다는 말이다. 이 말은 사용자가 해당 데이터베이스의 데이터를 믿을 수 없게 된다. → 올바르지 못한 해결방법이라는 소리이다.
  2. 참조하는 테이블의 레코드를 삭제하거나 수정하여 참조 무결성 제약조건을 유지한다. → 아마도 가장 기본적인 방법이 아닐까 싶다. 참조하는 곳의 데이터가 변경되면, 참조하는 테이블에서도 이를 따라가는 방식이다.
  3. 참조하는 테이블의 기본키가 삭제될 때, 참조하는 모든 테이블에서 해당 기본키를 참조하는 외래키를 NULL로 설정한다. → 해당 레코드에서 참조하는 데이터와의 관계가 중요한 역할을 하는 경우 NULL로 변경되는 순간 레코드 자체가 의미가 없어질 수 있다.

도메인 무결성

도메인 무결성은 각 컬럼의 데이터 유형, 길이, 형식 등 제약조건을 보장한다. 이를 위해 각 컬럼에는 데이터 유형에 맞는 데이터들이 입력된다.

범위 무결성

범위 무결성은 데이터의 범위에 대한 제약조건을 보장한다. 숫자, 문자 등에 대한 길이 규칙이다.

profile
달리기 시작한 치타

0개의 댓글