CS/DB

[DB] 릴레이션 키

겜도리도리 2022. 3. 17. 12:24
반응형

개요

릴레이션에서 키란, 각 튜플을 고유하게 식별할 수 있는 하나 이상의 애트리뷰트들의 모임이다.

슈퍼 키, 후보 키, 기본 키, 대체 키, 외래 키가 있다.

 

슈퍼 키

한 릴레이션 내의 특정 튜플을 고유하게 식별하는 하나의 애트리뷰트 또는 애트리뷰트들의 집합이다.

튜플들을 고유하게 식별하는데 꼭 필요하지 않은 애트리뷰트들을 포함할 수 있다.

 

후보 키

각 튜플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임이다.

슈퍼 키와의 차이점은 후보 키는 최소성을 만족해야 한다는 것

후보 키도 두 개 이상의 애트리뷰트로 이루어질 수 있다. 이 경우 복합 키라고도 부른다.

ex) 수강 릴레이션의 학번-과목번호는 재수강이 없는 한 후보 키가 될 수 있다.

위 그림에서 학번, 과목번호는 같은 값이 여러 개 존재 할 수 있지만, 학번-과목번호의 애트리뷰트 집합은 고유하다.

기본 키

하나의 릴레이션에는 여러 개의 후보 키가 존재할 수 있다.

설계자 또는 DB 관리자가 이 중의 하나를 기본 키로 선정한다.

기본 키가 아닌 후보 키들은 대체 키라고 부른다.

 

기본 키 선정조건

1. 항상 고유한 값을 가지는가?

2. 확실하게 NULL 값을 가지지 않는가?

3. 값이 변경될 가능성이 적은가?

4. 가능하면 작은 정수 값 또는 문자열

5. 가능하면 복합 키는 피하기

 

자연스럽게 튜플을 대표할 수 있는 애트리뷰트가 기본 키로 선정하기에 좋다.

자연스러운 기본 키가 없을 경우 레코드 번호와 같이 인위적인 애트리뷰트를 릴레이션에 추가하기도 한다.

 

키 들의 포함 관계

외래 키

어떤 릴레이션의 기본 키를 참조하는 애트리뷰트이다.

어떤 릴레이션은 다른 릴레이션 일수도, 자기 자신일수도 있다.

관계 DB에서 릴레이션 간의 관계를 나타내기 위해 사용된다.

외래 키 애트리뷰트는 참조되는 릴레이션의 기본 키와 동일한 도메인을 가져야 한다.

외래 키는 자신이 속한 릴레이션의 기본 키 구성요소가 될 수도 있고, 되지 않을 수도 있다.

 

외래 키의 유형

1. 다른 릴레이션의 기본 키를 참조하는 외래 키

EMPLOYEE 릴레이션의 DNO 애트리뷰트는 다른 릴레이션 DEPARTMENT의 기본 키인 DEPTNO을 참조한다.

 

2. 자체 릴레이션의 기본 키를 참조하는 외래 키

각 사원의 관리자가 누군지를 표시하는 MANAGER 애트리뷰트가 존재한다.

이 애트리뷰트는 자체 릴레이션의 기본 키인 EMPNO 애트리뷰트를 참조한다.

EMPNO 3011 이수민의 MANAGER 값에는 NULL값이 들어있는 것을 확인할 수 있다.

 

3. 기본 키의 구성요소가 되는 외래 키

학번, 과목번호는 다른 릴레이션의 기본 키를 참조하는 모두 외래 키이다.

학번, 과목번호는 각각 애트리뷰트 하나로는 기본 키가 될 수 없다.

하지만 (학번, 과목번호)의 애트리뷰트 집합은 앞서 말했듯이 기본 키가 될 수 있다.

즉, 학번과 과목번호(각각 외래 키)는 수강 릴레이션의 기본 키의 구성요소가 된다.

반응형

'CS > DB' 카테고리의 다른 글

[SQL] Table 생성 및 수정, 삭제  (0) 2022.04.25
[SQL] 내포된 SQL  (0) 2022.04.24
[DB] 연산자  (0) 2022.03.23
[DB] 무결성 제약 조건  (0) 2022.03.18
[DB] 트랜잭션  (0) 2022.03.15