[정리노트] SQLD 2024년 개정판 - 본질 식별자 vs 인조 식별자
본질식별자와 인조식별자 구분
본질 식별자
- 업무에 의해 만들어지는 식별자 (꼭 필요한 식별자)
인조식별자
- 인위적으로 만들어지는 식별자(꼭 필요하지 않지만 관리의 편이성 등의 이유로 인위적으로 만들어지는 식별자)
- 본질식별자가 복잡한 구성을 가질때 인위적으로 생산
- 주로 각행을 구분하기 위한 기본키로 사용되며 자동으로 증가하는 일련변호 형태
예시
- 주문과 주문상세에 대한 엔터티 설계 과정
- 주문이 들어오면 주문 엔터티에는 (주문번호 + 고객번호) 저장, PK는 주문번호
- 주문 상세는 주문별로 어떤 상품이 언제, 몇 개 주문됐는지 기록
- 방식 1) PK: 주문번호 + 상품번호로 설계
- ex) 동일한 장바구니에 A상품을 5개 주문했는데, 추가로 A상품을 3개 주문할 경우 묶음이 안됨
- 방식 2) PK: 주문번호 + 주문순번(주문순번이라는 컬럼 생성)
- ex) 사과를 총 3번 구매 하였으니 주문순번은 1,2,3 순서대로 입력
- 방식 3) PK 주문상세번호 (인조식별자 생성)
- 주문상세번호로 각 주문이력을 구분하기 때문에 같은 주문의 같은 상품이력이 저장될 수 있음
- 방식 1) PK: 주문번호 + 상품번호로 설계
인조식별자 단점
※ 인조식별자는 다음의 단점을 가지게 됨
- 중복 데이터 발생 가능성 > 데이터 품질 저하
- 불필요한 인덱스 생성 > 저장 공강 낭비 및 DML 성능 저하
결론
인덱스는 원래 조회 성능을 향상시키기 위한 객체이며, 인덱스는 CML(INSERT/UPDATE/DELET)시 INDEX SPLIT 현상으로 인해 성능이 저하 된다.
반응형
'스터디 > SQL' 카테고리의 다른 글
[정리노트] SQLD 2024년 개정판 - 관계형 데이터베이스 개요 (41) | 2024.08.19 |
---|---|
[기출문제] 1과목 - 데이터 모델링의 이해 (2024 개정판, 해설 포함) (3) | 2024.08.19 |
[정리노트] SQLD 2024년 개정판 - NULL 속성의 이해 (44) | 2024.08.18 |
[정리노트] SQLD 2024년 개정판 - 트랜잭션의 이해 (61) | 2024.08.14 |
[정리노트] SQLD 2024년 개정판 - 관계와 조인의 이해 (57) | 2024.08.13 |