Database 12. 데이터모델링 - 식별자

업데이트:
2 분 소요

데이터 모델링 - 식별자

Identifiers

식별자 개념

  • 여러 개의 인스턴스 각각을 구분할 수 있는 논리적인 이름이 있어야 하는 구분자.
  • 엔터티 내의 각 인스턴스를 개별적으로 식별하기 위해 사용됨.
  • 식별자는 엔터티내에서 인스턴스들을 구분할 수 있는 구분자임.
    ex) 고객(고객번호), 사원(사원번호), 주문(주문번호), 상품(상품번호)

식별자의 특징

  • 주식별자에 의해 엔터티내에 모든 인스턴스들이 유일하게 구분되어야 함.
  • 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함.
  • 지정된 주식별자의 값은 자주 변하지 않는 것이어야 함.
  • 주식별자가 지정이 되면 반드시 값이 들어와야 함.

식별자의 분류

alt

1) 대표성 여부

주 식별자

  • 엔터티 내에서 각 행을 구분할 수 있는 구분자.
  • 타 엔터티와 참조관계를 연결할 수 있는 식별자.
    ex) 고객번호 , 사원번호

보조 식별자

  • 엔터티 내에서 각 행을 구분할 수 있는 구분자이나 대표성을 가지지 못해
    참조관계 연결을 못함.
    ex) 주민등록번호

2) 스스로 생성여부

내부 식별자

  • 엔터티 내부에서 스스로 만들어지는 식별자
    ex) 고객번호

외부 식별자

  • 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자
    ex) 교육이력엔터티의 사원번호 

3) 속성의 수

단일 식별자

  • 하나의 속성으로 구성된 식별자

복합 식별자

  • 둘 이상의 속성으로 구성된 식별자
    ex) 교육이력 엔터티의 사원번호 + 수강일자

alt

4) 대체여부

본질 식별자

  • 업무에 의해 만들어지는 식별자
    ex) 고객번호

인조 식별자

  • 인위적으로 만든 식별자
    ex) 주문엔터티의 고객번호 + 주문번호 + 순번

식별자 도출 기준

  • 해당 업무에서 자주 이용되는 속성을 주식별자로 지정함.
  • 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않음.
  • 복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 함.

식별자 관계와 비식별자 관계의 결정

  • 외부식별자 (Foreign Identifier)는 자기 자신의 엔터티에서 필요한 속성이
    아니라 다른 엔터티와의 관계를 통해 자식 쪽 엔터티에 생성되는 속성
    - 데이터 베이스 생성시에 Foreign key 역할을 함
  • 자식 엔터티에서 부모엔터티로부터 받은 외부식별자를 자신의 주식별자로 이용할
    것인지 (식별자 관계) 또는, 부모와 연결이 되는 속성으로서만 이용할
    것인지 (비식별자 관계) 해야 함.

  • 식별자

alt

  • 비식별자

alt

식별자 관계

  • 자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우
  • 식별자 관계 (Identifying Relationship)라고 지칭함
  • 외부 식별자의 주 식별자 역할
  • 부모의 식별자가 자식에게도 식별자 역할을 함.

alt

비식별자 관계

  • 부모엔터티로 부터 속성을 받았지만 자식 엔터티의 주식별자로 사용하지 않고
    일반적인 속성으로만 사용하는 경우.
  • 비식별자 관계 (Non-Identifying Relationship)라고 함.
  • 자식엔터티에서 받은 속성이 반드시 필수가 아니어도 무방하기 때문임.
  • 자식엔터티에 주식별자로 사용하여도 되지만 자식엔터티에서 별도의 주식별자를
    생성하는 것이 더 유리하다고 판단될 때 비식별자 관계에 의한 외부식별자로 표현함
  • 외부 식별자는 FK로써의 역할을 함.
  • 부모의 식별자는 자식에게 식별자 역할을 하지않고 FK로써의 역할을 함.

식별자 관계로만 설정할 경우의 문제점

  • 지속적으로 식별자 관계를 연결한 데이터 모델의 PK속성의 수는 증가할 수 밖에 없는
    구조를 가지게 됨
  • 식별자 관계만으로 연결된 데이터 모델의 특징은 주식 별자 속성이 지속적으로 증가
    할수 밖에 없는 구조로서 개발의 복잡성과 오류가능성을 유발시킬 수 있음
  • 방안
			약한관계
	관계분석 ==> 관계의 강/약 분석 =====> 비식별자 관계 고려

					    독립PK구성
		     자식테이블 독립 PK 필요 ======> 비식별자 관계 고려
						    PK속성 단순화
		     SQL 복잡성 증가(개발생산성하락) ===========> 비식별자 관계 고려

관계

        			식별자 관계		            비식별자 관계
======================================================================
1)목적		강한 연결 관계 표현		  약한 연결 관계 표현
----------------------------------------------------------------------
2)자식		주식 주 식별자의 구성에 포함	 자식 일반 속성에 포함됨
----------------------------------------------------------------------
3)연결고려	반드시 부모 엔터티 종속		    약한 종속관계
----------------------------------------------------------------------
사항		자식 주식별자구성에 부모     자식 주식별자 구성을 독립적
			  식별자포함 필요	으로 구성
---------------------------------------------------------------------- 

댓글남기기