Computer Science/데이터 베이스
[데이터베이스] 관계 모델의 제약 조건 - 1(Relational Model Constraints)
바보1
2023. 10. 26. 01:26
앞의 글을 읽으시면 이해에 도움이 됩니다.
2023.10.26 - [Computer Science/데이터 베이스] - [데이터베이스] 릴레이션의 특성(Characteristics of Relation)
1. 제악 조건의 종류
- 데이터베이스 상태에서는 실제 값들에 대한 많은 제약 조건(Constraint)이 존재합니다.
- 제약 조건은 크게 세 가지로 분류됩니다.
- 데이터 모델 자체에 존재하는 제약 조건으로 본질적, 함축적 제약 조건(Inherent, Implicit Constraint)이 있습니다.
- 스키마에서 직접 표현이 가능한 제약 조건으로 스키마 기반, 명시적 제약 조건(Schema-Based, Explicit Constraint)이 있습니다.
- 스키마에서 직접 표현이 불가능한 조건으로 응용 기반, 의미적 제약 조건(Application-Based, Semantic Constraint)이 있습니다.
- 따라서 Relation State는 모든 제약 조건에 유효한 상태여야 합니다.
- 이전까지 설명했던 튜플들이 중복될 수 없다거나, 애트리뷰트들의 순서들이 중요하다는 것은 본질적 제약 조건입니다.
- 이 글에서는 스키마 기반, 명시적 제약 조건에 대해 설명하겠습니다.
- 스키마 기반 제약 조건은 도메인 제약 조건, 키 제약 조건, 널에 대한 제약 조건, 엔티티 제약 조건, 참조 무결성 제약 조건을 포함합니다.
- 이번 글에서는 하나의 릴레이션 내에서 적용되는 도메인 제약 조건과 키 제약 조건, 널에 대한 제약 조건에 대해 작성하겠습니다.
2. 도메인 제약 조건
- 도메인 제약 조건은 각각의 튜플 내에서 각각의 애트리뷰트 A의 값이 반드시 A의 도메인인 dom(A)에 속하는 원자값이어야 합니다.
- 값은 애트리뷰트가 허용된다면 NULL 값도 가능합니다.
3. 키 제약 조건
- 정의에 의하면 모든 튜플은 구별되어야 합니다. 왜냐하면 릴레이션은 튜플의 집합이기 때문에, 동일한 튜플을 가질 수 없습니다.
- 릴레이션 상태 r의 어떤 튜플이라도 서로 다른 값들을 가지는 애트리뷰트들의 부분집합이 존재하기 마련입니다.
- 그러한 부분 집합을 SK라고 한다면, 임의의 두 개의 튜플 t1과 t2는 t1[SK] != t2[SK]의 제약 조건을 성립합니다.
- 이런 애트리뷰트들의 집합 SK를 릴레이션 스키마 R의 슈퍼키(Super Key)라고 합니다.
- 슈퍼키 SK는 R의 상태 r에서 SK가 같은 값을 가지는 서로 다른 튜플이 존재하지 않는다는 유일성 제약 조건(Uniqueness Constraint)을 명시합니다.
- 그러나 슈퍼키는 중복되는 애트리뷰트들을 가질 수 있습니다. 예를 들어 {학번, 이름}의 조합은 중복되지 않지만, 사실 이름 애트리뷰트는 중복이 될 수 있습니다.
- 그러므로 이런 중복성을 갖지 않는 개념이 필요하며 이것이 키(Key)입니다.
- 릴레이션 스키마 R의 키 K는 R의 슈퍼키이고, K에서 어떤 애트리뷰트라도 빠지면 더 이상 K는 슈퍼키가 될 수 없습니다.
- 따라서 키는 다음의 두 성질을 만족합니다.
- 서로 다른 튜플은 동일한 키 애트리뷰트 값을 가질 수 없습니다. 이 Uniqueness Property는 슈퍼키에도 적용됩니다.
- 키는 최소의 슈퍼키(minimal superkey)입니다. 즉 슈퍼키 내의 어떤 애트리뷰트도 제거해도 Uniqueness Property를 만족한다면 이는 키가 아닙니다. 따라서 최소 성질은 키에는 필수적이지만, 슈퍼키에는 선택적입니다.
- 따라서 키는 슈퍼키이지만, 슈퍼키는 키가 아닙니다.
- 만약 슈퍼키가 최소라면 키가 될 수 있고, 슈퍼키가 최소가 아니라면 키가 될 수 없습니다.
- 예를 들어 대학생 릴레이션이 있을 때, {학번} 애트리뷰트는 어떤 대학생도 같은 값을 가질 수 없으므로 키가 될 수 있습니다.
- 학번을 포함하는 어떤 애트리뷰트들의 집합, 즉 {학번, 이름, 학과} 조합 또한 슈퍼키가 될 수 있습니다.
- 그러나 슈퍼키 {학번, 이름, 학과}에서 이름 혹은 학과를 없앤다 하더라도 슈퍼키가 될 수 있으므로, {학번, 이름, 학과}는 키가 될 수 없습니다. ({학번, 이름}은 튜플들 사이에 중복이 없고, {학번, 학과} 또한 튜플들 사이에 중복이 없음)
- 일반적으로 단일 애트리뷰트의 슈퍼키는 키입니다. 단일 애트리뷰트는 하나의 값을 가지기 때문입니다.
- 일반적으로 릴레이션 스키마는 하나 이상의 키를 가질 수 있습니다. 이때 각 키를 후보키(candidate key)라고 합니다.
- 예를 들어 대학생은 모두 각기 다른 학번과 전화번호, 주민번호를 가지고 있습니다.
- 이때 후보키들 중 하나를 기본키(primary key)로 지정합니다. 기본키는 튜플들을 식별할 수 있는 후보키입니다.
- PK(Primary Key)로 지정되지 않은 다른 후보키는 유일키(unique key)로 지정되며, 밑줄을 긋지 않습니다.
- 일반적으로 PK는 하나 혹은 적은 수의 애트리뷰트를 선택합니다.
4. 널에 대한 제약 조건
- 애트리뷰트에 대한 다른 제약 조건은 널 값의 허용 여부입니다.
- 예를 들어 대학생은 이름 애트리뷰트에 대해 널이 아닌 유효한 값을 가져야 한다면, 이름은 NOT NULL로 제한됩니다.
참고
경북대학교 컴퓨터학부 COMP0322-004 데이타베이스 수업
DATABASE SYSTEMS 7th / Elmasri, Navathe 저 / PEARSON / 2019년
다음 글에서는 관계 모델의 제약 조건 - 2(Relational Model Constraints)에 대해 알아보겠습니다.
2023.10.26 - [Computer Science/데이터 베이스] - [데이터베이스] 관계 모델의 제약 조건 - 2(Relational Model Constraints)
감사합니다.
지적 환영합니다.