본문 바로가기
study_db

데이터 모델링의 식별자 개념

by developer_j 2021. 4. 17.
728x90
반응형

1. 식별자(Identifiers)

엔터티는 인스턴스의 집합이고, 각각의 인스턴스들은 구별이 되어야 한다. 구별이 되는 요소를 식별자라고 하고, 하나의 엔터티가 가지고 있는 속성 중 대표성을 나타내는 속성이 식별자가 되어야 한다. 식별자와 키(key)가 동일하다고 생각할 수 있는데 "식별자"는 업무적으로 사용하는 정보로 논리데이터 모델링 단계에서 사용하고, ""는 데이터베이스 상의 테이블에 접근하기 위한 매개체로 물리데이터 모델링 단계에서 사용한다.

 

2. 주식별자의 특징

주식별자의 경우, 다음과 같은 특징을 가진다.

  • 유일성 : 주식별자에 의해 엔터티 내에 모든 인스턴스들이 유일하게 구분되어야 한다.                                                 (예 - 사번은 사원테이블의 사원을 고유하게 구분)
  • 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수여야 한다.                                                     (예 - 사번처럼 하나로 족하면 하나로 끝. 추가 속성을 주식별자로 함께 구성할 필요가 없음)
  • 불변성 : 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.                                                                         (예 - 사번 값이 자주 변경되면 사번을 참조하는 다른 데이터들이 불안해질 수 있음)
  • 존재성 : 주식별자가 지정이 되면 반드시 값이 들어가야 한다.                                                                                 (예 - 사번 값은 반드시 존재해야함)

 

3. 식별자 분류

식별자의 종류는 구별 분류에 따라 나뉜다.

첫째, 자신의 엔터티 내에서 대표성을 가지는 가에 따라 주식별자보조식별자로 구분할 수 있다.

둘째, 엔터티 내에서 스스로 생성되었는지 여부에 따라 내부식별자외부식별자로 구분할 수 있다.

셋째, 또한 단일 속성으로 식별이 되는지에 따라 단일식별자복합식별자로 구분할 수 있다.

마지막으로 원래 상품번호처럼 업무적으로 의미가 있던 식별자 속성을 본질식별자라고 하는데, 필요에 따라 채번코드나 데이터의 조합으로 새롭게 일련번호를 만들어 대체하는 경우를 인조식별자라고 한다.

** 위의 글씨 강조 색상은 좀더 가시적으로 구분하기 위한 용도이지 같은 색상의 단어끼리 같은 뜻/같은 집합이라는 것은 아니다.

 

4. 식별자 관계와 비식별자 관계(중요)

자기 자신의 엔터티에서 필요한 속성이라기보다는, 다른 엔터티와의 관계를 통해 자식쪽 엔터티에 생성되는 속성을 외부 식별자라고 한다. 이 때, 부모엔터티에게서 받은 외부 식별자를 자식엔터티의 주식별자로 이용할 것인지, 또는 부모와 연결되는 속성으로만 이용할 것인지를 결정해야 한다. 이에 따라 식별관계와 비식별관계가 결정된다.

식별자 관계 - 부모로부터 받은 식별자를 자식 엔터티의 주식별자로 이용하는 경우로, null값이 오면 안되기 때문에 반드시 부모엔터티가 생성되어야 자식 엔터티가 생성된다. (예 - 회사 & 사원, 학교 & 학생)

비식별자 관계 - 부모로부터 식별자를 받았지만 자식엔터티의 주식별자로 사용되지 않는 경우이다. 아래의 경우에 비식별자 관계를 설정한다.

  • 부모엔터티로부터 받은 식별자가 반드시 필수가 아니어도 무방하여 부모 엔터티가 없어도 자식 엔터티가 생성될 수 있는 경우. (예 - 회사를 다니지 않는 프리랜서도 직장인으로 등록될 수 있음.)
  • 부모-자식 엔터티의 생명주기를 다르게 관리하는 경우. 부모엔터티의 인스턴스가 자식의 엔터티와 관계를 가지고 있지만 자식만 남겨두고 먼저 소멸될 수 있는 경우이다.
  • 여러 엔터티가 하나의 엔터티로 통합되어 표현되면서 각각의 다른 엔터티와 별도의 관계를 가지는 경우.               (예 - 기존의 인터넷접수/전화접수 & 인터넷회원/전화회원 DB 구조 --> 접수 & 인터넷회원/전화회원 )
  • 자식엔터티에서 주식별자로 써도 되지만, 자식엔터티에서 별도의 주식별자를 생성하는 것이 더 유리한 경우.

 

728x90
반응형