키(Key)
- 키(Key)는 주어진 릴레이션 내에서 특정 튜플을 유일하게 식별할 수 있는 기준이 되는 속성(attribute)들의 집합이다. (이때, 릴레이션 내에는 중복되는 튜플이 존재하지 않는다.)
- 키(Key)의 종류
1) 수퍼 키(superkey):
한 릴레이션에서 그 튜플을 유일하게 식별할 수 있도록 해주는 하나 혹은 그 이상의 속성들의 집합이다.
예시)
그림 1에서 가능한 모든 수퍼 키(superkey)는 {ID}, {name, street}, {ID, name}, {ID, street}, {ID, city}, {ID, name, street}, {ID, street, city}, {ID, name, city}, {name, street, city}, {ID, name, street, city}로, 총 11개이다.
2) 후보 키(candidate key):
최소성을 만족하는 수퍼 키(superkey)를 후보 키(candidate key)라고 한다.
최소성을 만족한다는 것은 수퍼 키(superkey)의 부분집합이 수퍼 키(superkey)인 경우가 존재하지 않는 것을 의미한다.
예시)
위에서 구한 수퍼 키(superkey) 중 하나인 {ID, name}을 살펴보면,
{ID, name}의 진부분집합인 {ID}가 수퍼 키(superkey)이므로 {ID, name}은 후보 키(candidate key)가 아니라는 것을 알 수 있다.
위에서 구한 수퍼 키 중 후보 키는 {ID}, {name, street}, {name, city}로, 총 3개이다.
3) 주 키(primary key):
릴레이션 내에서 튜플을 구별하기 위한 수단으로 데이터베이스 설계자에 의해 선택된 후보 키(candidate key)를 주 키(primary key)라고 한다.
4) 외래 키(foreign key):
릴레이션 스키마 r1의 속성(attribute) A와 다른 릴레이션 스키마 r2의 주 키 B 사이의 외래 키 제약 조건(foreign key constraint)은 모든 데이터베이스 인스턴스에 대해서 r1에 존재하는 각 튜플의 A 값이 r2에 있는 어떤 튜플의 B 값으로 반드시 나와야 한다는 것을 의미한다.
이때, 속성(attribute) 집합 A를 r1으로부터 r2를 참조하는 외래 키(foreign key)라고 한다.
예시)
그림 2에서 account 릴레이션의 customer_name은 customer 릴레이션의 주 키(primary key) customer_name을 참조하는 외래 키(foreign key)이다.
이때, account 릴레이션은 참조하는 릴레이션(referencing relation)이라고 하고, customer 릴레이션은 참조된 릴레이션(referenced relation)이라고 한다.
무결성 제약 조건(Integrity constraints)
1. 개체 무결성(entity integrity):
릴레이션의 주 키(primary key) 값으로 null 값이나 중복된 값을 가질 수 없다.
2. 참조 무결성(referential integrity):
다른 릴레이션을 참조하는 한 릴레이션의 튜플이 참조된 릴레이션의 기존 튜플을 참조해야 한다. 이를 통해 두 릴레이션 사이에서 일관성(consistency)을 유지할 수 있다.
만약 한 relation의 튜플을 삭제하거나 수정하기 위해서는 그 튜플을 참조하고 있는 다른 relation의 튜플에 조치를 취해야 한다.
3. 영역 무결성(domain integrity):
속성(attribute) 값들이 해당하는 속성(attribute)의 type과 restriction을 따라야 한다.
(데이터 타입, 길이, default value, null 여부)
4. 사용자 정의 무결성(user defined integrity):
속성(attribute) 값들이 사용자가 정의한 제약 조건을 따라야 한다.
관계형 질의어(Relational Query Languages)
- 질의어(query language)는 사용자가 데이터베이스로부터 정보를 요청할 때 사용하는 언어이다.
- 순수(pure) 질의어의 종류:
절차 지향 언어(procedural language) - Relational algebra
비절차 지향 언어(non-procedural language) - Tuple relational calculus, Domain relational calculus
'전공 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] SQL - (2) (0) | 2021.10.19 |
---|---|
[데이터베이스] SQL - (1) (0) | 2021.10.18 |
[데이터베이스] 관계형 모델 - (4) (0) | 2021.09.22 |
[데이터베이스] 관계형 모델 - (3) (0) | 2021.09.16 |
[데이터베이스] 관계형 모델 - (1) (0) | 2021.09.13 |