[공통 SQL] 기본키(자연키,인조키)

2021. 3. 2. 14:09
728x90

기본키 전략 - 자연키, 인조키

자연키

  • 회원테이블을 생성한다고 가정
회원
-----
ID
이름
전화번호
주민등록번호
주소
성별
....
  • 대략적인 회원테이블의 구조이다.
  • 각각 고유한 기본키를 지정해주어야한다.
  • 이름, 성별, 주소, 전화번호 등은 중복적인 값이 들어올수있는 속성이므로 부적합하다.
  • 그렇다면 남는것은 ID와 주민등록번호이다.
  • 회원테이블을 생성하고, 회원테이블의 속성들을 추출해낸다.
  • 추출한 소성중 가장 효율적인 속성을 간추려 기본키로 설정한다.
  • 비즈니스 모델에서 자연스레 나오는 속성으로 기본키를 정한다고해서 자연키 (Natural Key) 라고 표현한다.

 

인조키

  • 이번에는 스터디 멤버 테이블을 생성한다고 가정
스터디 멤버
---------
스터디멤버번호
스터디번호
멤버명
전화번호
주소
성별
....
  • 스터디 멤버를 받을때 고유한값을 받지않는다.
  • 로우당 고유한 기본키가 존재하지않음
  • 고유한 값을 꼭 멤버에게 입력받을 필요는 없다.
  • 인위적으로 부여한 스터디멤버번호로 인해 각 고유 식별자가 생겨났다.
  • Oracle Sequence, MySQL Auto Increment 라고 보면된다.
  • 비즈니스 모델과 달리 키를 위한 데이터 측벽에서 인조키 (Artifical Key) 라고부른다.

 

자연키, 인조키

  • 비즈니스 모델에서 얻게되는 자연키와, 기본키 만을위한 인조키중 어떤걸 사용하는것이 좋을까 ?
  • 자연키는 어떻게든 변하게 되어있다.
  • 기본키는 절대 변해서는 안된다.
  • 대부분의 상황에서 자연키보다 인조키를 사용하는것이 좋다.

 

출처 : ncucu.me/26

728x90

'DATABASE > 공통 SQL' 카테고리의 다른 글

[SQL] UNION, UNION ALL, INTERSECT, EXCEPT 연산자  (0) 2021.03.12
[SQL] IS NULL, IS NOT NULL  (0) 2021.03.08
[공통 SQL] WHERE 1=1  (0) 2021.03.02