...
무결성
- 데이터의 정확성 또는 유효성을 의미
- 일관된 데이터베이스 상태를 정의하는 규칙들을 묵시적으로 또는 명시적으로 정의함
무결성 제약 조건
1. 도메인 제약조건(domain constraint)
- 각 애트리뷰트 값이 반드시 원자값이어야 함
- 애트리뷰트 값의 디폴트 값, 가능한 값들의 범위 등을 지정할 수 있음
2. 키 제약조건(key constraint)
- 키 애트리뷰트에 중복된 값이 존재해서는 안됨
-> 기본키가 아님
3. 엔티티 무결성 제약조건(entity integrity constraint)
- 엔티티 : 데이터 집합 (사원, 부서, 고객, 상품...)
- 릴레이션의 기본 키를 구성하는 어떤 애트리뷰트도 널값을 가질 수 없음
- 대체 키에는 적용되지 않음
4. 참조 무결성 제약조건(referential integrity constraint)
- 두 릴레이션의 연관된 투플들 사이의 일관성을 유지하는데 사용됨
- 릴레이션 R2의 외래 키가 릴레이션 R1의 기본 키를 참조할 때, 참조 무결성 제약조건은 아래의 두 조건 중 하나가 성립되면 만족됨.
1) 외래 키의 값은 R1의 어떤 투플의 기본 키 값과 같다
2) 외래 키가 자신을 포함하고 있는 릴레이션의 기본 키를 구성하고 있지 않으면 널값을 가진다.
무결성 제약조건의 유지
- 데이터베이스에 대한 갱신 연산 : 삽입연산, 삭제연산, 수정연산
- DBMS는 각각의 갱신 연산에 대해 데이터베이스가 무결성 제약조건들을 만족하도록 필요한 조치를 취함
- DBMS는 외래 키가 갱신되거나, 참조된 기본 키가 갱신되었을 때 참조 무결성 제약조건이 위배되지 않도록 조치
DEPARTMENT : 참조된 릴레이션 (부모)
EMPLOYEE : 참조하는 릴레이션 (자식)
ex) 외래키가 생겼다 -> 1 대 다 관계
1 대 다에서 추가되는 열을 참조 키에 맞춰서 추가. 삭제 될 때는 상관없음
- 자식의 삽입, 수정 참조무결성 신경O (부모 기본키에 맞춰서 해야함)
- 자식의 삭제는 참조무결성 신경X
- 부모의 삭제는 신경O (자식 외래키에 영향)
- 부모의 삽입 신경X
참조 무결성 제약조건을 만족시키기 위해서 DBMS가 제공하는 옵션
1. 제한(restricted)
- 위배를 야기한 연산을 단순히 거절
- 예: DEPARTMENT 릴레이션에서 (3, 개발, 9)를 삭제하면 참조 무결성 제약조건을 위배하게 되므로 삭제 연산을 거절
2. 연쇄(cascade)
- 참조되는 릴레이션에서 투플을 삭제하고, 참조하는 릴레이션에서 이 투플을 참조하는 투플들도 함께 삭제
- 예: DEPARTMENT 릴레이션에서 (3, 개발, 9)를 삭제하면 EMPLOYEE 릴레이션에서 부서번호 3을 참조하는 두 번째 투플과 다섯 번째 투플도 함께 삭제
- 부서 3이 삭제되면 딸려오는 것도 다 삭제 -> 연쇄
- 부서 번호를 5로 수정하면 연관되어잇는 걸 다 5로 수정
- 기본 삭제는 제한이 디폴트고, 수정은 연쇄가 디폴트로 작용한다.
3. 널값(nullify)
- 참조되는 릴레이션에서 투플을 삭제하고, 참조하는 릴레이션에서 이 투플을 참조하는 투플들의 외래 키에 널값을 삽입
예: DEPARTMENT 릴레이션에서 (3, 개발, 9)를 삭제하면 EMPLOYEE 릴레이션에서 부서번호 3을 참조하는 두 번째 투플과 다섯 번째 투플의 부서번호에 널값을 삽입
4. 디폴트값
- 널값을 넣는 대신에 디폴트값을 넣는다는 것을 제외하고는 바로 위의 옵션과 비슷함
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.