개요
무결성
- 데이터의 정확성 또는 유효성을 의미
- 일관된 데이터베이스 상태를 저의하는 규칙들을 묵시적으로 또는 명싱적으로 정의

무결성 제약 조건
1. 무결성 제약 조건(domain constraint)
- 각 애트리뷰트(칼럼)값이 반드시 원자값 이어야함
- 원자값이란, 더이상 쪼개지지않는 단위를 읽컫습니다

- 즉 이런식으로 데이터가 하나씩 저장되어야하고, 배열이나 객체등이 저장되면 안된다는 뜻이다
- 애트리뷰트 값의 디폴트 값, 가능한 값들의 범위 등을 지정할 수 있음
- 칼럼값의 디폴트값,입력가능한 범위,조건을 제한 할 수 있다는 뜻이다
2. 키 제약조건(key constraint)
- 키 애트리뷰트에 중복된 값이 존재해서는 안됨
- 데이터베이스의 raw에서 key가 중복된다면 자신이 원하는 key의 값을 정확히 찾을 수 없기 떄문
- 숫자 1,2 라는 key가 있을때는 2에 해당하는 value값을 가져 올 수 있지만
- 숫자 2,2 라는 key가 있을때는 2라는 key가 2개 이기 떄문에, 중복된 값이 존재해서는 안된다는 것이다
3. 엔티티 무결성 제약조건(entity integrity constraint)
- 엔티티:
- 릴레이션(Realation)의 기본키를 구성하는 어떤 칼럼도 Null값을 가질 수 없음
- 릴레이션: RDB의 테이블을 의미
- 즉 테이블의 기본키를 구성하는 칼럼은 Null일 수 없다는 의미
- 중복도 되면 안됨
- 대체 key에는 적용되지 않음
- 대체 Key: 후보 Key중에서 기본 Key로 선택되지 않은 나머지 키를 의미

- 주민등록 번호가 대체 Key라고 볼 수 있다
- 즉 대체 Key도 고유성을 보장해야하지만, Null을 허용 할 수도 있다는 것이다
4. 참조 무결성 제약조건(referential integrity constraint)
무결성 제약조건의 유지
- 데이터베이스에 대한 갱신 연산 : 삽입,삭제,수정 연산
- DBMS는 각각의 갱신 연산에 대해 데이터베이스가 무결성 제약조건들을 만족하도록 필요한 조치를 취함
- DBMS는 외래 키가 갱신되거나, 참조된 기본 키가 갱신되었을 때 참조된 기본 키가 갱신되었을 때 참조 무결성 제약조건이 위배되지 않도록 조치

DBMS?
참조 무결성 제약조건을 만족시키기위해서 DBMS가 제공하는 옵션
1. 제한(restriceted)
- 위배를 야기한 연산을 단순히 거절
- EX)
- 자식 테이블은 현재, 부모 테이블의 DEPTNO를 기반하여 fk를 가지고있다
- 이 상황에서 (3,개발,9)를 삭제해 버리면, 자식테이블의 (3426,박영권,3)의 key인 3이 부모테이블에서 실존하지 않게 되버리기 때문에 참조 무결성 제약조건을 위반 하는것이다
2. 연쇄(cascade)
- 참조되는 (부모) 릴레이션 (테이블)에서 투플을 삭제하고, 참조하는 (자식) 릴레이션 (테이블)에서 이 투플을 참조하는 투플들고 함께 삭제
- EX)
- 부모 테이블에서 (3,개발,9)를 삭제하면 자식 테이블의 (3426,박영권,3), (3427,최종철,3)도 같이 삭제
3. Null값(nullify)
- 참조되는 릴레이션 (부모 테이블)에서 투플을 삭제하고, 참조하는 릴레이션 (자식 테이블)에서 이 투플을 참조하는 투플들의 외래키에 Null값을 삽입
- EX)
- DEPARTMENT 릴레이션에서 (3, 개발, 9)를 삭제하면 EMPLOYEE 릴레이션에서 부서번호 3을 참조하는 두 번째 투플과 다섯 번째 투플의 부서번호에 널값을 삽입
4. Default값
- Null값을 넣는 대신에, 디폴트값을 넣는다는것 제외하고 3번과 비슷함
나는 오늘 무엇을 알았는가?
- 데이터의 무결성 제약 조건에는 4가지가 있다
- 무결성 제약조건
- 칼럼값이 반드시 원자값 이어야한다는 뜻
- 즉 객체,배열등이 들어오면 안됨
- 키 제약조건
- 엔티티 무결성 제약 조건
- 테이블의 Key는 중복될수없고, Null이 들어올수없다
- 대체 Key도 중복은 될 수 없지만, Null은 들어올수있다
- 참조 무결성 제약조건
- 자식 테이블의 fk는, 부모 테이블의 raw에 반드시 존재해야한다
참조 블로그
https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%EB%AC%B4%EA%B2%B0%EC%84%B1-%EC%A0%9C%EC%95%BD-%EC%A1%B0%EA%B1%B4-%F0%9F%95%B5%EF%B8%8F-%EC%A0%95%EB%A6%AC