본문 바로가기

데이터 Story/모델링 이론

식별자(Key) 속성 & 비식별자(Non-Key) 속성

식별자 속성이란 엔터티에 존재하는 인스턴스의 유일성을 보장해 주는 속성이나 속성 집합입니다.

엔터티의 인스턴스마다 서로 다른 값을 가지는 속성이 식별자입니다. 같은 값이 하나라도 존재하면 식별자가 아닙니다.

흔히 말하는 PK는 테이블에 지정된 물리적인 제약(Constraints)입니다. 임의의 속성을 하나 추가하거나 여러 속성을 묶어서 PK 역할을 하도록 만들 수 있기 때문에, PK가 업무 식별자나 후보 식별자와 동일한 개념은 아닙니다. 업무(후보) 식별자는 논리적으로 인스턴스를 구별하는 속성입니다.

식별자를 지칭하는 용어는 여러 가지가 있습니다. 업무 식별자, 후보 식별자, 주 식별자, 대리 식별자, 인조 식별자, 외래 식별자, 슈퍼 식별자 등이 있는데요. 자세한 설명은 곧이어 할 것입니다.

이중에 하나의 엔터티에 물리적으로 존재하는 식별자로는 주 식별자, 대리 식별자, 외래 식별자가 있습니다. 나머지 식별자는 쓰임새에 따른 구분입니다. [그림1] 사원 엔터티에서 사원번호 속성은 주 식별자이고요. 사원주민등록번호 속성은 대리 식별자입니다. 소속부서번호 속성은 외래 식별자입니다.



[그림
1]


따라서 사원번호, 사원주민등록번호, 소속부서번호 속성은 식별자(Key) 속성이고요. 사원명, 입사일자, 퇴사일자, 휴대전화번호 속성은 비식별자(Non-Key) 속성입니다.

사원명 속성과 같은 비식별자 속성의 값은 중복 존재할 수 있기 때문에, 홍길동이라는 이름의 사원은 여러 명 존재할 수 있기 때문에 사원명 속성으로는 인스턴스를 구별할 수 없습니다. 유일하게 식별할 수 없기 때문에 비식별자 속성입니다.

식별자 속성을 다르게 표현하면 결정자(Determinant) 속성입니다. 비식별자 속성은 종속자(Dependent) 속성과 같고요.

연관된 속성을 묶는 과정이 정규화(Normalization)인데요. 묶는 기준이 결정자입니다. 이렇게 묶여서 결정자 역할을 하는 속성(식별자 속성)과 종속자 역할을 하는 속성(비식별자 속성)이 모이면 엔터티가 됩니다.

식별자(결정자) 속성이 엔터티의 본질이나 태생과 관련이 있다면, 비식별자(종속자) 속성은 엔터티의 특성을 묘사하는 역할을 합니다.

그리고 하나의 속성이 식별자의 역할을 하지 못할 때는 여러 속성이 묶여 식별자(복합 식별자)가 될 수 있습니다.

엔터티의 식별자(결정자)가 정해지면 그 엔터티가 정의된 것이나 마찬가지여서 식별자는 데이터 모델링에서 중요한 역할을 합니다. 집중해야 할 부분입니다.