식별자의 종류: 주식별자, 보조식별자, 인조식별자
식별자는 테이블의 한 행(인스턴스)을 유일하게 구분해주는 속성(또는 속성 묶음)입니다. 좋은 식별자는 아래 4가지를 만족해야 합니다.
- 유일성: 중복되면 안 됨
- 최소성: 꼭 필요한 속성만으로 구성 (쓸데없이 많이 묶지 않기)
- 불변성: 한번 정해지면 값이 안 바뀜
- 존재성: NULL(빈 값)이면 안 됨
이 식별자를 몇 가지 기준으로 나눠볼 수 있습니다.
대표로 뽑혔는가
- 주식별자(PK): 테이블당 딱 하나, 행을 대표해서 식별하는 속성. NULL 불가.
- 보조식별자: 유일성은 있지만 대표로 뽑히지 못한 속성. 예: 사원번호가 PK일 때 주민등록번호는 보조식별자.
업무에서 자연스럽게 나왔는가, 인위적으로 만들었는가
- 본질식별자: 업무 과정에서 자연스럽게 생긴 속성 그대로 (예: 주문일자 + 상품코드)
- 인조식별자(Surrogate Key): 본질식별자가 너무 복잡하거나 여러 속성으로 얽혀 있을 때, 관리 편의를 위해 인위적으로 새로 만든 식별자. 보통 자동 증가 번호나 UUID를 씁니다 (예: 주문일자+상품코드 대신 새로 만든 "주문번호").
속성 하나인가, 여러 개를 묶었는가
- 단일 식별자: 속성 1개로 유일성 확보
- 복합 식별자: 여러 속성을 합쳐야 유일성이 나옴 (예: 학번+과목코드)
스스로 만들어졌는가, 남한테 물려받았는가
- 내부식별자: 자기 테이블 안에서 자체적으로 생성
- 외부식별자: 다른 테이블과의 관계를 통해 물려받은 식별자, 즉 FK
참고: 개인 Notion 학습 노트