본문 바로가기

전공/데이터베이스

[데이터베이스] 관계형 모델 - (2)

 

키(Key)


https://kr.freepik.com/vectors/design by freepik

 

- 키(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)라고 한다.

 

 

그림 1

 

 

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)이라고 한다.

 

 

그림 2

 

 

 

무결성 제약 조건(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)


 

Photo by Radowan Nakif Rehan on Unsplash

 

 

- 질의어(query language)사용자가 데이터베이스로부터 정보를 요청할 때 사용하는 언어이다.

 

- 순수(pure) 질의어의 종류:

절차 지향 언어(procedural language) - Relational algebra

비절차 지향 언어(non-procedural language) - Tuple relational calculus, Domain relational calculus