위키득계정 ↗
기술

기본 키

기본 키기술
영문명
Primary key
주요 역할
행의 고유한 식별
구성
단일 열 또는 여러 열의 조합
기본 조건
고유성과 NULL 불허
기본 키는 관계형 데이터베이스의 테이블에서 각 행을 구분하기 위해 대표로 선택한 키다. 하나 이상의 열로 구성되며, 값이 중복되거나 비어 있는 상태를 허용하지 않는다.

이름과 식별자는 다르다

도서 대여소에 같은 제목의 책이 여러 권 있어도 각 책의 대출 상태는 따로 관리해야 한다. 제목 대신 소장본 번호를 정해 두면 어느 책을 가리키는지 명확해진다. 기본 키는 이처럼 행을 구별하는 기준이 된다.

현재 자료에 우연히 중복이 없다는 사실만으로 적절한 키가 되는 것은 아니다. 앞으로 입력될 자료에서도 고유해야 한다는 규칙이 있어야 한다. 변경되기 쉬운 값인지도 함께 살펴야 한다.

하나의 열일 필요는 없다

여러 열을 함께 사용해 고유성을 정할 수 있다. 강좌별 수강 등록을 표현한다면 강좌 번호와 회원 번호의 조합으로 같은 회원의 중복 등록을 막을 수 있다. 이때 각 번호 하나만으로는 등록 행을 구분할 수 없다.

후보 키가 여러 개라면 그중 하나를 기본 키로 선택한다. 나머지 고유성 규칙도 필요에 따라 별도의 제약으로 유지한다. 테이블의 기본 키가 하나라는 말은 키를 구성하는 열도 반드시 하나라는 뜻이 아니다.

번호를 붙이는 것만으로 끝나지 않는다

별도의 일련번호나 식별자를 기본 키로 쓰면 다른 테이블에서 참조하기가 단순해질 수 있다. 하지만 번호가 다르다는 이유만으로 같은 사람이 두 번 등록되지 않았다고 보장할 수는 없다. 업무상 중복을 막는 규칙은 따로 정의해야 한다.

외부에서 전달받은 식별자를 그대로 사용하는 경우에는 형식, 범위와 발급 주체를 구분해야 한다. 서로 다른 시스템이 만든 같은 번호가 같은 대상을 뜻하지 않을 수 있다.

조회 순서와는 별개의 개념

기본 키는 행의 식별 규칙이지 화면에 표시할 순서가 아니다. 번호가 증가하더라도 번호 순서와 실제 사건 발생 순서가 항상 같지는 않다. 정렬된 결과가 필요하다면 조회에서 정렬 기준을 명시해야 한다.

관련 문서

외래 키 / 관계형 데이터베이스 / 데이터베이스 정규화 / SQL