관계형 데이터베이스 - 무결성(Integrity)

full_accel·2020년 12월 20일
0

Database 101

목록 보기
2/2
post-thumbnail
post-custom-banner

무결성과 정합성


데이터 무결성

  • 무결성은 데이터 값이 정확한 상태
  • Data Integrity가 주로 데이터 무결성으로 번역되나, 정확하다는 의미에서 데이터 완전성이나 정확성이라는 표현이 더 간결

데이터 정합성

  • 정합성은 무결성과 유사하게 사용되는 용어
  • 어떤 데이터들의 값이 서로 일치할 때 데이터 정합성이 맞다고 표현
  • 중복 데이터를 많이 사용하면 데이터끼리 정합성을 맞추기 어렵고 궁극적으로는 서로 달라지는 경우(정합성이 깨지는 경우) 발생 가능
  • 비정규형을 사용하여 아노말리가 발생하면 데이터 정합성이 깨진다.

무결성과 정합성의 비교

  • 정합성은 데이터가 서로 모순 없이 일관되게 일치해야 한다는 의미
  • 무결성은 데이터가 정확하고 완전해야 한다는 의미 → 데이터는 제대로된(멀쩡한, 모델러나 개발자가 의도한) 상태로 존재해야 한다.
  • 어떤 데이터는 정합성에는 이상이 없으나 무결성은 훼손된 상태일 수 있다.
    • ex) 중복 데이터가 전부 동일하나 옳바르지 않은 값으로 일치하면 정합성은 만족하나 무결성은 훼손된 상태 → 특정 사용자의 주소에 전부 False 가 들어간 경우
  • 따라서 무결성의 정의가 더 넓은 개념
  • 무결성을 지키는 것이 데이터 모델링의 최고의 목표

데이터 무결성의 종류


  • 관계형 데이터베이스의 가장 큰 목표는 데이터 무결성을 높이는 것
  • 무결성에는 다음의 4가지 종류가 있다.
    1. 엔터티 무결성(Entity Integrity)
    2. 참조 무결성(Referential Integrity)
    3. 도메인 무결성(Domain Integrity)
    4. 업무 무결성(Business Integrity)

엔터티 무결성(Entity Integrity)


  • 엔터티에 존재하는 모든 인스턴스는 고유해야 한다.
  • 인스턴스를 대표하는 속성(Primary Key)에는 Null 값이 올 수 없다.
  • → 엔터티에는 동일한 주 식별자가 존재할 수 없으며 주 식별자 속성은 모르는 값인 Null 값을 허용할 수 없다.
  • 두 번째 인스턴스는 첫 번째 인스턴스와 중복이므로 엔터티 무결성 위반
  • 세 번째 인스턴스의 주문번호 속성은 Primary Key인데 null 이므로 엔터티 무결성 위반

참조 무결성(Referential Integrity)


  • 참조 무결성: 엔터티의 왜래 식별자 속성은 참조되는 엔터티의 주 식별자 값과 일치하거나 Null 값이어야 한다.

  • 즉 외래 식별자 속성 값이 상위 엔터티의 인스턴스에 반드시 존재하거나 Null 이어야 한다.

  • 참조 무결성은 두 엔터티의 연관된 인스턴스 사이에 일관성을 유지하기 위한 제약으로 사용

  • 이 제약은 관계형 데이터베이스에서 집합(엔터티) 사이에 연산할 수 있도록 하는 대단히 중요한 개념

  • 주문 릴레이션은 고객 릴레이션을 참조하므로 주문 릴레이션의 고객번호 속성은 외래 식별자

  • 이때 주문 릴레이션의 고객번호 속성 값은 고객 릴레이션의 주 식별자인 고객번호 속성에 존재해야 한다.

  • 참조 무결성은 데이터 모델에서 절대적으로 필요한 중요한 요소이며 제약

  • 참조 무결성은 FK(Foreign Key) 제약에 의해서 지켜진다.

도메인 무결성


  • 도메인 무결성은 속성 값과 관련된 제약
  • 엔터티의 특정 속성 값은 동일한 데이터 타입, 길이, Null 허용 여부, 기본 값, 허용 값 등 동일한 범주의 값만이 존재해야 한다.
  • 동일한 속성에 사용되는 값들은 동일한 성격의 값이 사용되어야 한다.
  • 도메인 무결성 예시
    • 고객이름 속성에 "Homer"는 허용, 777은 불가
    • 전화번호 속성에 "555-5555"는 허용, "오오오~오오오오"는 불가
  • 도메인 무결성은 기본 값, Null 허용 여부, 체크 조건 등으로 지켜질 수 있다.

업무 무결성


  • 업무 무결성은 기업에서 업무를 수행하는 방법이나 데이터를 처리하는 규칙
  • 넓게 보면 엔터티 무결성이나 참조 무결성, 도메인 무결성도 업무 무결성에 포함
  • 업무 무결성 예시
    • 주문 금액 3만 원 이상이면 무료배송
    • 초회 보험료를 입금하지 않은 보험 계약은 무효
  • 업무 무결성은 범위가 넓어 주로 프로그램(의 로직)에서 확인
  • 업무 무결성을 물리적으로 강제하는 대표적인 방법에는 트리거가 존재
profile
스스로 배운 것이 오래 간다.
post-custom-banner

0개의 댓글