Database/SQLD 시험 준비

챕터01. 데이터 모델링의 이해 - 1.5 식별자

parkes811 2022. 11. 28. 19:58
  • 식별자 (Identifiers) 개념
  1. 엔터티는 인스턴스들의 집합이다. 여러 개의 집합체를 담고 있는 하나의 배열에서 각각을 구분할 수 있는 논리적인 이름이 필요한데 이 구분자를 식별자 (Identifier)라고 한다.
  2. 엔터티내의 각 인스턴스를 개별적으로 식별하기 위해 사용된다.

고객 (고객번호)    사원 (사원번호)    주문(주문번호)   상품 (상품번호)

※ 식별자는 엔터티내에서 인스턴스들을 구분할 수 있는 구분자이다.

 

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

 

특징 내용 비고
유일성 - 주식별자에 의해 엔터티내에 모든 인스턴스들을 유일하게 구분함 ex) 학번이 주식별자가 모든 학생에게 대해 개인별로 고유하게 부여됨
최소성 - 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함 ex) 학번만으로도 고유한 구조인데 학번 + 반 번호로 식별자가 구성될 경우 부적절한 주식별자 구조임
불변성 - 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 ex) 학번의 값이 변한다는 의미는 이전기록이 말소되고
새로운 기록이 발생되는 개념임 
존재성 - 주식별자가 지정되면 반드시 데이터 값이 존재 (NULL 안됨) 해야함 ex) 학번이 없는 학생은 있을 수 없음

 

  • 식별자 분류
분류 식별자 설명
대표성
여부
주식별자 - 엔터티 내에서 각 행을 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자
ex) 사원번호, 고객번호, 학번 등
보조식별자 - 엔터티 내에서 각 행을 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결을 못함
ex) 주민등록번호
스스로
생성여부
내부식별자 - 엔터티 내부에서 스스로 만들어지는 식별자 ex) 고객번호
외부식별자 - 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자 ex) 주문엔터티의 고객번호
속성의 수 단일식별자 - 하나의 속성으로 구성된 식별자 ex) 고객 엔터티의 고객번호
복합식별자 - 둘 이상의 속성으로 구성된 식별자 ex) 주문상세엔터티의 주문번호 + 상세순번
대체여부 본질식별자 - 업무에 의해 만들어지는 식별자 ex) 고객번호
인조식별자 - 업무적으로 만들어지지 않지만 원조식별자가 복잡한 구성을 가지고 있어 인위적으로 만든 식별자
ex) 주문엔터티의 주문번호 ( 고객번호 + 주문번호 + 순번)

 

 

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

 

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

- 엔터티 사이 관계 유형은 업무 특징, 자식엔터티의 주 식별자 구성, SQL 전략에 의해 결정된다.

 

  • 식별자관계
  1. 자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우식별자 관계 (Identifying Relationship) 라고 한다.
  2. 부모로부터 받은 식별자를 자식엔터티의 주식별자로 이용하는 경우는 NULL 값이 오면 안되므로 반드시 부모 엔터티가 생성되어야 자신의 엔터티가 생성되는 경우이다.

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

 

 


 

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

 

  • 식별자관계와 비식별자관계

 

항목 식별자 관계 비 식별자 관계
목적 강한 연결 관계 표현 약한 연결 관계 표현
자식 주 식별자 영향 자식 주 식별자의 구성에 포함됨 자식 일반 속성에 포함됨
연결 고려사항 - 반드시 부모 엔터티 종속
- 자식 주 식별자 구성에 부모 주 식별자 포함 필요
- 상속받은 주 식별자 속성을 타 엔터티에 이전 필요
- 약한 종속관계
- 자식 주 식별자 구성을 독립적으로 구성
- 상속받은 주 식별자 속성을 타 엔터티에 차단 필요
- 부모 쪽의 관계 참여가 선택관계일 수 있음