domsam - IT 기술 블로그

Unique Identifier 식별자 본문

SQL/데이터 통합

Unique Identifier 식별자

domsam 2025. 2. 10. 14:04
반응형
엔터티에 존재하는 인스턴스의 유일성을 보장해 주는 것이 식별자다.
엔터티 내의 인스턴스마다 유일한 값을 가지는 속성이 식별자이다. 

 

1. 업무 식별자

개념/논리 모델링에서 사용한다. 업무적으로 인스턴스를 구분하게 한다.
종속 엔터티일 때는 업무 식별자가 애매해질 수 있다. 

2. 식별자와 Key 종류

식별자와 Key는 관점에 따라 다르게 부르지 같은 개념이라고 이해하면 된다.

- 후보 식별자 (Candidate Identifier)
- 주 식별자 (Primary Identifier)
- 슈퍼 식별자 (Super Identifier)
- 대리 식별자 (Alternate Identifier)
- 인조 식별자 (Artficial Identifier)
- 외래 식별자 (Foreign Identifier)

2-1 후보 식별자

엔터티에서 인스턴스의 유일성을 보장해 주면서 최소로 구성된 속성이 후보 식별자이다. 후보 식별자 중 주 식별자를 선택하게 된다. 주 식별자가 될 수 있는 후보이므로 후보 식별자라고 한다. 아래 [그림8.8] 릴레이션에서 사원번호, 전화번호 , 주민등록번호, 고객번호가 후보 식별자가 될 수 있다. 사원번호를 알면 사원명을 알 수 있다. 이것을 함수적 종속이라고 부르며 아래처럼 표기를 한다. 후보 식별자는 결정자 역할을 한다.

사원번호  > 사원명
전화번호 > 사원명
주민등록번호 > 사원명
고객번호 > 사원명

 

2-2 주 식별자 

물리적으로 인스턴스를 구분하게 한다. 엔터티에서 주 식별자는 반드시 존재해야 한다. Primary Key (PK, 기본키)라고 한다. 후보 식별자가 하나 이상일 때 여러 측면을 고려해 가장 효율적인 후보 식별자를 주 식별자로 선택한다. 만약 후보 식별자 중에서 적당한 후보가 없다면 인조 식별자를 채택해 주 식별자로 사용할 수 있다. 주 식별자에는 어떠한 체계도 존재하지 않는 것이 좋다. 체계가 있다는 것은 변경될 가능성이 있다는 것이고 PK는 변경되지 않는 것이 원칙이다. 

고객 엔터티에서 #고객번호는 인조 식별자이지만 고객주소 엔터티에서 #고객번호(FK)는 업무 식별자가 된다. 

고객 별로 집주소/회사주소 등 주소값이 여러 개 존재할 수 있어서 주소순번(인조 식별자) 속성이 주 식별자로 사용됐다. 하지만 업무 식별자와 인조 식별자를 혼합한 형식으로 주 식별자를 사용하는 것은 바람직하지 않다. 
주소순번을 사용한 모델을 보면 주소의 순서가 중요한 것으로 오해할 수 있어 정확한 업무를 알 수 없게 될 가능성이 크다. 
종속 엔터티도 업무적으로 인스턴스를 구별하게 하는 속성이 업무 식별자가 된다. 고객번호, 주소 유형코드를 합치면 주 식별자가 된다. 업무 파악을 정확히 알 수 있다.
고객주소번호라는 인조 식별자를 활용한 모델이다.
만약, 집주소가 여러명인 고객을 관리하고 싶다면 [그림 8.6] 모델로는 불가능하기 때문에 [그림 8.7] 모델로 해결할 수 있다. 
혹은, 고객주소를 참조하는 엔터티가 있다면 이 모델을 사용하는 것이 하위(자식) 엔터티의 참조 속성이 간단해지기 때문에 고려해 볼 수 있다. 이 때는 고객번호(FK), 주소유형코드를 Unique 로 묶을 수 있다.

 

2-3 슈퍼 식별자

후보 식별자에 속성을 추가해서 만든 식별자를 의미한다. 후보 식별자 단독으로 이미 엔터티의 인스턴스를 식별할 수 있기 때문에 다른 속성을 추가해도 인스턴스는 당연히 식별된다. 하나의 엔터티에 슈퍼 식별자는 무수히 많이 존재할 수 있다.  슈퍼 식별자를 주 식별자로 사용하면 정규형에도 위배되고 엔터티 성격을 불분명하게 만들기 때문에 원칙적으로 사용하지 않아야 한다. 

2-4 대리 식별자

후보 식별자가 여러 개일 때 후보 식별자 중에서 주 식별자가 선택되고 남은 나머지 후보 식별자가 대리 식별자(대체 식별자)이다. [그림 8.8]에서 사원번호가 주 식별자로 선택이 되었다면 전화번호 , 주민등록번호, 고객번호 속성이 대리 식별자이다.

2-5 인조 식별자

하나 또는 두 개 이상 존재하는 후보 식별자 중에 주 식별자로 사용할 마땅한 후보가 없을 때는 일련번호와 같은 단독 속성을 사용해서 새로운 식별자를 만들어야 하는데 이것을 인조 식별자라 한다. 인조 식별자는 주로 후보 식별자가 복잡할 때 채택하게 되는데 실체 엔터티에서 많이 나타난다. 

2-6 외래 식별자

엔터티 간의 관계에서 발생하는데 상위(부모) 엔터티의 주 식별자가 하위(자식) 엔터티의 외래 식별자 속성이 되며 Foreign Key(FK)라고 부른다. 하위 엔터티의 FK가 업무 식별자면 식별 관계라고 표현하고 일반 속성이 되면 비식별 관계라고 부른다. 비식별 관계일 때는 부모 데이터가 없어도 독립적으로 생성될 수 있다. (FK 속성은 NULL허용이 가능하기 때문)

 

관계형 데이터 모델링 프리미엄 가이드 도서의 내용을 참고하였습니다.

 

'SQL > 데이터 통합' 카테고리의 다른 글

Supertypes & Subtypes 슈퍼타입과 서브타입  (0) 2025.02.11
Code 코드  (0) 2025.02.10
Attributes 속성  (0) 2025.02.07
Entity 엔터티  (0) 2025.02.07
데이터 통합이란  (0) 2025.02.07