게임 개발자를 향해

관계형 데이터베이스의 제약 조건 - 키(Key) 본문

정보처리기사/2. 데이터 입출력 구현

관계형 데이터베이스의 제약 조건 - 키(Key)

뿌단이 2022. 9. 5. 16:23

1. 키(Key)

키는 데이터베이스에서 조건에 만족하는 튜을 찾거나 순서대로 정렬할 때 기준이 되는 속성을 말한다.

 

<키의 종류>

  • 슈퍼키(Super Key)
  • 후보키(Candidate Key)
  • 기본키(Primary Key)
  • 대체키(Alternate Key)
  • 외래키(Foreign Key)

 

조건 설명
유일성
(Unique)
하나의 키값으로 하나의 튜플만을 유일하게 식별할 수 있어야 한다.
최소성
(Minimality)
키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야함

 

<여기서 Tip!>

같은 값을 가질 수 있는 속성은 키가 될 수 없다. 튜플마다 유일하게 가질 수 있는 값이어야 튜플을 식별할 수 있다.

이것이 바로 유일성이다.

 

유일성이 만족하지 않은 속성 : 나이(같은나이), 이름(동명이인), 생년월일(같은생일) 등.

유일성을 만족하는 속성 : 회원번호, 주민번호 등.

 

최소성은 이해하기 힘들 것이다.사실 키는 두 개 이상의 속성으로도 만들 수 있다.예를들어 [주민번호], [회원번호] 두 속성을 사용하여 튜플을 구분할 수도 있다.

이처럼 두 개 이상의 속성들을 묶은 키도 키에 포함된다.

하지만 주민번호가 같은 사람이나 회원번호가 같은 사람은 없기 때문에 여기서 둘 중 하나만 키로 사용해도 문제가 없다.

 

 

 

최소성이 만족하지 않은 속성 : ( [회원번호], [주민번호] )

최소성이 만족하는 속성 : 회원번호, 주민번호

 

한마디로 튜플을 식별하는데는 최소의 속성을 사용하여 키를 만들라는 의미이다.

 

 

 

<슈퍼키(Super Key)>

  • 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키를 말한다.
  • 속성들 중 유일성을 만족하면 전부 슈퍼키이다.
  • 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다.

 

 

<후보키(Candidate Key)>

  • 후보키는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합이다.
  • 기본키로 사용할 수 있는 속성들을 말한다.

 

 

<기본키(Primary Key)>

  • 기본키는 후보키 중에서 최종 선정된 키이다.
  • 기본키는 NULL 값을 가질 수 없다. (기본키 값이 없으면 튜플을 구분할 수 없기 때문이다.)

 

 

<대체키(Alternate Key)>

  • 대체키는 후보키 중에서 기본키로 선정되지 못한 키이다.

 

 

<외래키(Forign Key)>

  • 외래키는 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미한다.
  • 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없다.

 

<여기서 Tip!>

아래 표를 예를 들어 설명하겠다.

 

<등록상품 릴레이션>

상품명 상품코드 가격
감자칩 00F3 1,500
크림빵 91AC 1,700
초코우유 C3B6 1,200

 

<거래내역 릴레이션>

상품코드 거래날짜 거래코드 구매자
00F3 2022/09/05 167954F3 김뿌단
91AC 2022/09/05 543784AB 김뿌단
C3B6 2022/09/05 689425C3 김뿌단

위 키를보면 등록상품 릴레이션과 거래내역 릴레이션에 같은 속성이 존재한다.

등록상품 릴레이션에 기본키인 상품코드를 거래내역 릴레이션이 외래키로 가져온것이다.

결론적으로 거래내역의 상품코드는 외래키이다.

이런 외래키를 이용하여 릴레이션의 연관성을 표현할 수 있다.

그리고 참조한 등록상품 릴레이션의 상품코드에 없는 값은 외래키에 입력할 수 없다. 

 

위에서 설명한 키를 벤다이어그램으로 나타내면 아래와 같다.

이미지 출처: http://wiki.hash.kr/index.php/%EB%8C%80%EC%B2%B4%ED%82%A4

 

 

 

 

회원번호 나이 이름 주민번호
07FC 20 김뿌단 1038543
A049 19 김춘자 2023665

 

속성이 "유일성"만 만족해도 슈퍼키가 된다.

그리고 속성이 2개 이상여도 투플을 구분할 수 있으면 전부 키가 될 수 있다.

그럼 만약 위 릴레이션에서 슈퍼키는?

 

<슈퍼키 종류>

1. [회원번호]

2. [주민번호]

3. [ [회원번호], [주민번호] ]

4.  [ [회원번호], [이름] ]

5.  [ [회원번호], [주민번호], [나이] ]

...

 

등등이 있겠다.

다적으면 너무 많다.

그중 "최소성"을 만족한 것이 후보키이다.

 

<후보키 종류>

1. [회원번호]

2. [주민번호]

 

이중 하나는 기본키가 되고 나머지는 대체키로 분류하는 것이다.

 

 

 

읽어주셔서 감사합니다!

정처기 화이팅!