[DB] Key

수민·2024년 6월 27일
0

데이터베이스

목록 보기
3/4
post-thumbnail

1. Key의 개념

수많은 데이터들이 존재하는 데이터베이스에서 내가 원하는 조건의 데이터를 찾아서 검색이나 변경, 정렬을 해야합니다. 데이터베이스의 Key는 이 때 내가 원하는 데이터를 찾기 위한 기준이 되는 속성입니다.

키의 종류에는 기본키, 후보키, 대체키, 슈퍼키, 외래키 등이 있습니다.

2. Key의 종류

기본키 (Primary Key)

고유한 값을 가진 키입니다.

수많은 데이터 속에서 유일한 키. 해당 키로 검색하면 무조건 하나만 나와야 하는 키입니다.

현실에서의 예로는 주민등록번호가 될 수 있습니다.

대한민국에서 주민등록번호만 있으면 저를 바로 찾을 수 있으니까요.

기본키의 특징

  • 항상 고유한 값을 가져야 하며, Null이 될 수 없습니다.
  • 변경될 가능성이 적어야 합니다.
  • 테이블에 하나만 존재합니다.

후보키 (Candidate Key)

후보키는 기본키가 될 수 있는 키들의 집합입니다. 기본키는 후보키의 부분집합이라고 할 수 있겠습니다.

후보키들 중 하나가 선택되면 기본키가 됩니다.

주민등록번호가 아니더라도 고유한 것들이 있죠. 전화번호, 이메일 등이 될 수 있습니다.

후보키의 특징

  • 항상 고유한 값을 가져야 하고, Null이 될 수 없습니다.
  • 테이블에 여러 개가 있을 수 있습니다.
  • 또한, 데이터를 식별하는데 꼭 필요한 정보로만 구성되어야 합니다.

대체키 (= 보조키, Alternate Key)

대체키는 후보키가 두 개 이상일 때, 기본키를 제외한 나머지 후보키입니다.

후보키가 주민등록번호, 전화번호, 이메일로 구성되어 있고, 이 중 주민등록번호가 기본키로 설정되어있다면? 전화번호이메일이 대체키가 됩니다. 보조키라고 부르기도 합니다.

당연히 대체키 또한 후보키의 부분집합이 됩니다.

슈퍼키(Super Key)

각 행을 유일하게 식별할 수 있는 속성입니다.

대한민국에서 주민등록번호, 전화번호, 이메일을 이용하면 저를 찾을 수 있습니다.

그런데, 출신 대학교에서 제 학번을 가진 사람을 찾으면 무조건 제가 나오죠.

대학교 이름과 학번 각각만 존재한다면 저를 찾을 수 없지만요.

그러면 대학교 이름 + 학번 자체가 하나의 슈퍼키가 될 수 있습니다.

여기에 무슨 정보를 더해도 저를를 찾을 수 있습니다. 학과, 성별, 나이 등등… 이 모든 조합이 슈퍼키가 될 수 있습니다. 저를 찾을 수만 있다면요.

거주지+나이+이름+성별+학교+학번+학과 처럼 정보들을 죄다 더한 값도 슈퍼키가 될 수 있습니다.

근데 그렇다면, 모든 후보키는 슈퍼키가 되겠죠.

슈퍼키는 모두 후보키가 될까요?

아니요. 모든 슈퍼키는 후보키가 되지는 않습니다.

여기서는 후보키의 최소성의 개념이 들어갑니다.

최소성이란 불필요한 속성을 포함하면 안된다는 개념입니다.

학교+학번+학과 라는 슈퍼키가 있습니다. 이 키는 후보키가 될 수 없습니다.

학과 속성을 제외한 학교+학번만으로도 저를 식별할 수 있거든요. 최소성을 만족하지 않는다는 증거입니다.

외래키 (Foreign Key)

대학교의 학과 테이블 학생 테이블이 있다고 합시다.

학과 테이블의 기본키는 학과번호입니다. 학생 테이블에는 학생에 대한 정보가 들어있고,

학생 테이블의 기본키는 학번입니다. 이외 다른 정보로는 학과정보, 성적, 학년 등이 있겠죠

이 두 테이블의 관계를 이어주기 위해 학생 테이블에 학과 테이블의 학과번호 필드를 기리키게 합니다.

이러면 학생 테이블에서 학생의 학과 정보를 참조할 때 학과 테이블의 학과번호 정보를 참조하게 됩니다.

이러한 경우가 외래키입니다.

유관한 두 개 이상의 테이블에 대해 데이터 일관성을 보장시켜줍니다.


DB 세상에 키는 참 많네요.

profile
우하하

0개의 댓글