Key
1 Key
- 키(key)는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 속성을 말한다.
- 키의 종류로는 기본키(Priamry), 후보키(Candidate Key), 대체키(Alternate Key), 수퍼키(Super Key), 외래키(Foreign Key)가 있다.
2 후보키(Candidate key)
- 후보키는 기본키가 될 수 있는 후보들이다
- 후보키는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합이다
- 유일성
- 키값으로 하나의 튜플을 유일하게 구별할 수 있어야한다.
- 최소성
- 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성만으로 구성되어 있어야 한다.
- 즉 하나의 속성이 없어도 유일성을 만족한다면 이 속성은 제거해야한다.
- 수퍼키 중에서 최소성을 만족하는 것이 후보키가 된다.
- 후보키가 되기 위해 만족해야 하는 유일성과 최소성의 특성은 새로운 튜플이 삽입되거나 기존 튜플의 속성값이 바뀌어도 유지되어야 한다.
후보키 참고
3 기본키(Primary Key)
- 주 키 또는 프라이머리 키라고 한다.
- 후보키 중에서 특별히 선정된 키로 중복된 값을 가질 수 없으며, 후보키의 성질을 갖는다.
- 즉, 유일성과 최소성을 가지며 튜플을 식별하기 위해 반드시 필요한 키이다.
- 기본키는 Null 값을 가질 수 없기 때문에 튜플에서 기본 키로 설정된 속성에 Null 값이 있어서는 안 된다.
- 테이블당 하나만 만들 수 있다
기본키 선정 팁
- 속성 값이 변경될 가능성이 높은 속성은 기본키로 선정하지 않는게 좋다
- 가능하면 작은 정수 값이나 짧은 문자열을 가지는 속성을 기본키로 선정하는게 좋은데 많은 데이터 중 빠르게 검색하기 위함이다
- 복합 기본키는 피하는 것이 좋으며 기본키가 없는 테이블이 규칙에 어긋나는 것은 아니지만 모든 테이블에 기본키를 두는 것이 좋다.
- 테이블에 기본키가 없으면 반복적이고 일관성이 없는 데이터들이 쌓여 자신이 원하는 데이터를 추출하기 위해 명령을 내렸을 때 이를 수행하는 속도가 느릴 수 있고 다양한 문제를 일을킬 가능성이 있기 때문이다.
기본키 참고
4 외래키(Foreign Key)
- 외래키란 하나(또는 여러개)의 다른 릴레이션의 기본키 필드를 참조하는 데이터의 참조 무결성을 확인하기 위해 사용되는 키를 의미한다.
- 외래키는 한 릴레이션을 다른 릴레이션과 연결해주는 역할을 한다.
- 즉, 외래키는 하나의 릴레이션을 다른 릴레이션에 의존하게 만든다.
- 외래키를 설정할 때, 참조되는 릴레이션의 필드는 반드시 UNIQUE나 PRIMARY KEY 제약 조건이 설정되어 있어야 한다.
외래키 특징
- 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 한다.
- 참조되는 값이 변경되면 참조하는 값도 변경된다
- NULL값과 중복 값이 허용된다
- 자기 자신의 기본키(PK)를 참조하는 외래키도 가능하다.
- 외래키가 기본키의 일부가 될 수 있다.
외래키 참고
5 슈퍼키(Super key)
- 릴레이션에 존재하는 필드들의 부분집합으로서, 유일성을 만족해야 한다.
- 후보키와의 차이점으로 유일성과 최소성이 있는데, 수퍼키는 유일성은 만족하지만, 최소성을 만족하지 못한다.
슈퍼키 참고