G·Graph Daily Lab 전체 140회
추가 29 / 40 · 보충 · 약 12분

기본 키와 제목 키 고르기

실제 데이터의 함정(중복, 바뀌는 값, 형식 차이)을 놓고 기본 키와 제목 키를 직접 골라 봅니다.

팔란티어 온톨로지 I

배운 뒤 돌아올 회차

DAY 72에서 기본 키와 제목 키의 정의를 봤다면, 후보 열이 여럿일 때 무엇을 기준으로 고르고 무엇을 피해야 하는지 연습합니다.

시작하면 직접 풀기와 퀴즈 기록이 저장됩니다. 본과정 100회 진도와는 별도입니다.

이번에 더 배울 것

기본 키(Primary key)는 세 조건을 통과해야 합니다. 고유성: 백킹 데이터소스의 모든 행에서 값이 달라야 하고, 문서에 따르면 Object Storage v2에서는 중복 기본 키가 빌드 실패로 이어집니다. 결정성: 빌드를 다시 돌려도 같은 행에 같은 값이 나와야 하므로 행 번호나 무작위 생성 대신 하나 이상의 열에서 계산합니다. 타입 적합성: String·Integer·Short는 가능하고, Date·Timestamp·Boolean·Long은 권장되지 않으며, Float·Double·Decimal은 쓸 수 없습니다.

한 열로 고유하지 않으면 여러 열을 이어 붙인 결합 키를 만듭니다. 운송 구간(Leg)은 shipment_id만으로는 중복되므로 shipment_id와 구간 번호를 이은 ‘S-101#2’ 같은 문자열을 파이프라인에서 만들어 기본 키로 씁니다. 사용자 편집은 기본 키 값에 영구히 연결되고, 기본 키를 바꾸면 기존 편집을 모두 지우라는 안내가 나옵니다. 그래서 처음부터 바뀌지 않을 키를 고르는 것이 중요합니다.

제목 키(Title key)는 객체의 표시 이름으로 쓰이는 속성입니다. 고유할 필요는 없지만 사용자가 목록에서 객체를 구별할 수 있어야 합니다. ID만 보이면 읽기 어렵고, 이름만 보이면 같은 이름의 두 객체를 혼동합니다. ‘한빛상사 · 부산’처럼 구별 정보를 더한 표시용 속성을 만들어 제목 키로 지정하는 방법이 흔합니다. 제목이 자주 바뀌는 값이면 사용자가 같은 객체를 다른 이름으로 기억하게 된다는 점도 고려합니다.

작은 예제로 따라가기

1

Customer 후보 열은 customer_id(문자열, 고유), business_no(사업자등록번호, 개인 고객은 비어 있음), name(같은 이름 가능)입니다.

2

기본 키는 customer_id입니다. 모든 행에 있고 고유하며 바뀌지 않습니다. business_no는 빈 값이 있어 모든 행을 식별하지 못하므로 탈락합니다.

3

제목 키로 name을 쓰면 ‘한빛상사’ 두 곳이 구별되지 않으므로 ‘한빛상사 · 부산’처럼 지역을 붙인 display_name 속성을 만들어 지정합니다.

COMPARE & EXPLAIN

이 열을 기본 키로 써도 될까

각 후보가 고유성·결정성·타입 적합성을 모두 통과하는지 먼저 판단하세요.

부적합: 결정적이지 않습니다.

행 순서가 바뀌면 번호가 바뀌어 편집과 링크가 엉뚱한 객체에 붙거나 사라집니다.

기본 키는 고유하고 결정적인 문자열·정수 열(필요하면 결합 키)로, 제목 키는 사용자가 구별할 수 있는 표시 이름으로 고릅니다.

학습을 시작하면 새 문제를 직접 풀고 확인 퀴즈를 마친 뒤 선택한 본과정 회차로 돌아갑니다.