데이터 베이스에 데이터를 저장하고 다시 찾을 때 데이터의 무결성을 보장하기 위해서 우리는 3가지 제약조건을 걸어주게 된다
- 도메인 무결성 제약조건
- 개체 무결성 제약조건
- 참조 무결성 제약조건
이 3개를 우리는 차례대로 알아보도록 하겠다
도메인 무결성 제약조건
일반적인 프로그래밍에서 변수형 선언과 비슷한 느낌이라고 보면 된다
튜플에 해당 값들은 자신이 속한 속성의 도메인에 지정된 값만을 사용해야 한다는 것이다
예를 들어서
User( password : String) 이런 테이블이 있다고 하겠다
그러면 String 말고 다른 타입의 값이 들어가서는 안된다는 것이다
개체 무결성 제약조건
기본키 제약이라고 한다
- NULL값을 가져서는 안된다
- 릴레이션 내에 오직 하나의 값만 존재해야한다
개체 무결성 제약 조건은 참조 무결성 제약조건과 함께 관계데이터 모델의 핵심이라고 볼 수 있다
참조 무결성 제약조건
외래키 제약이라고 한다
부모 릴레이션
: 참조되는 릴레이션자식 릴레이션
: 참조하는 릴레이션
- 자식의 외래키는 부모 기본키와 도메인이 동일해야한다
- 부모의 도메인과 다른 값으로 수정할려는 경우 거부된다
- 자식에서 참조하고 있는 값을 부모에서 삭제할려는 경우 거부된다
Unique 제약조건
한 속성의 즉 한 열의 값에서는 서로 같은 값이 존재해서는 안된다
기본키의 제약과 비슷하다고 볼 수 있지만 Unique에서는 NULL을 허용한다
무결성 제약조건의 수행
릴레이션의 데이터의 변경이 일어날 경우 제약조건에 위배될 가능성이 존재한다
제약조건의 준수 하는지 검사를 데이터의 변경이 있을 때마다 수행되어야 한다
개체 무결성 제약조건 수행
관계 데이터베이스에서는 튜플의 변경 (삽입, 삭제, 수정)이 발생할 때
개체 무결성 제약조건을 지키는지 확인하고 아니라면 오류를 발생시킨다
ex)
Id | |
1 | peachberry@kakao.com |
위와 같은 테이블이 존재한다고 했을 때
User ( 1, baek@kakao.com) 과 같은 데이터를 삽입할려고 한다면
Id 값이 1로 겹치기 때문에 개체 무결성 제약조건에 걸려서 오류가 발생하게 된다
참조 무결성 제약조건
참조 무결성 제약조건은 단일 릴레이션보다는 대부분은 다수의 릴레이션에 걸쳐져 있기 때문에 조금 더 까다롭다
자식에서 튜플을 삭제하는 경우 부모에게 영향을 주지 않기 때문에 바로 삭제가 가능하다
부모에서 튜플을 삭제하는 경우 자식에서 참조하고 있는 경우 4가지의 상황을 고려할 수 있다
- 즉시 작업을 중지
(RESTRICTED)
- 자식 릴레이션의 관련 튜플을 삭제
(CASCADE)
- 초기에 설정된 다른 어떤 값으로 변경
(DEFAULT)
- NULL 값으로 설정
(NULL)
참조중인 튜플을 수정하는 경우는 삭제를 진행하고 삽입 연산을 진행하는 것과 같다
수정 = 삭제 -> 삽입
'컴퓨터 기초 > 데이터베이스' 카테고리의 다른 글
관계 데이터 모델 - 무결성 제약 조건 (Key) (0) | 2021.02.21 |
---|---|
관계 데이터 모델 - Relation (0) | 2021.02.21 |