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(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}
데이터베이스 스키마 S의 관계 데이터베이스 상태 (인스턴스)
- 릴레이션 상태들의 집합
릴레이션에 대한 기본 갱신 연산
● 삽입, 삭제, 수정
- 갱신 연산을 실행하는 경우 스키마에 정의된 무결성 제약 조건을 위반하지 않아야 함
삽입 연산
- 삽입되는 튜플 t에서 애트리뷰트의 값이 도메인에 없으면 도메인 제약 조건을 위반함
- t에서 기본 키의 값이 다른 튜플에서 이미 존재한다면 키 제약 조건을 위반하며, null이면 엔티티 제약 조건을 위반함.
- t에서 외래 키의 값이 참조되는 릴레이션의 키 값으로 존재하지 않으면 참조 제약 조건을 위반함.
삭제 연산
- 튜플이 삭제되는 경우 다른 테이블에서 참조하고 있는지 검사하여 그렇지 않은 경우에만 삭제함 (참조 무결성)
- 삭제 연산이 참조 무결성 제약 조건을 위반하는 경우 취할 수 있는 세 가지 옵션
1. 삭제 거부
2. 삭제되는 튜플을 참조하는 튜플들까지 모두 삭제 (연쇄 삭제(on delete cascade))
3. 삭제되는 튜플을 참조하는 튜플에서 외래 키 값을 null로 바꾸거나 다른 유효한 튜플을 참조하도록 변경 (on delete set null)
수정 연산
- ‘삭제 후 삽입’ 연산으로 간주할 수 있으므로 삽입과 삭제 시의 문제점이 모두 나타남
- 기본키나 외래 키가 아닌 애트리뷰트 값의 변경은 문제가 없음
'데이터베이스(DB)' 카테고리의 다른 글
관계형 모델 (Relational Model) (0) | 2022.10.08 |
---|---|
DBMS의 분류 (0) | 2022.10.08 |
데이터베이스 시스템과 아키텍처 (2) (0) | 2022.10.05 |
데이터베이스 시스템과 아키텍처 (1) (0) | 2022.10.05 |
데이터베이스 소개 (0) | 2022.10.03 |