기본키 - 자연키, 인조키

Back-End/Data Base 2019. 7. 16. 15:09
728x90
반응형


1. 자연키 (Natural Key)


회원테이블을 만든다고 가정해보자.



이 테이블에서는 각 회원 테이블의 속성을 추출해냈고,  추출한 속성들중 가장 기본키로서 효율적인 속성을 골라내어


기본키로 설정하기로 했는데, 기본키만을 위한 데이터가 아니라 비즈니스 모델에서 자연스레 나오는 속성으로 기본키를 정한다고해서


자연키(Natural Key)라고 표현.


이 테이블에서 기본키 (자연키)는 회원ID이고, 다른 속성들은 중복되거나 변경되거나 


NULL값 등등이 나올수도 있기 때문에 기본키가 되기에 적합하지 않다.




2. 인조키 (Artificial Key)


앞선 내용에서는 회원이라는 내용을 가지고 테이블을 설계했는데, 보통 회원이라는건 가입자한테 그 사실을 알려주고 


(DB차원에서 기본키랑은 상관없이) 그 회원의 고유한 값을 전달해주게 된다. 거기서 자연스레 고유한 값은 ID가 추출됐고, 그걸 기본키로


설정한것이다. 그럼 비슷한 데이터지만 회원과는 조금 다른 테이블을 설계해보자.


이벤트 참여 개인정보를 제공받는 테이블이다.


회원 테이블과 거의 동일하다.


하지만 이벤트 참여를 받을땐 참여자로부터 고유한 값을 입력받지 않는다.


때문에 앞선 회원 테이블의 ID와 같은 고유한 값이 없다.


입력받는게 없다면 부여하면 된다. (예를 들면 카페에서 커피를 시킬때 번호표를 받는것처럼.....)



우리가 부여한 "참여자 번호" 로 인해 우리는 참여자가 몇명이든 그들을 구분할 수 있는 속성을 갖게됐다.


DBMS적인 측면에서 본다면 Oracle의 Sequence, MySQL의 Auto Increment라고 보면된다.


비즈니스 모델과는 달리 키를 위한 데이터라는 측면에서 인조키 (Artificial Key) 라고 부른다.




출처

https://multifrontgarden.tistory.com/180?category=471242



728x90
반응형
: