
데이터베이스 설계의 기초이자 핵심인 '키(Key)'.
단순히 "ID 값"이라고만 생각하고 넘어가기엔 그 종류와 역할이 매우 다양합니다. 이번 글에서는 헷갈리기 쉬운 키의 종류를 명확히 정리하고, "도대체 왜 Primary Key(기본키)는 반드시 있어야 하는가?" 에 대해 심도 있게 알아봅니다.
키의 종류를 이해하려면 먼저 유일성(Uniqueness) 과 최소성(Minimality) 이라는 두 가지 개념을 알아야 합니다.
Super Key ⊃ Candidate Key ⊃ Primary Key
(학번), (주민번호), (학번 + 이름), (주민번호 + 이름 + 주소)(학번), (주민번호)NULL 값을 가질 수 없으며, 중복될 수 없습니다.학번을 기본키로 정했다면, 주민번호는 대체키가 됩니다.개발을 하다 보면 "그냥 데이터만 들어가면 되지, 굳이 PK를 설정해야 하나?"라는 의문이 들 수 있습니다. 하지만 RDBMS에서 PK는 선택이 아닌 필수에 가깝습니다. 그 이유는 크게 3가지입니다.
가장 본질적인 이유입니다. PK가 없다면 중복된 데이터(Row) 를 구분할 방법이 없습니다.
예를 들어, 동명이인이 가입했을 때 PK(User ID)가 없다면 시스템은 두 사람을 구분하지 못해 데이터를 덮어쓰거나 엉뚱한 사람의 정보를 조회하는 치명적인 버그를 낳게 됩니다.
이것이 개발자 입장에서 가장 중요한 이유일 수 있습니다. MySQL의 InnoDB 스토리지 엔진을 기준으로 설명하자면
WHERE id = 100)할 때, 별도의 정렬 과정 없이 매우 빠른 속도로 데이터에 접근할 수 있습니다.데이터베이스 정규화 과정에서 테이블을 쪼개고 연결할 때, FK(외래키)가 참조할 대상이 바로 PK입니다.
부모 테이블에 식별자가 없다면 자식 테이블은 누구에게 연결되어야 할지 알 수 없습니다. PK는 데이터 세계의 '주소'와 같습니다.
주민등록번호, 이메일, 전화번호처럼 비즈니스적으로 의미가 있는 값을 PK로 사용하는 경우입니다.
비즈니스와 무관한 임의의 값을 PK로 사용하는 것입니다.
Auto Increment (MySQL), Sequence (Oracle), UUIDBIGINT 타입의 Auto Increment 값을 가장 많이 사용합니다.데이터베이스에서 Key는 단순한 컬럼 하나가 아니라, 데이터의 품질(무결성) 과 성능(인덱스) 을 책임지는 중추적인 역할을 합니다.