행을 변하지 않는 이름으로 부른다
기본 키는 행 하나를 영구히 가리키는 이름이야. 값이 중복되지 않고 비어 있지 않으며, 다른 테이블의 외래 키가 이 이름을 따라 관계를 맺어. 모든 영속 테이블에는 기본 키가 있어야 해. 정수나 UUID처럼 짧고 색인하기 쉬운 값을 쓰고, 업무 필드 200자를 이어 붙인 합성 값은 피해야 해.
좋은 기본 키의 조건
짧고 안정적이며 업무 의미의 변화에 흔들리지 않아야 해. 이메일, 전화번호, 슬러그처럼 바뀔 수 있는 값은 UNIQUE로 지키되 기본 키로 삼지 않는 편이 좋아. 보통은 GENERATED ALWAYS AS IDENTITY로 만든 대리 키가 이 조건을 가장 단순하게 만족해.
자연 키와 복합 키
나라 코드처럼 정말 변하지 않는 자연 키는 쓸 수 있지만, “절대 안 바뀐다”는 약속을 신중히 검증해야 해. 두 대상의 관계 자체가 행인 연결 테이블에서는 외래 키 2개를 묶은 복합 기본 키가 자연스러워. 별도 대리 키를 더해도 관계 중복을 막는 고유 제약은 남겨야 해. 키 0개인 영속 테이블은 정체성을 다른 곳에 떠넘긴 설계야.