220325_데이터 무결성과 무결성 제약조건

창고·2022년 7월 28일
0
post-custom-banner

티스토리에 저장했던 글을 옮겼습니다.
https://mrcocoball.tistory.com/33?category=1080971

1. 데이터의 무결성

(1) 무결성의 정의

  • 무결성 (Integrity) : 정보가 원 그대로 변형되지 않고 전달되는 성질.
    원래의 정보 또는 신호가 전송/저장/변호나 중에 또는 그 후에도 동일함을 유지하는 것

(2) 데이터 무결성 (Data Integrity)의 정의

  • 데이터의 정확성, 일관성, 유효성이 유지되는 것
  • 권한 부여된 사용자들에 의해 야기될 수 있는 의미적 에러를 방지, 
    올바른 데이터를 갖도록 보장하는 특성
  • 데이터의 정확성을 보장하기 위해 데이터의 변경 / 수정 시 제한을 두어 
    안정성 저해 요소를 막아 데이터 상태를 항상 옳게 유지하는 것
  • 데이터베이스 내 저장값과 항상 변하는 현실세계 표현값과의 일치, 정확하고 유효한 데이터만 유지

2. 데이터 무결성 구분

(1) 개체 무결성 (Entity Integrity)

  • SQL 구현 : 기본 키(PRIMARY KEY)UNIQUE
  • 모든 테이블이 기본 키(Primary Key)로 선택된 필드(Column)을 가져야 함
  • 기본 키에는 중복이 없으며 NULL 값을 허용 하지 않음
    (단일 테이블 내 중복 레코드가 존재 하지 않도록 하는 것, 주민등록번호 등)
  • 유일한 식별자를 가질 것을 요구

(2) 참조 무결성 (Referential Integrity)

  • SQL 구현 : 외래 키(FOREIGN KEY)
  • 참조 관계에 있는 두 테이블의 데이터가 항상 일관된 값을 갖도록 유지되는 것
  • 타 테이블과 연관된 데이터가 입력, 수정, 삭제 시에도 데이터 간에 정확한 참조 관계를 유지시킴 (존재하지 않는 값에 대한 참조를 허용하지 않는 등)
  • 기본 키와 외래 키 간의 관계가 항상 정확하게 유지됨을 보장

(3) 도메인 무결성 (Domain Integrity)

  • SQL 구현 : CHECKDEFAULTNOT NULL 등
  • 테이블에 존재하는 필드(Column)의 무결성을 보장하기 위한 것으로 필드의 타입, 
    NULL값의 허용 등에 대한 사항을 정의, 올바른 데이터가 입력되었는지 확인
  • 열의 값들은 일관성을 가져야 하며 업무 규칙에 부합되어야 함
  • 특정 열의 속성별 범위 값 제한 규정 (남/여, True/False 등만 가능, NULL 허용 여부)
  • 자료형, 값, 범위 등을 제한

3. 데이터 무결성 적용 방법

  • 선언적 방법 (Declarative)
    • 테이블과 컬럼 등을 정의할 때, 데이터 무결성 조건을 함께 선언하여 정의하는 방법
  • 서술적 방법 (Descriptive)
    • 선언적 방법으로 구현하기 어려운 복잡한 업무 규칙을 적용할 때 사용
    • 주로 트리거나 스토어드 프로서지와 같은 스크립트 형태로 정의

4. 무결성 제약조건

(1) 무결성 제약 조건의 정의

  • 데이터베이스 테이블에 신뢰할 수 없는 데이터 입력을 못하도록 제한하는 제약 조건
  • 데이터의 무결성 (일관성, 신뢰보장) 을 위해 DBMS 기능을 통해 정의, 유지, 감시하고자 데이터들에게 부과하는 조건
  • 실세계적 관점에서 이를 업무 규칙 (Business Rule) 이라고도 함

(2) 개체 무결성 제약 조건 적용 형태

  • Primary Key (기본 키) : 기본 키 열의 값이 중복이 없어야 하고 NULL 값을 허용하지 않음
  • UNIQUE : 테이블 열의 값을 항상 고유하게, 중복 없도록 함

(3) 참조 무결성 제약 조건 적용 형태

  • Foreign Key (외래 키) : 외래 키는 참조 테이블(릴레이션)의 기본 키 값이거나 NULL 값만 가능

(4) 도메인 무결성 제약 조건 적용 형태

  • CHECK : 열의 값이 일정 범위 값으로 제한 (남/여, True/False 등만 가능)
  • DEFAULT : 테이블 열에 기본 값을 지정해 둠
  • NOT NULL : 반드시 값이 입력되어야 함

5. 제약 조건 적용 예시 (MySQL)

  • 제약 조건 확인
DESC (데이터베이스명).(테이블 명);  
  • 제약 조건 추가 : 기본 키 (개체 무결성)
  ALTER TABLE (부모테이블명) ADD CONSTRAINT (제약조건명) PRIMARY KEY (컬럼명)
  • 제약 조건 추가 : 외래 키 (참조 무결성)
    • .. ON DELETE CASCADE : 부모 테이블의 기본 키 삭제시, 자식 테이블에서도 같이 삭제
      .. ON UPDATE CASCADE : 부모 테이블의 기본 키 업데이트시, 자식 테이블에서도 같이 업데이트
  ALTER TABLE (자식 테이블명) ADD CONSTRAINT (제약조건명) FOREIGN KEY (컬럼명) 
  REFERENCES (부모 테이블명) (PK 컬럼명) \[ON DELETE CASCADE / ON UPDATE CASCADE\];
  • 제약 조건 추가 : NOT NULL
  ALTER TABLE (테이블명) MODIFY (컬럼명) (데이터타입) CONSTRAINT (제약조건명) NOT NULL;
  • 제약 조건 삭제
  ALTER TABLE (부모 테이블명) DROP CONSTRAINT (제약조건명);
  • 외래 키 삭제
  ALTER TABLE (자식 테이블명) DROP FOREIGN KEY (제약조건명);

6. 무결성 유지를 위한 서브 시스템

  • DBMS에서는 데이터의 무결성 유지/강화를 위해 전문화던 무결성 서브시스템 등의 구성 요소
  • 커밋(commit)롤백(rollback)록킹(locking) 등

레퍼런스

http://www.ktword.co.kr/test/view/view.php?m_temp1=1229
http://www.ktword.co.kr/test/view/view.php?m_temp1=610&id=513
https://untitledtblog.tistory.com/123

profile
공부했던 내용들을 모아둔 창고입니다.
post-custom-banner

0개의 댓글