티스토리 뷰
1. 식별자(Identifiers) 개념
l 식별자는 엔티티를 구분짓는 논리적인 이름
l 식별자는 엔티티를 대표할 수 있는 속성
l 엔티티에는 반드시 하나의 유일한 식별자가 존재한다.
2. 식별자의 특징
특징 | 내용 | 비고 |
유일성 | 주식별자에 의해 엔티티내에 모든 인스턴스들을 유일하게 구분함 | Ex) 사원번호가 주식별자가 모든 직원들에 대해 개인별로 고유하게 부여됨 |
최소성 | 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다. | Ex) 사원번호만으로도 고유한 구조인데 사원분류코드 + 사원번호로 식별자가 구성될 경우 부적절한 주식별자 구조임 |
불변성 | 주식별자가 한 번 특정 엔티티에 지정되면 그 식별자의 값은 변하지 않아야 함 | Ex) 사원번호의 값이 변한다는 의미는 이전기록이 말소되고 새로운 기록이 발생되는개념 |
존재성 | 주식별자가 지정되면 반드시 데이터 값이 존재(Null 안된다.) | Ex) 사원번호 없는 회사직원은 있을 수 없음 |
3. 식별자 분류 및 표기법
가. 식별자 분류
분류 | 식별자 | 설명 |
대표성 여부 | 주식별자 | 엔티티 내에서 각 어커런스를 구분할 수 있는 구분자이며, 타 엔티티와 참조관계를 연결할 수 있는 식별자 |
보조식별자 | 엔티티 내에서 각 어커런스를 구분할 수 있는 구분자이나, 대표성을 가지지 못해 참조관계 연결을 못함 | |
스스로 생성여부 | 내부식별자 | 엔티티 내부에서 스스로 만들어지는 식별자 |
외부식별자 | 타 엔티티와의 관계를 통해 타 엔티티로부터 받아오는 식별자 | |
속성의 수 | 단일식별자 | 하나의 속성으로 구성된 식별자 |
복합식별자 | 둘 이상의 속성으로 구성된 식별자 | |
대체 여부 | 본질식별자 | 업무에 의해 만들어지는 식별자 |
인조식별자 | 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자 |
나. 식별자 표기법
4. 주식별자 도출 기준
l 주식별자 도출기준
- 해당 업무에서 자주 이용되는 속성을 지정한다.
- 명칭, 내역 등과 같이 이름으로 기술되는 것을 피한다.
- 복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
5. 식별자관계와 비식별자관계에 따른 식별자
가. 식별자관계와 비식별자관계의 결정
- 외부식별자(Foreign Identifier)는 자기 자신의 엔티티에서 필요한 속성이 아니라 다른 엔티티와의 관계를 통해 자식 쪽에 엔티티에 생성되는 속성을 외부식별자라 하며 데이터베이스 생성 시에 FK(Foreign Key) 역할을 한다.
나. 식별자관계
- 자식엔티티의 주식별자로 부모의 주식별자가 상속되는 경우를 말한다.
- Null 값이 오면 안된다.
- 1:1관계 : 부모로부터 받은 속성을 자식엔티티가 모두 사용하고 그것만으로 주식별자로 사용할 경우
- 1:M관계 : 부모로부터 받은 속성, 다른 부모엔티티에서 받은 속성, 스스로 가진 속성으로 주식별자가 구성된 경우
다. 비식별자관계(Non-Identifying Relationship)
- 부모엔티티로부터 속성을 받았지만 자식엔티티의 주식별자로 사용하지 않고 일반적인 속성으로 사용하는 경우
u 비식별자관계 사용 예
n 자식엔티티에서 받은 속성이 반드시 필수가 아니기에 부모 없는 자식이 생성될 수 있는 경우
n 엔티티별로 데이터의 생명주기(Life Cycle)를 다르게 관리할 경우
n 여러 개의 엔티티가 하나의 엔티티로 통합되어 표현되었는데 각각의 엔티티가 별도의 관계를 가질 때
n 자식엔티티에서 별도의 주식별자를 생성하는 것이 더 유리할 경우
라. 식별자 관계로만 설정할 경우의 문제점
- 식별자관계로만 연결된 모델의 경우 주식별자 속성이 지속적으로 증가한다.
- 주식별자 증가로 복잡성과 오류가능성을 유발시킬 수 있다.
마. 비식별자 관계로만 설정할 경우의 문제점
- 비식별자 관계로 설정할 경우 속성이 자식엔티티로 상속되지 않는다.
- 속성이 자식엔티티로 상속되지 않아 부모엔티티까지 조인되는 현상이 발생
- 불필요한 조인이 발생되고 SQL구문도 길어져 성능 저하 현상이 발생
바. 식별자관계와 비식별자관계 모델링
1) 비식별자관계 선택 프로세스
2) 식별자와 비식별자관계 비교
항목 | 식별자관계 | 비식별자관계 |
목적 | 강한 연결관계 표현 | 약한 연결관계 표현 |
자식 주식별자 영향 | 자식 주식별자의 구성에 포함된 | 자식 일반 속성에 포함됨 |
표기법 | 실선 표현 | 점선 표현 |
연결 고려사항 | - 반드시 부모엔티티 종속 - 자식 주식별자 구성에 부모 주식별자포함 필요 - 상속받은 주식별자 속성을 타 엔티티에 이전 필요 | - 약한 종속관계 - 자식 주식별자 구성을 독립적으로 구성 - 자식 주식별자 구성에 부모 주식별자 부분 필요 - 상속받은 주식별자 속성을 타 엔티티에 차단 필요 - 부모쪽의 관계 참여가 선택 관계 |
3) 식별자와 비식별자를 적용한 데이터 모델
'자격증 > SQLD' 카테고리의 다른 글
SQLD - 데이터 모델과 성능 [정규화와 성능] (0) | 2017.07.28 |
---|---|
SQLD - 데이터 모델과 성능 [성능 데이터 모델링의 개요] (0) | 2017.07.28 |
SQLD - 데이터 모델링의 이해 [관계] (0) | 2017.07.27 |
SQLD - 데이터 모델링의 이해 [속성] (0) | 2017.07.26 |
SQLD - 데이터 모델링의 이해 [엔티티] (0) | 2017.07.26 |