💡키
데이터베이스에서 키(key)는 속성을 말한다.
관계형 DB에서 키는 특정 레코드를 구별할 때 사용하는 속성, 또는 속성의 집합이다.
아래 회원 테이블에는 총 5개의 속성이 있다. 이 속성 중에서 두 명의 사람을 구분할 수 있는 능력을 키라고 부른다.
회원 테이블에서 키는 번호가 사용될 수 있다. 이름, 주소, 취미, 나이는 키로 사용될 수 없다.
사용된 키가 또다른 테이블과 연관을 맺으면서 이때 키는 릴레이션의 관계를 만들 때에도 사용할 수 있다.
키는 각 튜플을 구분할 수 있는 유일한 도구이면서도 테이블을 연결해주는 도구로 쓰인다.
슈퍼키
슈퍼키(Super Key)는 튜플을 유일하게 식별할 수 있는 하나의 속성 또는 집합을 의미한다.
회원번호는 회원별로 회원을 식별할 수 있고, 주민번호도 유일하므로 회원을 식별할 수 있다.
하지만 이름, 주소, 핸드폰 번호로는 회원을 식별할 수 없다.
물론 핸드폰 번호는 회원을 식별할 수 있긴 하지만, 핸드폰 번호를 변경하고 수정하지 않을 경우에 다른 사람이 해당 핸드폰 번호를 사용하지 못하는 문제가 발생하므로 식별자로 사용할 수 없다.
하나의 키로만 식별할 수 있다면 단일키, 두개의 키를 가지고서 식별할 수 있는 것을 복합키, 그리고 이들을 통틀어서 슈퍼키라고 부른다.
후보키
후보키(Candidate Key)는 슈퍼키 중에 최소화 시킬 때까지 최소화 시켜서 남은 것들을 의미한다.
회원번호와 주민등록번호와 같은 것들을 나열하여 후보키라고 부른다.
기본키
식별자가 될 수 있는 여러 후보키들 중에 하나를 선택해야 하는데, 이때 선택한 것을 라고 한다.
후보키로 회원번호와 주민등록번호가 있다면 이런 여러 키들 중 하나를 식별자로 자격을 부여할 수 있는데, 이중 이중에 선택한 것을 기본키라고 부른다.
이 경우에는 더 짧은 데이터로 관리하기 쉬울 거 같은 회원번호를 보통 기본키로 설정한다.
기본키가 가져야 하는 특징 중 하나로는 변경될 수 있는 가능성이 없어야 한다는 것이다. 나중에 수정될 가능성이 있는 것들은 절대로 기본키로 설정해서는 안 된다.
기본키는 레코드와 레코드를 식별할 수 있는 고유값을 가져야 하며, Null 값을 허용하지 않는다. 모든 행이 데이터를 필수적으로 가져야 한다.
기본키의 표기
회원(회원번호, 이름, 주민번호, 주소, 핸드폰)
릴레이션 스키마를 표현할 때, 기본키는 위와 같이 밑줄을 그어 표기한다.
대리키
대리키는 원래부터 있던 데이터가 아니라 식별할 수 있는 컬럼이 마땅치 않아서 새롭게 만들어낸 것이다.
따라서 대리키는 인조키라고도 한다.
복합키를 쓰는 것보다 훨씬 관리하기 쉽게 해주기 때문에 대리키를 자주 사용하는 편이다.
대체키
대체키(Alternate key)는 기본키로 선정되지 않은 나머지 후보키를 의미한다.
외래키
테이블에서 다른 테이블의 기본키를 참조할 때, 참조하는 기본키를 외래키(Foreign Key)라고 부른다.
위 게시판 테이블에서는 회원 테이블의 회원번호가 외래키이다.