그럼 키는 언제 사용할까요? 특정 데이터를 수정하거나 삭제할 때 사용합니다. 5명의 홍길동이 각자 유일한 키 값을 가지고 있다면, 그 키 값을 이용해 원하는 홍길동의 데이터만 수정할 수 있죠. 5명 중 2명이 서로 이웃이라고 해도 키 값을 이용해 이 2명을 구별해낼 수 있습니다. 이런 일이 실제로는 없겠지만, 이웃이었던 2명의 홍길동이 같은 날 이사를 갔는데 하필이면 같은 동네로 이사를 가서 또 이웃이 됐다고 하더라도 키 값만 있으면 문제 없이 2명의 주소를 구분해 수정할 수 있습니다. 반면 이름만으로 검색해 처리한다면 홍길동 5명의 데이터가 모두 수정되거나 삭제되겠죠.
한 테이블에서 유일한 식별자 역할을 하는 키는 테이블 간 관계를 맺을 때도 사용됩니다. 그림 2-2에서 보듯이 회원정보와 주소 테이블은 주소 테이블에 있는 키 컬럼을 이용해 연결되어 있습니다. 이때 혼동하지 말아야 할 것이 1, 2, 3은 회원정보 테이블의 기본 키고, 연결고리가 되는 1001, 1002, 1003은 주소 테이블의 기본 키입니다. 그렇다면 회원정보 테이블에 있는 주소 id 컬럼은 뭐라고 부를까요? 이를 참조 키(foreign key)라고 합니다. 즉, 한 테이블에서 유일하게 로우를 식별하는 키를 기본 키, 다른 테이블의 기본 키와 연결고리가 되는 키를 참조 키라고 합니다.
정리하면 회원정보 테이블에서 1, 2, 3 값의 컬럼은 기본 키, 1001, 1002, 1003 값의 컬럼은 참조 키입니다. 같은 1001, 1002, 1003을 갖고 있더라도 주소 테이블에서는 이 컬럼이 기본 키가 되는 것이죠. 따라서 회원정보 테이블에서 참조 키 컬럼은 중복 값을 가질 수 있습니다. 반면 주소 테이블에서 기본 키는 중복 값을 가질 수 없죠. 왜냐하면 주소 테이블에서는 이 값들이 기본 키니까요.
▲ 그림 2-2 키 컬럼과 관계 맺기