[데이터베이스] 키(Key)에 대한 정리
ERD를 작성하면서 만들어진 ERD를 볼 때는 크게 신경 안 쓰고 넘어갔던 부분이었지만,
ERD를 만들다 보니 키 설정에 있어서 정리가 되어 있으면 좋겠다고 생각되어 필요한 부분만 정리하여 적어 보려고 합니다.
키(Key)
- 무언가를 식별하는 고유한 식별자(Identifier) 기능을 한다.
- 데이터베이스에서 조건에 만족하는 관계의 행을 찾거나 순서대로 정렬할 때 다른 행과 구별할 수 있는 유리한 기준이 되는 속성의 집합니다.
- 키의 종류 : 기본키, 슈퍼키, 후보키, 대체키, 외래키 등이 있다.
수퍼키(Super key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 나타나지 않는다.
ex) 고객번호 +주민번호 + 이름으로 슈퍼키 구성 -> 이름은 단독으로 사용 못한다.
후보키(Candidate Key)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말한다.
- 하나의 릴레이션내에서는 중복된 튜플들이 있을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다.
기본키(Primary Key)
- 후보키들 중에서 하나를 선택한 키로 최소성과 유일성을 만족하는 속성이다.
- 테이블에서 기본키는 오직 1개만 지정할 수 있다.
- 기본키는 테이블 안에서 유일하게 각 행들을 구별할 수 있도록 쓰인다.
- 기본키는 NULL 값을 절대 가질수 없고, 중복된 값을 가질 수 없다.
- 릴레이션 스키마를 표현할 때 기본키는 속성아래 밑줄을 그어 표시한다.
ex) 고객(고객번호, 이름, 주민번호, 주소, 핸드폰)
외래키(Foreign Key)
- 다른 테이블의 데이터를 참조하여 테이블간의 관계를 연결을 도와준다.
- 다른 테이블의 데이터를 참조할 때 없는 값을 참조할 수 없도록 제약을 준다.
- 참조 될 테이블(A)이 먼저 만들어지고 참조하는 테이블(B)에 값이 입력되어야 한다.
- 이때, 참조될(A) 열의 값은 참조될(A) 테이블에서 기본키(Primary Key)로 설정되어 있어야한다.
- 외래키는 참조되는 테이블의 기본키와 동일한 키 속성을 가진다.
- 참조되는 부모테이블이 먼저 생성된 뒤 데이터를 넣고, 참조하는 자식 테이블이 다음에 생겨야된다.
- 부모 테이블 먼저 삭제될 수 없다. 왜냐하면 부모테이블을 참조하는데 부모테이블이 삭제되면 자식테이블은 참조하는 것이 없어지기 때문에 외래키 오류가 생긴다.
- 외래키 관계에서 부모테이블을 삭제하려면 자식테이블 먼저 삭제한 후 부모테이블을 삭제해야한다.
대체키(Alternate Key)
- 후보키가 두개 이상일 경우 그 중에서 어느 하나를 기본키로 지정하고 남은 후보키들을 대체키라고 한다.
- 대체키는 후보키중 기본키를 제외한 나머지 키이다.
ex) 고객번호를 기본키로 하면 주민번호는 대체키이다.