1. 식별자(Identifiers) 개념
식별자란?
- 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성
하나의 엔터티는 반드시 하나의 유일한 식별자가 존재해야 한다.
보통 식별자와 키(Key)를 동일하게 생각하는 경우가 있는데 식별자라는 용어는 업무적으로 구분이 되는 정보로 생각할 수 있으므로 논리 데이터 모델링 단계에서 사용하고 키는 데이터베이스 테이블에 접근을 위한 매개체로서 물리 데이터 모델링 단계에서 사용한다.
2. 식별자의 특징
주식별자의 경우 다음과 같은 특징을 갖는다.
- 주식별자에 의해 엔터티 내에 모든 인스턴스들이 유일하게 구분되어야 한다.
- 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
- 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.
- 주식별자가 지정이 되면 반드시 값이 들어와야 한다.
대체식별자의 특징은 주식별자의 특징과 일치하지만, 외부식별자는 별도의 특징을 가지고 있다. 외부식별자의 경우 주식별자 특징과 일치하지 않으며 참조무결성 제약조건(Referential Integrity)에 따른 특징을 가지고 있다.
3. 식별자 분류 및 표기법
가. 식별자 분류
분류 기준: 자신의 엔터티 내에서 대표성을 가지는가?
- 주식별자(Primary Identifier)
- 보조식별자(Alternate Identifier)
분류 기준: 엔터티 내에서 스스로 생성되었는가?
- 내부식별자
- 외부식별자
분류 기준: 단일 속성으로 식별이 되는가?
- 단일식별자(Single Identifier)
- 복합식별자(Composit Identifier)
위 그림의 식별자에 대한 분류체계를 더 상세하게 설명하면 아래와 같이 표현할 수 있다.
나. 식별자 표기법
4. 주식별자 도출기준
가. 해당 업무에서 자주 이용되는 속성을 주식별자로 지정하도록 함
ex) 직원이라는 엔터티가 있을 때 유일하게 식별가능한 속성으로는 주민등록번호와 사원번호가 존재할 수 있다. 사원번호가 그 회사에서 직원을 관리할 때 흔히 사용되므로 사원번호를 주식별자로 지정하고 주민등록번호는 보조식별자로 사용할 수 있다.
나. 명칭, 내역 등과 같이 이름으로 기술되는 것은 피함
ex) 한 회사에 부서이름이 100개가 있다고 할 때, 각각의 부서이름은 유일하게 구별될 수 있다고 하여 부서이름을 주식별자로 지정하지 않도록 해야 한다. 만약 부서이름을 주식별자로 설정하면 물리 데이터베이스로 테이블을 생성하여 데이터를 읽을 때 항상 부서이름이 WHERE 조건절에 기술되는 현상이 발생한다. 부서이름은 많은 경우 20자 이상이 될 수 있으므로 조건절에 정확한 부서이름을 기술하기는 쉬운 일이 아니다.
이와 같이 명칭이나 내역이 있고 인스턴스들을 식별할 수 있는 다른 구분자가 존재하지 않을 경우는 새로운 식별자를 생성하도록 한다. 보통 일련번호와 코드를 많이 사용한다.
부서명과 같은 경우는 부서코드를 부여하여 코드엔터티에 등록한 후 부서코드로 주식별자를 지정하는 방법과 부서일련번호(부서번호)를 주식별자로 하고 부서명은 보조식별자로 활용하는 두 가지 방법이 있다.
다. 속성의 수가 많아지지 않도록 함
주식별자로 선정하기 위한 속성이 복합으로 구성되어야 할 때 되도록 그 속성의 수가 많지 않도록 해야 한다.
그러나 만약 주식별자로 선정된 속성들이 자신이 가지고 있는 자식 엔터티로부터 손자 엔터티, 그리고 증손자 엔터티까지 계속해서 상속이 되는 속성이고 복잡한 데이터 모델이 구현되어 물리 데이터베이스에서 조인으로 인한 성능저하가 예상되는 모습을 가지고 있다면 속성의 반정규화 측면에서 하나의 테이블에 많은 속성이 있는 것이 인정될 수도 있다.
하지만 일반적으로 주식별자의 속성의 개수가 많다는 것(7~8개 이상)은 새로운 인조 식별자(Artificial Identifier)를 생성하여 데이터 모델을 구성하는 것이 데이터 모델을 한층 더 단순하게 할 수 있는 방법이 된다.
5. 식별자관계와 비식별자관계에 따른 식별자
가. 식별자관계와 비식별자 관계의 결정
나. 식별자관계
다. 비식별자관계
라. 식별자 관계로만 설정할 경우의 문제점
마. 비식별자 관계로만 설정할 경우의 문제점
바. 식별자관계와 비식별자관계 모델링
1) 비식별자관계 선택 프로세스
2) 식별자와 비식별자관계 비교
'데이터베이스 > SQLD' 카테고리의 다른 글
[SQLD 과목2 1장-2절] DDL (Data Definition Language) (0) | 2021.03.09 |
---|---|
[SQLD 과목2 1장-1절] 관계형 데이터베이스 개요 (0) | 2021.03.08 |
[SQLD 과목1 1장-4절] 관계(Relationship) (0) | 2021.02.27 |
[SQLD 과목1 1장-3절] 속성(Attribute) (0) | 2021.02.27 |
[SQLD 과목1 1장-2절] 엔터티(Entity) (0) | 2021.02.26 |
댓글