데이터베이스 설계에서 빠질 수 없는 개념 중 하나가 바로 기본키(Primary Key)입니다. 기본키는 데이터를 고유하게 식별하고, 데이터베이스 무결성을 유지하는 데 중요한 역할을 합니다. 이 글에서는 기본키의 정의, 특징, 역할, 그리고 설계 시 주의해야 할 점을 누구나 쉽게 이해할 수 있도록 정리해보겠습니다.
기본키란?
기본키는 데이터베이스 테이블에서 각 행(Row)을 고유하게 식별할 수 있는 단일 컬럼 또는 컬럼의 조합을 의미합니다. 데이터베이스 설계 시, 후보키(Candidate Key) 중에서 선택된 대표 키를 기본키라고 합니다.
쉽게 말해, 기본키는 테이블의 모든 데이터에서 중복되지 않는 값으로, 각 데이터를 명확히 구별하는 기준이 됩니다.
기본키의 특징
-
고유성(Unique)
-
기본키 값은 테이블 내에서 중복될 수 없습니다.
-
이를 통해 각 행을 유일하게 식별합니다.
-
-
NULL 값 허용 불가
-
기본키는 반드시 값을 가져야 하며, NULL 값을 허용하지 않습니다.
-
-
하나의 테이블에 하나만 존재
-
한 테이블에는 오직 하나의 기본키만 설정할 수 있습니다.
-
-
자동 인덱스 생성
-
데이터베이스는 기본키에 대해 자동으로 인덱스를 생성하여 검색 성능을 최적화합니다.
-
기본키의 역할
기본키는 데이터베이스에서 다음과 같은 중요한 역할을 합니다:
-
데이터 무결성 보장
-
기본키는 중복과 NULL 값을 방지하여 데이터의 신뢰성을 유지합니다.
-
-
테이블 간 관계 설정
-
기본키는 외래키(Foreign Key)로 참조되어 테이블 간 관계를 정의합니다. 예를 들어,
학생 테이블
의 기본키학번
이수강신청 테이블
에서 외래키로 사용될 수 있습니다.
-
-
빠른 검색과 접근
-
기본키에 생성된 자동 인덱스를 통해 데이터를 빠르게 검색할 수 있습니다.
-
기본키 예시
(1) 단일 컬럼 기본키
학생 테이블
학번 | 이름 | 생년월일 |
---|---|---|
1001 | 김철수 | 2000-01-01 |
1002 | 이영희 | 1999-12-12 |
-
학번
은 고유성을 만족하고 NULL을 허용하지 않으므로 기본키로 설정할 수 있습니다.
(2) 복합 기본키
수강신청 테이블
학번 | 과목코드 | 학점 |
1001 | MATH101 | 3 |
1001 | ENG102 | 2 |
1002 | MATH101 | 3 |
-
학번
과과목코드
각각은 중복될 수 있지만, 두 컬럼의 조합은 고유성을 만족합니다. 따라서학번 + 과목코드
를 복합 기본키로 설정할 수 있습니다.
(3) 후보키 중 NULL 값이 있는 경우
직원 테이블
직원ID | 이메일 | 전화번호 |
1 | kim@company.com | 010-1234-5678 |
2 | NULL | 010-5678-1234 |
3 | lee@company.com | NULL |
-
이 테이블에서
직원ID
는 고유성과 NULL 비허용 조건을 만족하므로 기본키가 될 수 있습니다. -
반면,
이메일
은 고유성을 만족하지만 NULL 값이 포함되어 있으므로 후보키가 될 수는 있지만 기본키로는 적합하지 않습니다.
기본키 설계 시 주의할 점
-
변하지 않는 값을 선택
-
기본키는 변경 가능성이 낮은 속성을 선택해야 합니다. 예를 들어,
주민등록번호
는 변하지 않지만,이름
이나전화번호
는 변경될 가능성이 있습니다.
-
-
간결한 키 선택
-
기본키는 가능한 한 단순한 값이어야 하며, 데이터베이스의 성능에 영향을 주지 않도록 설계해야 합니다.
-
-
복합 기본키는 신중하게 사용
-
복합 기본키는 경우에 따라 필요하지만, 지나치게 많은 컬럼을 포함하면 성능 저하를 초래할 수 있습니다.
-
-
유효성 제약 조건 추가
-
기본키는 고유성(UNIQUE)과 NULL 비허용(NOT NULL)을 반드시 설정해야 합니다.
-
기본키와 후보키의 차이
-
후보키(Candidate Key): 유일성과 최소성을 만족하는 모든 키의 집합.
-
기본키(Primary Key): 후보키 중에서 데이터베이스 설계자가 선택한 대표 키.
기본키는 후보키 중에서 하나만 설정할 수 있으며, 테이블의 대표 키 역할을 합니다.
결론
기본키는 데이터베이스에서 데이터를 고유하게 식별하고 무결성을 유지하는 데 필수적인 요소입니다. 단일 컬럼 또는 복합 컬럼으로 구성할 수 있으며, 올바른 기본키 설계는 데이터베이스 성능과 안정성을 크게 향상시킵니다. 데이터베이스 설계 시, 기본키의 특징과 역할을 잘 이해하고 적합한 키를 신중하게 선택하세요.
[…] 기본키(Primary Key): 후보키 중에서 테이블 내의 각 행을 고유하게 식별하도록 선택된 키입니다. 하나의 테이블에는 하나의 기본키만 존재할 수 있습니다. […]