티스토리에 저장했던 글을 옮겼습니다.
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 구현 :
CHECK
, DEFAULT
, NOT 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\];
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