티스토리 뷰
기본키 전략 - 자연키, 인조키
자연키
- 회원테이블을 생성한다고 가정
회원
-----
ID
이름
전화번호
주민등록번호
주소
성별
....
- 대략적인 회원테이블의 구조이다.
- 각각 고유한 기본키를 지정해주어야한다.
- 이름, 성별, 주소, 전화번호 등은 중복적인 값이 들어올수있는 속성이므로 부적합하다.
- 그렇다면 남는것은 ID와 주민등록번호이다.
- 회원테이블을 생성하고, 회원테이블의 속성들을 추출해낸다.
- 추출한 소성중 가장 효율적인 속성을 간추려 기본키로 설정한다.
- 비즈니스 모델에서 자연스레 나오는 속성으로 기본키를 정한다고해서 자연키 (Natural Key) 라고 표현한다.
인조키
- 이번에는 스터디 멤버 테이블을 생성한다고 가정
스터디 멤버
---------
스터디멤버번호
스터디번호
멤버명
전화번호
주소
성별
....
- 스터디 멤버를 받을때 고유한값을 받지않는다.
- 로우당 고유한 기본키가 존재하지않음
- 고유한 값을 꼭 멤버에게 입력받을 필요는 없다.
- 인위적으로 부여한 스터디멤버번호로 인해 각 고유 식별자가 생겨났다.
- Oracle Sequence, MySQL Auto Increment 라고 보면된다.
- 비즈니스 모델과 달리 키를 위한 데이터 측벽에서 인조키 (Artifical Key) 라고부른다.
자연키, 인조키
- 비즈니스 모델에서 얻게되는 자연키와, 기본키 만을위한 인조키중 어떤걸 사용하는것이 좋을까 ?
- 자연키는 어떻게든 변하게 되어있다.
- 기본키는 절대 변해서는 안된다.
- 대부분의 상황에서 자연키보다 인조키를 사용하는것이 좋다.
'Database' 카테고리의 다른 글
Database - Key의 개념 및 종류 (0) | 2019.07.15 |
---|
댓글