Q. 왜 키가 필요한가?
- 데이터를 저장하도록 요구된 테이블의 숫자가 크고 테이블들은 서로 연관되어 있다.
- 또한 테이블들은 많은 데이터를 저장한다. 일반적으로 테이블은 정렬되지 않고 정리되지 않은 상태로 저장된 수천 개의 레코드로 확장된다.
- 이러한 데이터 셋에서 특정 레코드를 가져오려면 몇 가지 조건을 검증해야한다. 하지만 중복 데이터가 존재하고 특정 조건에 적용하여 데이터를 가져올 때마다 잘못된 데이터가 생성된다.
- 데이터를 가져오기 위해 얼마나 많은 시도를 해야하는가?
- 키는 테이블의 모든 데이터 행을 쉽게 식별할 수 있도록 정의된다.
유일성과 최소성
- 유일성 : 하나의 키 값에 하나의 튜플만 유일하게 식별한다.
- 최소성 : 꼭 필요한 속성으로만 구성한다.
후보키(Candidate Key)
- 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 하나의 릴레이션에 중복 튜플이 존재하면 안되기 때문에 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다.
- 유일성과 최소성을 만족한다.
- 후보키는 절대 Null이거나 empty되면 안된다.
기본키(Primary Key)
- 기본키가 되기에 가장 적합한 후보키이다.
- 테이블 안 각각의 정보를 고유하게 식별할 수 있는 키이다.
슈퍼키(Super Key)
- 테이블 내의 각 레코드를 고유하게 식별할 수 있는 테이블 내의 속성집합
- 후보키의 상위 집합
- 유일성을 만족하지만 최소성은 만족하지 못한다.
외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조한다.
- 릴레이션 간 참조관계를 표현한다
- 외래키는 참조 릴레이션의 기본키에 없는 값은 입력할 수 없다.
출처
https://www.educative.io/answers/what-is-a-key-in-database-management