Search
Duplicate

키(key) 정리

생성일
2023/02/21 08:02
태그
DB

키(key) 정리

키 (key)

키는 데이터베이스에서 조건에 만족하는 관계의 행을 찾거나 순서대로 정렬할 때, 다른 행과 구별할 수 있는 유리한 기준이 되는 속성의 집합이다

슈퍼키 (super key)

테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합이다.
슈퍼키는 유일성만 만족하면 슈퍼키가 될 수 있다.
유일성 : 하나의 키로 특정 행을 바로 찾아낼 수 있는 고유한 데이터 속성을 말한다. 예를들어 전국에서 나를 구별할 수 있는 유일하고 고유한 속성은 주민번호이다. 주민번호는 전국민이 모두 겹치지 않아 유일하고 고유한 고유한 구별 방법으로 쓰인다.

후보키 (candidate key)

테이블에서 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합이다.
후보키는 기본키가 될 수 있는 후보들이며, 유일성과 최소성을 동시에 만족해야한다.
최소성 : 키를 구성하는 속성들 중 가장 최소로 필요한 속성들로만 키를 구성하는 성질을 말한다.

복합키 (composite key)

하나의 속성으로는 기본키가 될 수 없는 경우는 둘 이상의 컬럼을 묶어 식별자로 정의해야 하는데, 이를 복합키라고 한다.
→ 이슈는 복합키 중에 어떤 컬럼을 먼저 둘 것인가 하는 것이다
→ 컬럼을 기본키로 정의하게 되면, 기본적으로 해당 컬럼에 유니크한 클러스터드 인덱스가 정의되어지며, 이럴 경우 먼저 정의한 컬럼을 기준으로 인덱스가 생성되기 때문에, 복합키 중에서 주로 조회의 조건으로 사용되는 컬럼을 먼저 정의하는 것이 성능 향상을 위해 도움이 된다.

기본키 (primary key)

후보키들 중에서 하나들 선택한 키로 최소성과 유일성을 만족하는 속성이다.
테이블에서 기본키는 오직 1개만 지정할 수 있다.
기본키는 테이블 안에서 유일하게 각 행들을 구별할 수 있도록 쓰인다.
기본키는 NULL 값을 절대 가질 수 없고, 중복된 값을 가질 수도 없다.
각 행들을 구별하려면 값이 없어선 안되고, 중복되어서도 안되기 때문이다.

대체키 (alternate key)

후보키가 두 개 이상일 경우, 그 중에서 어느 하나를 기본키로 지정하고 남은 후보키들을 대체키 라고 한다.
대체키는 기본키로 선정되지 않은 후보키이다.

대리키 (surrogate key)

대리키는 식별자가 너무 길거나, 여러 개의 속성으로 구성되어 있는 경우 인위적으로 추가하는 식별자로, 인공키라고도 한다.
한 실체에서 식별자가 여러 속성으로 구성된 경우는 데이터를 수정하거나 검색을 하는데 수행 속도가 떨어질 수 있다.
실체간에 관계가 생길 때, 부모의 기본키가 자식의 외부키로 공유 되는데, 외부키가 단일해지기 때문에 조인의 속도를 향상시키기 위해 많이 사용한다.

외래키 (foreign key)

테이블이 다른 테이블의 데이터를 참조하여 테이블간의 관계를 연결하는 것이다. 데이터를 좀 더 조회하기 쉽다.
다른 테이블의 데이터를 참조할 때, 없는 값을 참조할 수 없도록 제약을 주는 것이다.
참조될 테이블(A)이 먼저 만들어지고, 참조하는 테이블(B)에 값이 입력되어야 한다.
이때, B에 입력된 A의 값은 A에서 기본키로 설정되어 있어야 한다.
참조되는 부모 테이블이 먼저 생성된 뒤, 데이터를 넣고, 참조하는 자식 테이블이 다음에 생겨야한다.
부모 테이블은 먼저 삭제될 수 없다 → 부모 테이블을 참조하는데, 부모 테이블이 삭제되면 자식 테이블은 참조하는 것이 없어지기 때문에 외래키 오류가 생긴다.
외래키 관계에서 부모 테이블을 삭제하려면, 자식 테이블 먼저 삭제한 후 부모 테이블을 삭제하여야 한다.

자연키 (natural key) VS 인조키 (artificial key)

자연키

기본키만을 위한 데이터가 아니라 비즈니스 모델에서 자연스레 나오는 속성으로 기본키를 정하는 것
ex) email, ID 등

인조키

비즈니스 모델과는 달리 키를 위한 데이터
ex) Auto Increment 등등

reference