관계형 모델 제약조건

2022. 10. 8. 19:54데이터베이스(DB)

반응형

주요 제약조건

- 도메인 제약 조건 (domain constraints)
- 키 제약조건 (key constraints)
- 엔티티 무결성 제약조건 (entity integrity constraints)
- 참조 무결성 제약조건 (referential integrity constraints)

 

도메인 제약조건

● 각 애트리뷰트 A의 값은 반드시 A의 도메인 dom(A)에 속하는 원자 값이어야 함
● 도메인과 관련된 데이터 타입
- 정수, 실수와 같은 표준 숫자형
- 문자, 고정길이 문자열, 가변 길이 문자열
- 날짜, 시간
- 화폐단위
- 메모 등

 

키 제약조건

R의 슈퍼 키(superkey) : 유일성 제약(uniqueness constraint) 조건 만족
- R의 애트리뷰트 집합 SK(superkey)로서 다음의 성질을 만족해야 함
- 모든 유효한 릴레이션 인스턴스 r(R)에서 어떠한 두 튜플도 동일한 SK 값을 갖지 않아야 함.
- r(R) 내의 임의의 서로 다른 두 튜플 t1과 t2에 대해 t1 [SK] ≠t2 [SK]이어야 함.

 

Q) SK True or False

A B C
1 a 1
2 a 2
1 b 3
2 b 4

- {A} SK? => False
- {A, B} SK? => True
- {A, B, C} SK? => True

 

SK의 superset SK? => True
- 위의 표에서 {A, B}의 superset은 {A, B, C}이다.
- {A, B, C}는 SK이므로 True

 

X는 SK가 아니다. X의 subset은 SK일 수 있다? => False
- 만약 X가 {이름, 성별}이라면 {성별}은 X의 subset이다.
- {성별}은 SK가 아니다. (성별로 구분을 할 수 없음)

 

R의 키(key) 또는 후보 키(Candidate key)

- 최소 슈퍼 키 : 슈퍼 키들 중에서 슈퍼 키 K를 구성하는 어느 한 애트리뷰트라도 빠지면 슈퍼 키가 될 수 없는 슈퍼 키 K를 의미함
X is a Key?
- 1. X is SK
- 2. X의 진부분 집합이 SK가 아님
- 키는 절대로 중복된 값을 가져서는 안 된다
- 기본키(primary key) 릴레이션이 여러 개의 후보 키(CK : candidate key)를 가지면 이 중 하나를 임의로 선택하여 기본키(PK : primary key)로 지정.
- 기본키를 구성하는 애트리뷰트는 밑줄로 표시함.

 

CAR 릴레이션

- CAR 릴레이션 스키마 CAR(License_NO, Engine_serial_NO, Make, Model, Year)는 2개의 키{License_NO}, {Engine_serial_NO}를 가지며, 이들은 동시에 슈퍼 키이다.
{License_NO, Engine_serial_NO}는 슈퍼 키이나 키는 아니다.
기본키는 License_number이다.

 

A B C D
a b 1 a
b b 2 a
c b 3 a
a a 4 b
b a 5 b
c a 6 b

Q1) {A, B, C, D} SK? => TRUE
Q2) {A} SK? => FALSE
Q3) {C} SK? => TRUE
Q4) {A, C} SK? => TRUE – {C}가 SK니까 superset은 SK
Q5) {A, C} Key? => FALSE
Q6) find all keys? => {C}, {A, B}, {A, D}

 

엔티티 무결성 제약 조건

- 어떠한 기본 키 값도 NULL 값을 가질 수 없다는 제약 조건
기본키가 각 튜플들을 식별하는 데에 이용되기 때문
- R의 기본키에 속하지 않은 애트리뷰트들도 null 값을 가질 수 없도록 제한할 수 있음. 릴레이션의 속성을 정의할 때 not null 임을 명시

 

참조 무결성 제약 조건

- 하나의 릴레이션 R에서 속성 FK의 값으로 다른 릴레이션 S의 기본키 PK 값을 참조하는 경우에 R과 S는 참조 무결성 제 약 조건을 가진다.
- 이때, FK의 값은 null을 가질 수 있음.
t1 [FK]=t2 [PK]이면 R의 튜플 t1이 S의 튜플 t2를 참조한다(reference)고 하며, FK를 외래 키(foreign 
key)라고 부름.
- R을 참조한 (referencing) 릴레이션, S를 참조된 (referenced) 릴레이션이라고 부름
- 앞의 제약조건들은 하나의 릴레이션에 대한 제약 조건이지만, 참조 무결성은 두 릴레이션에 대한 제약조건임을 유의해야 함
- 관계형 데이터베이스 스키마에서 참조 무결성 제약조건은 R1.FK에서 R2로의 화살표로 표시함.

 

관계 데이터베이스 스키마

- 동일한 데이터베이스에 속하는 릴레이션 스키마들의 집합 S와 무결성 제약조건 IC로 구성됨
- 릴레이션 스키마 집합 S를 데이터베이스 이름이라고 정의함: S={R1, R2, … , Rn}

 

 

COMPANY 스키마

데이터베이스 스키마 S의 관계 데이터베이스 상태 (인스턴스)
릴레이션 상태들의 집합

COMPANY 데이터베이스 상태
COMPANY 데이터베이스 상태
참조 무결성 제약 조건을 적용한 COMPANY 스키마

 

릴레이션에 대한 기본 갱신 연산

● 삽입, 삭제, 수정
- 갱신 연산을 실행하는 경우 스키마에 정의된 무결성 제약 조건을 위반하지 않아야 함

 

삽입 연산

- 삽입되는 튜플 t에서 애트리뷰트의 값이 도메인에 없으면 도메인 제약 조건을 위반함
- t에서 기본 키의 값이 다른 튜플에서 이미 존재한다면 키 제약 조건을 위반하며, null이면 엔티티 제약 조건을 위반함.
- t에서 외래 키의 값이 참조되는 릴레이션의 키 값으로 존재하지 않으면 참조 제약 조건을 위반함.

 

삭제 연산

- 튜플이 삭제되는 경우 다른 테이블에서 참조하고 있는지 검사하여 그렇지 않은 경우에만 삭제함 (참조 무결성)

- 삭제 연산이 참조 무결성 제약 조건을 위반하는 경우 취할 수 있는 세 가지 옵션
1. 삭제 거부
2. 삭제되는 튜플을 참조하는 튜플들까지 모두 삭제 (연쇄 삭제(on delete cascade))
3. 삭제되는 튜플을 참조하는 튜플에서 외래 키 값을 null로 바꾸거나 다른 유효한 튜플을 참조하도록 변경 (on delete set null)

 

수정 연산

- ‘삭제 후 삽입’ 연산으로 간주할 수 있으므로 삽입과 삭제 시의 문제점이 모두 나타남
기본키나 외래 키가 아닌 애트리뷰트 값의 변경은 문제가 없음