1. 키 (Key) 이란?
ㅇ 다른 원소와 구별할 수 있는 요소
ㅇ [검색 및 정렬 알고리즘] ☞ `인덱싱(Indexing)` 참조
- 자료의 검색,정렬 등에 기준이 되는 요소(속성,값,필드)
ㅇ [암호학] ☞ `암호 키(Encryption Key)` 참조
- 암호 알고리즘 수행시 주어지는 값
. 즉, 평문을 변형시키는 추가적인 암호 정보
ㅇ [관계형 DB] ☞ 관계(Relation), 튜플(Tuple) 참조
- 릴레이션 내 튜플을 구별할 수 있는 속성 모음 ☞ 아래. 2.,3.항 참조
2. [데이터베이스] 키(Key) 종류
ㅇ 유일성,최소성에 따라 키가 될 수 있음
- 후보키 (candidate key) : 유일하고도 최소성을 만족하는 속성 모음
- 슈퍼키 (super key) : 유일하지만 최소성을 만족하지 않는 속성 모음
. 결국, 후보키들의 다양한 조합(슈퍼 집합)이 슈퍼키가 됨
ㅇ 기본키 (primary key) : DB 설계자에 의해 직접 선택된 하나의 후보키
- 개체를 고유하게 식별할 수 있는 속성 ☞ 아래 3.항 참조
. 유일해야 함 (즉, 중복 허용 않음)
. Null 값 허용 않음
- 기본키와 관련된 키
. 대체키 (alternate key) : 2 이상의 후보키 중 기본키를 제외한 나머지 후보키들
. 외래키 (foreign key) : 다른 릴레이션(테이블)의 기본키를 갖게되는 키
.. 즉, 다른 테이블의 기본키 값과 대응되는 키
.. 어느 한 테이블(부모 테이블)의 기본키를 다른 테이블(자식 테이블)의 외래키로 사용
.. 통상, 부모 테이블의 기본 키와 `1:多 관계`를 갖게 됨 ☞ `참조 무결성` 참조
ㅇ 보조키 (secondary key) : 중복 식별을 허용하는 키 (다양하고 복잡한 유형 가능)
- 키워드,핵심어,주제어 라고도 함 ☞ `검색엔진` 참조
ㅇ 인덱스 키 (index key)
- 특정 내용을 찾기 쉽도록 인덱싱을 한 키
- 인덱싱 알고리즘 例) B-Tree 인덱스, Hash 인덱스, 비트맵 인덱스 등
- 인덱스 활용시 고려사항 : 카디널리티,선택률
* 위에서, 기본키는 인덱싱이 자동으로 걸림
3. [데이터베이스] 좋은 `기본 키 (primary key)`의 조건
ㅇ 유일한 값을 갖는 칼럼이어야 함
ㅇ 널 값을 가지면 안됨
ㅇ 값 갱신/수정이 필요없는 안정적인 값이어야 함
ㅇ 의미를 갖지 않고, 가능한 한 단순한 형태이어야 함
- 즉, 정수형이 좋으며, 다중 칼럼 보다는 단일 칼럼이 좋음
※ 통상, RDBMS 자체 기능으로, 자동 생성되는 숫자 값으로 하는 것이 바람직함
- 例) DB2,SQL Server,Oracle 등에서는 IDENTIFY,
MS 엑세스에서는 AutoNumber,
MySQL에서는 AUTO_INCREMENT,
PostgreSQL에서는 serial 칼럼 등