Terriermon - Digimon

2. 식별자(Identifiers)

2022. 2. 3. 16:27자격증/SQLD

2-1. 식별자(Identifiers)란?

 

우리는 앞에서 인스턴스들의 집합(조합)이 엔터티라고 했다. 그럼, 엔터티내에서 특정 인스턴스를 구별하는 방법은 무엇일까? 이를 위해서 식별자가 존재한다. 즉, 여러 개의 인스턴스를 담고 있는 엔터티에서 인스턴스를 구별하기 위한, 즉 엔터티를 대표하는 속성을 의미하며 하나의 엔터티에서는 반드시 하나의 유일한 식별자가 존재해야 한다. 

데이터베이스 공부를 했던 사람이라면 키(Key)와 식별자를 동일하게 생각할 수 있는데, 식별자는 업무적으로 구분이 되는 정보이므로 논리 데이터 모델링 단계에서 사용하는 용어이며, 키(Key)는 데이터베이스에서 테이블에 접근을 하기 위한 것으로 물리 데이터 모델링 단계에서 사용하는 것으로 약간의 차이가 존재한다.

 

 

2-2. 식별자의 특징

 

여기서 알아보는 식별자의 특징에서는 사실상 주 식별자를 기준으로 한다. 이후에 알아볼 내용이지만 주 식별자 이외에 외부식별자라는 개념도 존재하는데, 외부식별자의 경우 주식별자의 특징과 일치하지 않으며 참조무결성 제약조건에 따른 특징을 갖는다.

그럼 주 식별자가 가지는 특징은 다음과 같다.

 

- 유일성

주식별자에 의해 엔터티내에 모든 인스턴스들을 유일하게 구분할 수 있어야 함

 

- 최소성

주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함

 

- 불변성

주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함

 

- 존재성

주식별자가 지정되면 반드시 데이터 값이 존재 해야함(Null값 안됨)

 

 

2-3. 식별자의 분류

 

2-3-1. 대표성 유무에 따른 분류

 

- 주식별자(Primary Identifier)

엔터니 내에서 각 어커런스를 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자

 

- 보조식별자(Alternate Identifier)

엔터티 내에서 칵 어커런스를 구분할 수 있는 구분자이지만 대표성을 가지지 못해 참조관계 연결을 못함

 

 

2-3-2. 스스로 생성되었는지에 따른 분류

 

- 내부식별자

엔터티 내부에서 스스로 만들어지는 식별자

 

- 외부식별자(Foreign Identifier)

타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자

 

 

2-3-3. 단일 속성인지에 따른 분류

 

- 단일식별자(Single Identifier)

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

 

- 복합식별자(Composit Identifier)

둘 이상의 속성으로 구성된 식별자

 

 

2-3-4. 업무적 의미가 있는가에 따른 분류

 

- 본질식별자

업무에 의해 만들어지는 식별자

 

- 인조식별자

업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자

 

 

2-4. 주식별자 도출기준

 

데이터 모델링에 있어서 주식별자를 도출하는 것은 중요한 작업이다. 주식별자를 도출하기 위한 기준은 아래와 같다.

 

- 해당 업무에서 자주 이용되는 속성을 주식별자로 정의한다.

- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.

- 복합으로 주식별자를 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.

 

 

2-5. 비식별자 관계(Non-Identifying Relationship)

 

부모 엔터티로부터 속성을 받았지만 이를 자식 엔터티의 주 식별자로 사용하지 않고 일반적인 속성으로 사용하게 되는 경우가 있는데 이러한 경우를 비식별자 관계(Non-Identifying Relationship)라고 한다. 다음의 네가지 경우에 대해서 비식별자 관계에 의한 외부속성을 생성한다.

 

1) 자식엔터티가 부모엔터티로부터 받은 속성이 반드시 필수 값이 아니기 때문에 부모 없는 자식이 생성될 수 있는 경우

 

2) 엔터티별로 데이터의 생명주기(Life Cycle)를 다르게 관리할 경우. 예를 들어, 부모 엔터티가 자식 엔터티보다 먼저 소멸되는 경우 등을 말한다.

 

3) 여러개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각각의 엔터티가 별도의 관계를 가질 때

 

4) 자식엔터티에 주식별자로 사용하여도 되지만, 자식엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때

 

 

2-6. 식별자관계와 비식별자관계 모델링

 

2-6-1. 비식별자관계 선택 프로세스

 

식별자 관계를 파악하는데에 있어서 중요한 한가지는 비식별자관계를 파악하는 것이다. 비식별자관계를 파악할때에 있어서 다음과 같은 흐름에 따라 선정한다면 합리적으로 비식별자관계를 설정할 수 있다.

 

2-6-2. 식별자관계와 비식별자관계 비교

 

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



출처: https://doorbw.tistory.com/228 [Tigercow.Door]

반응형

'자격증 > SQLD' 카테고리의 다른 글

SQL 자격검정 실전문제 제1장 답  (0) 2022.02.20
SQL 자격검정 실전문제 제1장 문제  (0) 2022.02.20
1. 관계(Relationship)  (0) 2022.02.03
2. 속성Attribute  (0) 2022.02.03
1. 엔터티Entity  (0) 2022.02.03