태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

주 식별자(Primary Identifier)는 엔터티에 하나만 존재하는 대표 식별자입니다. 업무 식별자나 후보 식별자와 달리 물리적인 개념이 강해 PK(Primary Key)라고 생각해도 될 거 같습니다.

 

주 식별자 역할은 두 가지 관점으로 생각할 수 있습니다. 하나는 자신의 엔터티를 바라보는 관점이고요. 다른 하나는 다른 엔터티에서 바라보는 관점입니다.

 

전자는 자신의 엔터티 내에서 인스턴스를 식별하는 PK 역할이고요. 후자는 다른 엔터티에서 바라볼 때 그 엔터티와의 관계를 식별하는 FK(Foreign Key) 역할입니다.

 

주 식별자는 물리적으로 인스턴스를 대표하는 역할을 하기 때문에 인스턴스를 조회할 때 사용하고요. 또한 다른 엔터티와 조인(Join)할 때도 주 식별자를 사용합니다.

 

주 식별자를 선정하는 방법은 두 가지가 있습니다. 하나 또는 여러 개의 후보 식별자 중에서 대표로 지정할 수가 있고요. 적당한 후보가 없다면 인조 식별자를 만들어 주 식별자로 사용할 수도 있습니다. 주 식별자를 선정하는 방법은 이후에 자세히 설명하겠습니다.

 

주 식별자는 몇 가지 특성이 있습니다.

 

가장 기본적인 특성은 엔터티에 주 식별자가 반드시 존재해야 한다는 것입니다. 더 정확히 표현하면 엔터티에는 물리적인 주 키(Primary Key)가 반드시 존재해야 합니다. 간혹 PK가 없는 엔터티를 볼 수 있는데요. 이는 엔터티 무결성을 지키지 않은, 기본이 지켜지지 않은 모델입니다.

 

그리고 주 식별자는 하나만 존재해야 합니다. 이것이 또한 물리적으로 PK가 존재해야 하는 이유이기도 합니다. 하나만을 지정해야 다른 엔터티와의 조인(Join)이 가능합니다.

 

또한 주 식별자 속성은 당연히 널(Null) 값을 허용하지 않습니다.

 

주 식별자는 정규화의 기준이 되는 속성입니다. 정규화라는 행위가 먼저이고 그 결과에 따라 주 식별자가 정해지는지, 아니면 주 식별자가 정해지고 정규화가 진행되는지 애매한 점은 있지만, 최소한 정규형이 맞는지를 검증할 때는 주 식별자가 명확한 기준이 됩니다.

 

주 식별자(PK)는 외래 식별자(FK)와 함께 많이 알려진 식별자입니다. 실제로 많이 사용하는 식별자라 개념을 이해하는 것은 어렵지 않습니다. 어떤 속성을 주 식별자로 선택할지가 어려운 부분인데요. 주 식별자 선정 원칙은 별도로 설명하겠습니다.

 

 

블로그 이미지

블루퍼필

댓글을 달아 주세요

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

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

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

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

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



[그림
1]


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

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

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

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

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

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

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


 

블로그 이미지

블루퍼필

댓글을 달아 주세요