TOP
class="layout-aside-left paging-number">
본문 바로가기
자격증/SQLD

데이터 모델링의 이해 - 식별자

by 기록자_Recordian 2023. 12. 27.
728x90
반응형

SQLD 1과목 데이터 모델링의 이해

<목차>

5. 식별자

A. 식별자의 개념

- 식별자는 엔터티를 대표하는 속성 의미

- 하나의 엔터티는 반드시 하나의 유일한 식별자를 가지고 있어야 함.

> 여러 개의 칼럼이 하나의 식별자가 되기도 함 (복합식별자)


B. 식별자의 특징

- 엔터티내 각 인스턴스를 유일하게 구분할 수 있는 구분자

- 다른 엔터티와 관계를 식별하는 식별자

- 유일성, 최소성, 불변성, 존재성을 만족


C. 식별자의 종류

(1) 엔터티 내에서 대표성을 가지는 지 여부

- 주식별자 (Primary Identifier) / 보조식별자 (Alternate Identifier)

 

(2) 엔터티 내에서 스스로 생성되었는지 여부

- 내부식별자 / 외부식별자 (Foreign Identifier)

 

(3) 단일 속성으로 식별이 되는지 여부

- 단일식별자 (Single Identifier) / 복합식별자 (Composit Identifier)

 

(4) 원래부터 존재했는지에 따라

- 본질식별자 / 인조식별자

* 원래 업무적으로 의미가 있던 식별자 속성을 대체하여 일련번호와 같이 새롭게 만든 식별자를 구분

 

식별자의 분류체계

분류 식별자 설명
대표성
여부
주식별자 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자  
보조식별자 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결을 못함  
스스로
생성여부
내부식별자 엔터티 내부에서 스스로 생성  ex) 학번
외부식별자  다른 엔터티와의 관계로 인하여 다른 엔터티로부터 받아오는 식별자 ex) 구매
속성의 수 단일식별자 하나의 속성으로 구성  ex) 학번, 사번
복합식별자 여러 개의 속성으로 구성  ex) '학년&반&번호'의 조합
대체
여부
본질식별자 비즈니스 프로세스에서 만들어짐   
인조식별자 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자 ex) 코드

D. 주식별자의 특징

(1) 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수

 

(2) 존재성: 주식별자가 지정되면 반드시 값이 존재

 

(3) 유일성: 주식별자에 의해 엔터티내에 모든 인스턴스들을 유일하게 구분

 

(4) 불변성: 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 불변


E. 주식별자 도출방법

- 해당 업무 및 데이터에서 주로 사용되는 속성을 주식별자로 지정

- 이름이나 명명된 호칭, 길이가 일정하지 않은 내용 등은 주식별자로 지정하지 않음.

- 복합키를 구성할 때 너무 많은 속성이 포함되지 않도록 주의


F. 키의 종류

기본키
(Primary Key, PK)
후보키 중에서 엔터티를 대표할 수 있는 키
후보키
(Candidate Key)
유일성과 최소성을 만족하는 키
슈퍼키
(Super Key)
유일성은 만족하지만 최소성은 만족하지 못하는 키
대체키
(Alternate Key)
여러 개의 후보키 중에서 기본키를 선정하고 남은 키
외래키
(Foreign Key, FK)
타 테이블의 기본키 필드를 가리키는 것으로 참조무결성을 확인하기 위해 사용되는 키
(허용된 값만 저장하기 위해 사용 / 다른 테이블과 연결)

 

[학생 Table]

학번 전화 번호 주소 이름
A230101 010-XXXX-XXXX 서울시 강남구 XX동 XX번지 홍길동

 

학번: 유일성 확보(모두 다름), 길이 동일, 불변성 확보 > 기본키

전화번호: 불변성 낮음. (바꿀 확률이 위의 네 가지 속성 중 제일 높음) > 대체키, 후보키

주소: 유일성 비교적 높으나, 길이가 다름 > 대체키, 후보키

이름: 유일성 미확보 (동명이인)


G. 식별자 관계와 비식별자 관계 비교

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

 

* 비식별자를 선택하는 기준

- 관계의 강약을 분석하여 상호간에 연관성이 약할 경우 비식별자 관계를 고려

- 자식테이블에서 독립적인 PK의 구조를 가지기 원할 때 비식별자 관계를 고려

- 모든 관계가 식별자 관계로 연결되면 SQL Where 절에서 비교하는 항목이 증가되어 조인에 참여하는 테이블에 따라 SQL 문장이 길어져 SQL 문의 복잡성이 증가되는 것을 방지하기 위해 비식별자관계를 고려

 

★ 데이터 모델링 전개 시에 각 엔터티 간의 관계를 비식별자 관계로 설정하면 이전 유형의 속성의 자식엔터티로 상속되지 않아 자식 엔터티 내에서 데이터를 처리할 때 쓸데없이 부모엔터티까지 찾아야 하는 경우 발생

 

 

* 비식별자 관계로 연결하는 것을 고려해야 하는 경우

- 부모엔터티에 참조값이 없어도 자식엔터티의 인스턴스가 생성될 수 있는 경우

- 여러 개의 엔터티를 하나로 통합하면서 각각의 엔터티가 갖고 있던 여러 개의 개별 관계가 통합되는 경우

- 자식쪽 엔터티의 주식별자를 부모엔터티와는 별도로 생성하는 것이 더 유리하다고 판단되는 경우

- 엔터티별로 데이터의 생명주기를 다르게 관리할 경우 비식별자 관계 생성

ex) 부모 엔터티의 인스턴스가 자식만 남겨두고 먼저 소멸

 


이전글

관계

 

다음글

데이터 모델과 SQL - 정규화

728x90
반응형