1. 식별자 개념
- 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성
- 엔터티 내 유일한 인스턴스를 식별할 수 있는 속성의 집합
- 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재
- 식별자와 키의 구분
식별자 : 업무적으로 구분이 되는 정보 (논리 데이터 모델링 단계에서 사용)
키 : 데이터베이스 테이블에 접근을 위한 매개체 (물리 데이터 모델링 단계에서 사용)
2. 식별자의 특징
- 유일성 : 주식별자에 의해 엔터티 내에 인스턴스들이 유일하게 구분
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수
- 불변성 : 지정된 주식별자의 값은 자주 변하지 않아야 함
- 존재성 : 주식별자가 지정이 되면 반드시 값이 들어와야 함
3. 식별자 분류 및 표기법
# 식별자 분류
# 식별자 표기법
4. 주식별자 도출 기준
- 해당 업무에 자주 이용되는 속성을 주식별자로 지정
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정 자제
- 복합으로 주식별자로 구성할 경우, 너무 많은 속성이 포함되지 않도록 함
5. 식별자관계와 비식별자관계에 따른 식별자
# 식별자관계와 비식별자 관계의 결정
- 외부식별자 (Foreign Identifier) : 다른 엔터티와의 관계를 통해 자식 쪽 엔터티에 생성되는 속성 (FK 역할)
# 식별자 관계
- 자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우
- 부모로부터 받은 식별자를 자식엔터티의 주식별자로 이용하는 경우
→ Null 값이 오면 안되므로 반드시 부모엔터티가 생성 되어야 자신의 엔터티가 만들어짐 (1:1 or 1:M관계)
# 비식별자 관계
- 부모엔터티로부터 속성을 받았으나 자식엔터티의 주식별자로 사용하지 않고, 일반적인 속성으로만 사용하는 경우
- 아래와 같은 경우, 비식별자 관계에 의한 외부속성을 생성
1) 자식엔터티에서 받은 속성이 필수가 아니어도 되므로 부모 없는 자식이 생성될 수 있는 경우
2) 엔터티별로 데이터의 생성주기를 다르게 관리할 경우
3) 여러 개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각각의 엔터티가 별도의 관계를 가질 때
4) 자식 엔터티에 주식별자로 사용하여도 되지만 자식엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때 비식별자 관계에 의한 외부식별자로 표현
# 식별자 관계로만 설정할 경우 문제점
- 주식별자 속성이 지속적으로 증가할 수 밖에 없는 구조로서 개발자 복잡성과 오류가능성을 유발시킬 수 있는 요인이 됨
# 비식별자 관계로만 설정할 경우 문제점
- 불필요한 조인이 다량으로 발생하면서 SQL 구문이 길어지고 성능이 저하
# 식별자관계와 비식별자관계 모델
- 비식별자관계 선택 프로세스 (위 이미지) : 독립적으로 주식별자를 구성한다는 의미 (업무적 필요성과 성능상 필요여부를 모두 반영)
'데이터베이스(DB) > SQLD' 카테고리의 다른 글
[SQLD 1-2-2] 데이터 모델과 SQL - 관계와 조인의 이해 (38) | 2024.05.10 |
---|---|
[SQLD 1-2-1] 데이터 모델과 SQL - 정규화 (32) | 2024.05.09 |
[SQLD 1-1-4] 데이터 모델링의 이해 - 관계 (41) | 2024.05.06 |
[SQLD 1-1-3] 데이터 모델링의 이해 - 속성 (40) | 2024.05.06 |
[SQLD 1-1-2] 데이터 모델링의 이해 - 엔터티 (40) | 2024.05.05 |