기본키의 의미

HS L·2023년 4월 11일
0

내일배움캠프

목록 보기
24/73

데이터 모델에서의 기본키의 의미

기본키

데이터베이스에서 데이터를 불러오기위해, 데이터간의 관계를 표현하기 위해 가장 중요한 개념이다. 데이터라는 특성상 수가 무수히 많아질 수 있고 그에따라 중복되는 데이터의 값도 생겨날 것이다. 그것들을 어떻게 구별할 것인가에 대한 기준이라고 볼 수 있을 것 같다.
-키는 무엇인가를 유일하게 식별한다는 의미가 있다.

자연키

어떤 데이터 모델에서 자연스레 나오는 속성중에서 기본키의 역할을 할 수 있는것.

데이터 모델 생성시 데이터가 가지는 속성은 여러개가 될 수 있다. 쉽게 예를 들어 당장 내 눈 앞에 보이는 노트북만 하더라도 속성값으로 모델번호, 시리얼번호, 제조일자 등의 속성값을 가지게 된다. 노트북이 만들어질때마다 그에 해당하는 여러 정보들이 쌓이게 되고 그것들을 고유하게 구별할 수 있는 기본키를 지정해야 한다. 
그럼 노트북의 속성중에서 이를 구별하기에 적합한 속성은 무엇이 있을까? 모델번호도 물론 어느정도 구별해줄 수 있겠지만 동일한 모델의 노트북이 여러개 있게되면 각각의 노트북을 구별해주기에는 적합하지 않다. 제조일자 또한 어느정도 구별은 해줄 수 있겠지만 같은 날 만들어진 동일모델의 노트북을 구별하기에 적합하지 않다. 노트북과 같은 전자기기의 수리를 받아본 사람들은 이미 떠오른 것이 있을 것이다. 내 제품의 서비스 기간을 구별해주고 이 기기를 칭하기 위해 각각의 제품에 시리얼 번호가 존재한다. 이는 생산된 노트북 각각을 구별해주기 위해 제조사에서 직접 부여한 고유 번호로서 역할을 하게 된다. 이처럼 단지 기본키만을 위한 데이터가 아니라 데이터 모델에서 자연스레 나오는 속성중에서 기본키로 지정한다고 하면 자연키가 될 수 있다.

인조키

앞서 서술한 내용에서 노트북이라는 데이터모델의 속성 중 고유한 키의 역할을 할 수 있는 시리얼 번호가 있었다. 이는 제조사에서 부여한 번호이기 때문에 인조키가 아닌가 라고 생각할 수 있다. 어떤 측면에서 정의하냐에 따른 차이로 보면 이해에 도움이 될 것 같다. 단순히 제조사 측면에서 볼때 시리얼 번호는 제품을 구별하기 위해 부여한 인조키가 될 수 있겠지만 데이터베이스 측면에서는 제품에 자연스레 따라오게되는 자연키로 볼 수 있다는 말이다.
일반적으로 시리얼 번호가 변경되는 일이 거의 없겠지만 제품의 교환이나 수리 등의과정에서 제조사 규정에 따라 시리얼번호가 바뀌게되는 경우가 생길 수 있을 것이고 이는 곧 데이터베이스 환경에서 같은 데이터 모델이라 할지라도 데이터 모델의 속성이 변하게 되는 것이다. 제조사 측면에서 시리얼 번호의 역할은 변하지 않겠지만 변경이 됐기때문에 유일한 값이 아니게 된다. 데이터베이스 환경에서는 이런 경우들이 생기면 기본키값을 다시 지정해줘야하는 일이 생기게 된다. 
위와 같은 상황이 반복된다면 데이터베이스 환경에서 기본키를 변경하는 번거로운 작업들이 계속 될 것이다. 이를 방지하기 위해 데이터 모델이 생성될 때 고유한 id라는 값을 부여해주게 된다. 이는 일반적으로 등록순서대로 숫자를 부여해주고 그 숫자가 증가하면서 생성이 되기때문에 유일하고 중복없이 인조적으로 만들어지게 된다. 기본키의 역할로 조건을 충족시키면서 id값에 대한 속성들이 어떻게 변해도 계속 유일하다는 특성을 지니게 된다. 이처럼 데이터 모델에서 자연스레 나오는 속성이 아닌 데이터베이스 측면에서 기본키의 역할을 수행할 수 있게 부여한 고유번호를 인조키라고 하게 된다.

정리

위의 예시에서 노트북의 경우 제조사, 제품, 구매자, 판매, 구매, 수리 등의 비즈니스적인 측면에서 바라볼 때 시리얼 번호는 제품에 부여하는 번호이며 극단적으로 시리얼 번호가 어떻게 바뀌더라도 제품을 구별하는 번호라는 열할은 바뀌지 않는다. 
데이터베이스의 측면에서 봤을때 노트북이라는 데이터 모델의 시리얼 번호의 '속성'이 바뀔 수 있기 때문에 id라는 고유한 번호를 부여해서 이것을 기본키로 설정하게 된다. 이렇게 기본키의 역할을 수행할 수 있게 데이터 측면에서 부여한 기본키를 '인조키'라고 한다.

시리얼번호, 주민등록번호 등 일반적으로 고유한 값이라고 인식하고 지내는 것들은 각각의 관점에서 두개 이상을 가질 수 없지만 값이 변할 수 있는 가능성이 있기 때문에 인조키를 기본키로 지정하는것을 권장하는 이유가 된다. (사람일 아무도 모른다.. 주민등록 번호도 귀화와 같은 이유로 바뀔 수 있다.)
profile
식이

0개의 댓글