티스토리 뷰
#1 기본키
기본키 PK : Primary Key는 여러 키 중에서 가장 중요한 키로서 한 테이블 내에서 중복되지 않는 값만 가질 수 있는 키이다.
기본키의 속성을 정리하면 다음과 같다.
기본키의 속성
1. 테이블에 저장된 행을 식별할 수 있는 유일한 값이어야 한다.
2. 값의 중복이 없어야 한다.
3. NULL 값을 가질 수 없다.
기본키는 중복되지 않는 유일한 값이라는 특성을 가졌기 때문에 하나 또는 여러 열의 조합으로 만들 수 있다.
예를 들어 다음과 같이 학생을 관리하는 학생 정보 테이블이 있다고 가정해 보자.
학생별로 특정 서비스를 제공하려면 각 학생을 구별할 수 있는 데이터가 필요하다.
이 경우에 학번, 아이디, 주민등록번호가 각 학생을 구별할 수 있는 데이터가 될 수 있다.
이들 중 한 열을 기본키로 지정한다.
대부분의 경우에 개인 정보 노출이 가장 적은 데이터를 선정하기 때문에 여기에서는 학번을 기본키로 지정했다.
웹 서비스를 비롯한 대부분의 프로그램은 가입 회원을 관라하기 위해 회원번호 특수한 데이터를 따로 정의하여 관리한다. 이러한 데이터는 내부 관리 목적으로 사용하므로 일반적으로 사용자에게는 공개하지 않는다.
널 NULL은 특정 열 값이 존재하지 않는다는 의미이다.
지금은 '비어 있는 값' 정도로 생각하면 된다.
#2 보조키 Alternate key
보조키는 대체키 alternate key라고도 부르며 후보키 candidate key에 속해 있는 키이다.
그리고 후보키 중에서 기본키로 지정되지 않은 열이다.
엄밀한 의미의 후보키는 기본키가 될 수 있는 모든 키를 의미한다. 즉 기본키 역시 후보키에 속한다.
이 후보키 중 기본키로 지정되지 않은 키를 보조키 또는 대체키라고 한다.
그리고 행식별이 가능한 키의 모든 조합을 의미하는 슈퍼키 super key 개념도 존재한다.
#3 외래키 Foreign Key : FK
FK키는 특정 테이블에 포함되어 있으면서 다른 테이블의 기본키로 지정된 키를 의미한다.
외래키는 외부키로도 부른다. 하지만 실우에서는 외부키나 외래키보다 포린키 foreign key라고 부르는 경우가 더 많다.
외래키는 테이블을 참조할 때 사용하는 키이다.
실무에서는 데이터베이스를 활용하여 프로그램 및 서비스를 구축할 때 테이블 개수는 많게는 몇 백, 몇 천개에 이른다.
또 하나의 테이블이 가진 열 수 또한 몇 백개를 넘나드는 일도 종종 있다.
그리고 행 수는 조금 규모가 있다 싶으면 억 단위를 웃도는게 흔한 일이다.
외래키는 데이터의 중복을 피하기 위해 테이블 사이의 관계를 규명하기 위한 필수 요소이다.
하지만 실무에서 데이터베이스를 활용하여 응용 프로그램을 만들 때 데이터의 구조 및 설계가 외래키를 사용해 너무 엄격하게 정의하면 응용 프로그램의 제작과 테스트 진행에 걸림돌이 되기도 한다.
따라서 테이블 사이의 관계에서 개념적으로 외래키가 필수인 상황일지라도 응용 프로그램 제작의 효율 및 편의를 위해 외래키를 따로 정의하지 않고, 테이블 사이의 관계를 '느슨하게' 설계하여 이를 응용 프로그램 영역에서 처리하는 경우도 종종 발생한다.
#4 복합기 Composite Key
복합키는 여러 열을 조합하여 기본키 역할을 할 수 있게 만든 키를 뜻한다.
복합키를 만들 때 적게는 두세 개, 많게는 열 개가 넘는 열을 조합하기도 한다.
왜냐하면 하나의 열만으로 행을 식별하는 것이 불가능하여 두 개 이상의 열 값을 함께 사용해야 각 행이 유일한 데이터로서 가치를 지니기 때문이다.
예를 들어 학생들의 수강 과목 데이터를 생각해 보자.
수강과목 데이터는 앞에서 살펴본 학과 코드와 마찬가지로 과목 코드 열을 가진 과목 정보 테이블로 표현할 수 있다.