subsay
관계 데이터베이스 모델과 언어 - 관계형 데이터베이스의 제약 조건 본문
제약 조건이란 데이터베이스에 저장되는 데이터의 정확성을 보장하기 위하여 키를 이용하여 입력되는 데이터에 제한을 주는 것으로 개체 무결성 제약, 참조 무결성 제약 등이 해당 된다.
1. 키(Key)의 개념 및 종류
- 키는 데이터베이스에서 조건에 만족하는 튜플을 참거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 애트리뷰트를 말한다.
<학생> 릴레이션
학번 |
주민번호 |
성명 |
<수강> 릴레이션
학번 |
과목명 |
후보키(Candidate Key)
- 후보키는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말한다.
- 하나의 릴레이션내에서는 중복된 튜플들이 있을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다.
- 후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다.
> 유일성(Unique) : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 이썽야 한다.
> 최소성(Minimality) : 모든 레코드들을 유일하게 식별하는 데 꼭 필요한 속성만구성되어야 한다.
예) <학생> 릴레이션에서 '학번' 이나 '주민번호'는 다른 레코드를 유일하게 구별할 수 있는 기본키로 사용할 수 있으므로 후보키이다.
기본기(Primary Key)
- 기본키는 후보키 중에서 선택한 주키(Main Key)이다.
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다.
- Null 값*을 가질 수 없다.
- 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.
예) <학생> 릴레이션에서는 '학번' 이나 '주민번호'가 기본키가 될 수 있고, <수강> 릴레이션에서는 '학번' + '과목명'으로 조합해야 기본키가 만들어진다.
예) '학번'이 <학생> 릴레이션의 기본키로 정의되면 이미 입력된 '1001'은 다른 튜플의 '학번' 속성의 값으로 입력할 수 없다
대체키(Alternate Key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말한다.
- 보조키라고도 한다.
예) <학생> 릴레이션에서 '학번'을 기본키로 정의하면 '주민번호'는 대체키가 된다.
슈퍼키(Super key)
- 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합을 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다.
- 슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성*은 만족 시키지 못한다.
예) <학생> 릴레이션에서는 '학번', '주민번호', '학번' + '주민번호', '주민번호' + '성명', '학번' + '주민번호' + '성명' 등으로 슈퍼키를 구성할 수 있다.
외래키(Foreign Key)
- 관계(Relationship)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성을 외래키라고 한다.
- 외래키는 참조되는 릴레이션*의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구이다.
- 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없다.
예) <수강> 릴레이션이 <학생> 릴레이션을 참조하고 있으므로 <학생> 릴레이션의 '학번'은 기본키이고, <수강> 릴레이션의 '학번'은 외래키이다.
예) <수강> 릴레이션의 '학번'에는 <학생> 릴레이션의 '학번'에 없는 값은 입력할 수 없다.
2. 무결성
개체 무결성
- 릴레이션에서 기본키를 구성하는 속성은 널(NULL) 값이나 중복값을 가질 수 없다.
예 <학생> 릴레이션에서 '학번'이 기본키로 정의되면 튜플을 추가할 때 '주민번호'나 '성명' 필드에는 값을 입력하지 않아도 되지만 '학번' 속성에는 반드시 값을 입력해야 한다. 또한 '학번' 속성에는 이미 한 번 입력 한 속성값을 중복하여 입력할 수 없다
참조 무결성
- 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다. 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
- 외래키와 참조하려는 테이블의 기본키는 도메인과 속성 개수가 같아야 한다.
예) <수강> 릴레이션의 '학번' 속성에는 <학생> 릴레이션의 '학번' 속성에 없는 값은 입력할 수 없다.
예) <수강> 릴레이션의 '학번'과 <학생> 릴레이션의 '학번' 속성에는 같은 종류의 데이터가 입력되어 있어야하며, <학생> 릴레이션의 기본키가 '학번' + '이름' 이었다면 <수강> 릴레이션의 외래키도 '학번' + '이름'으로 구성되어야 한다.
*널 값(NULL Value)
- 데이터베이스에서 아직 알려지지 않거나 모르는 값으로서 '해당 없음' 등의 이유로 정보 부재를 나타내기 위해 사용하는, 이론적으로 아무것도 없는 특수한 데이터를 말합니다.
*최소성
- '학번'+'주민번호'를 사용하여 슈퍼키를 만들면 다른 튜플들과 구분 할 수 있는 유일성은 만족하지만, '학번'이나 '주민번호' 하나만 가지고도 다른 튜플들을 구분할 수 있으므로 최소성은 만족시키지 못합니다.
*참조 릴레이션
- 외래키를 포함하는 릴레이션이 참조하는 릴레이션이고, 대응되는 기본키를 포함하는 릴레이션이 참조릴레이션입니다. 여기서는 <수강> 릴레이션이 참조하는 릴레이션이고, <학생> 릴레이션이 참조 릴레이션입니다.
'정보처리 기사' 카테고리의 다른 글
관계 데이터베이스 모델과 언어 - 정규화(Normalization) (0) | 2017.09.27 |
---|---|
관계 데이터베이스 모델과 언어 - 관계대수 및 관계해석 (0) | 2017.09.27 |
관계 데이터베이스 모델과 언어 - 관계형 데이터베이스의 구조 (0) | 2017.09.26 |
데이터 모델링 및 설계 - 데이터베이스 설계 (0) | 2017.09.25 |
데이터 모델링 및 설계 - 망(네트워크)형 데이터 모델 (0) | 2017.09.25 |