1. 식별자 정의
식별자란 하나의 엔티티(테이블) 내에서 각각의 인스턴스(로우)를 유일(Unique)하게 구분해 낼 수 있는 속성(컬럼) 또는 속성 그룹을 말하며, 하나의 엔티티는 하나 이상의 식별자를 반드시 보유하고 있어야만 한다. 즉, 쉽게 정리하면 중복 데이터가 없는 속성(컬럼)을 의미한다.
2. 식별자의 유형
1) 주식별자 / 보조식별자 : 대표성 여부
하나의 엔티티 내에서 식별자로 사용할 수 있는 하나 이상의 키들을 후보식별자라 하고, 그 중 엔티티의 대표성을 나타내는 유일한 식별자를 주식별자, 나머지를 보조식별자로 활용한다.
물리모델에서 주식별자는 PK 역할, 보조식별자는 유니크 인덱스로 지정
예 ) 사원 : 후보식별자 - 사번, 주민번호
주식별자 - 사번
보조식별자 - 주민번호
2) 내부식별자 / 외부식별자 : 스스로 생성 여부
자신의 엔티티 내에서 스스로 생성되어 존재하는 식별자를 내부식별자, 다른 엔티티로부터 관계에 의해 주식별자 속성을 상속받아 자신의 속성에 포함되는 식별자를 외부식별자라한다.
외부식별자는 FK를 의미한다.
3) 단일식별자 / 복합식별자 : 단일 속성 여부
주식별자의 구성이 한 가지 속성으로 이루어진 경우를 단일식별자, 두 개 이상의 속성으로 구성된 경우를 복합식별자라 한다.
복합실별자의 경우는 우선순위가 매우 중요하다.
위의 테이블에서 주문번호와 상품코드를 복합시켜야만, 식별자로써의 기능을 하게 되는데 주문번호와 상품코드를 복합식별자라고 한다.
■ 자주 사용되는 속성은 우선순위가 높다.
대체적으로 자식 엔티티의 PK의 우선순위의 앞 순위에 부모로부터 상속받은 속성을 두는 것이 좋다. 부모로부터 상속받은 PK의 속성은 SQL의 조인에서 반드시 사용되어지고 WHERE 절에서 사용 가능성이 높다.
■ 분포도가 좋은 속성은 우선순위가 높다.
분포도가 좋다는 의미는 사원번호, 주민번호와 같이 자료의 식별성이 뛰어난 속성으로 SQL 사용시 분포도가 좋은 속성으로 접근하면 그만큼 적은 범위의 자료에만 접근할 수 있다.
구분 표시와 같은 속성은 분포도가 매우 낮은 속성이므로 우선순위가 낮다.
PK가 사원구분 + 사원번호라면 조회 유형은 사원번호에 의한 경우, 사원번호 + 사원구분, 사원구분에 의한 경우인데, 사원번호에 의한 경우 인덱스를 사용할 수 없고,
사원구분에 의한 경우도 분포도가 매우 낮은 속성이므로 풀 스캔하는 것이 빠르다.
■ ' = ' 조회를 하는 속성은 우선순위가 높다.
날짜와 같은 속성은 대부분이 기간을 조회하므로, 인덱스의 첫번째 속성이 LIKE 조회나 BETWEEN 조회를 하게 되어 인덱스를 사용하지 못하게 된다.
'DataBase > DataModeling' 카테고리의 다른 글
키(Key)의 개념 및 종류 : 후보키, 기본키, 외래키, 대체키, 후보키 (4) | 2020.01.06 |
---|---|
함수적 종속성, 부분종속, 완전종속 (0) | 2018.05.30 |
데이터베이스 정규화 1NF, 2NF, 3NF, BCNF (0) | 2018.05.30 |
[데이터모델링]논리적 모델링을 통해 ER모델을 관계형 스키마로 맵핑하기 (0) | 2017.12.28 |
[데이터모델링]개념적인 설계에서 논리적인 설계로 나아가기 (0) | 2017.12.28 |