[데이터 베이스] 무결성이란?

행복한 콩🌳·2023년 1월 16일
0

데이터베이스

목록 보기
21/26

🌳Integrity(무결성)
정보에 결점이 없도록 유지하는 성질

데이터베이스 내에 저장되는 데이터 값들이 항상 일관성을 갖고 데이터의 유효성, 정확성, 안정성을 유지할 수 있도록 하는 제약조건을 두는 데이터베이스의 특성

🌳데이터 무결성
데이터 무결성은 데이터의 정확성, 일관성, 유효성이 유지되는 것을 의미합니다.

정확성이란 중복이나 누락이 없는 상태,
일관성은 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태,
유효성은 사용자로 부터 값을 입력받을 때 정확한 값만 입력되도록 할 때 유용한 기능입니다.

만약 데이터베이스에서 데이터 무결성 설계를 하지 않는다면 테이블에 중복된 데이터 존재, 부모와 자식 데이터 간의 논리적 관계 깨짐, 잦은 에러와 재개발 비용 발생 등과 같은 문제가 발생할 것입니다.

그렇기 때문에 DBMS에서 데이터의 무결성이 유지되는 것은 중요한 사항이며, 주로 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지합니다.

⭐️ 데이터 무결성 제약조건의 종류와 개념
1. 개체 무결성(Entity integrity)
기본 키 제약이라고도 하며, 테이블은 기본키를 지정하고 그에 따른 무결성 원칙을 지켜야 하는 조건

기본 키(Primary Key)에는 Null 값이 올 수 없음
기본 키는 테이블 내에 오직 하나의 값만 존재해야 함
(하나의 테이블 내에 동일한 기본 키를 가진 레코드는 존재할 수 없음)
기본 키란?
테이블에서 특정 레코드를 구별하기 위해 후보 키 중에서 선택된 고유한 식별자 키

  1. 참조 무결성(Referential integrity)
    외래 키 제약이라고도 하며, 테이블 간의 참조 관계를 선언하는 제약조건

외래 키(Foreign Key)의 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 함
외래 키 속성은 참조할 수 없는 값을 지닐 수 없음
(즉, 외래 키 속성 값이 상위 테이블의 인스턴스에 반드시 존재하거나 Null이어야 함)
외래 키란?
한 테이블의 키 중에서 다른 테이블의 레코드를 유일하게 식별할 수 있는 키

  1. 도메인 무결성(Domain integrity)
    테이블에 존재하는 필드의 무결성을 보장하기 위한 것으로 필드의 타입, Null 값 허용 등에 대한 사항을 정의하고 올바른 데이터가 입력되었는지 확인하는 조건

예를 들어 주민등록번호 필드에 문자가 입력되는 경우엔 도메인의 무결성이 깨졌다고 볼 수 있음

  1. Null무결성(Null integrity)
    특정 속성값에 NULL 이 올 수 없다는 조건이 주어진 경우, 그 속성값은 NULL 값이 올 수 없다는 제약조건
  1. 고유 무결성 (Unique integrity)
    테이블의 특정 속성에 대해 각 레코드들이 갖는 값들이 서로 달라야 하는 조건
  1. 키 무결성 (Key integrity)
    하나의 테이블에는 적어도 하나의 키가 존재해야 하는 조건
  1. 관계 무결성 (Relationship integrity)
    테이블의 어느 한 레코드의 삽입 가능 여부 또는 한 테이블과 다른 테이블의 레코드들 사이의 관계에 대한 적절성 여부를 지정한 조건

⭐️ 무결성 제약조건의 장단점
장점
스키마를 정의할 때 일관성 조건을 오직 한 번만 명시하고, 데이터베이스가 갱신될 때 DBMS가 자동적으로 일관성 조건을 검사하므로 응용 프로그램들은 일관성 조건을 검사할 필요가 없음
예를 들어 제약 조건으로 데이터의 값이 0보다 크거나 같아야한다(data ≥ 0)라고 정의하면 DBMS가 자동으로 이 조건을 검사해주므로 응용 프로그램에서 이 조건에 대한 비교를 작성하지 않아도 된다.

또한 무결성 제약조건을 사용하면 데이터를 실생활의 의미에 맞게 사용할 수 있다. (사람의 몸무게는 0보다 커야 한다 등등)
응용 프로그램에서 직접 조건을 유지하는 경우보다 에러가 발생할 가능성이 더 낮다.

단점
프로그래밍 작업이 훨씬 복잡해지고, 무결성 제약조건을 반복해서 구현해야 하고, 무결성 제약조건들 간에 서로 충돌이 발생할 수 있음

참고 코딩 공부 일지

profile
매일매일 조금씩 모여 숲이 되자🐣

0개의 댓글