식별자 : 엔터티 내에서 인스턴스를 구분하는 구분자, 식별자는 논리적, Key는 물리적 데이터 모델링 단계에 사용
식별자의 특징: 유일성, 최소성, 불변성, 존재성 (유최불존)
- 유일성 : 주 식별자에 의해 모든 인스턴스들이 유일하게 구분 ex) 식별자의 구조 : 사원번호 ( o ), 사원번호 +분류 코드 (x)
- 최소성 : 주 식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
- 불변성 : 지정된 주 식별자의 값은 자주 변하지 않아야 함 -> 사원번호가 변하면 이전 기록 말소
- 존재성 : 주 식별자가 지정되면 반드시 값이 들어와야 함 (Not Null)
식별자 분류
대표성 여부 : 주 식별자, 보조 식별자
- 주 : 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자, 타 엔터티와 참조관계를 연결 0 (대표성이 있으므로)
- 보조: 구분자이나 대표성 x. 참조관계 연결 x 스스로 생성여부 : 내부 식별자, 외부 식별자
내부 : 스스로 생성하는 식별자( 엔터티 내에서 생성)
외부 : 타 엔터티로부터 받아오는 식별자 ( 자기 자신의 엔터티에서 필요한 속성 X)
→ 참조 무결성 제약조건에 따른 식별자 특징 보유
속성의 수 : 단일 식별자, 복합 식별자
단일 : 하나의 속성으로 구성
복합 : 2개 이상의 속성으로 구성
대체 여부 : 본질 식별자, 인조 식별자
본질 : 업무에 의해 만들어 지는 식별자 ex) 원래 업무적 의미 있음
인조 : 인위적으로 만든 식별자 (비즈니스 프로세스에 의해 ) ex) 일련번호, 주문번호
주 식별자 도출 기준
1. 해당 업무에서 자주 이용되는 속성임
2. 명칭, 내역 등과 같이 이름으로 기술되는 것은 x
3. 복합으로 주 식별자로 구성할 경우 너무 많은 속성 x (물리 DB에서 조인으로 인한 성능저하)
==> 너무 많으면 인조 식별자 생성한다.
식별자 관계 ex) 비 식별자 관계에 의한 외부식별자
식별자 : 자식의 주 식별자로 부모의 주 식별자 상속
1. 부모로부터 받은 식별자를 자식 엔터티의 주 식별자로 이용하는 경우( 반드시 부모에 종속됨 ) /
부모- 자식 소멸 주기 동일
2. 강한 연결 관계 표현, 실선 표기
3. 식별자 관계로만 설정 시 주 식별자 증가로 오류 유발
비 식별자: 부모 속성을 자식의 일반 속성으로 사용( 상속받은 주 식별자 속성을 타 엔터티에 차단)
1. 부모 없는 자식이 생성될 수 있는 경우
2. 부모와 연결되는 속성으로만 이용
3. 부모와 자식의 생명주기가 다른 경우( 별도로 소멸)
4. 여러 개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각각의 엔터티가 별도의 관계를 가진 경우
5. 자식 엔터티에 별도의 주 식별자를 생성하는 것이 더 유리한 경우
6. SQL 문장이 길어져 복잡성 증가되는 것 방지
- 약한 연결관계 표현, 점선 표기
- 비 식별자 관계로만 설정 시 부모 엔터티와 조인하여 성능저하
'SQL' 카테고리의 다른 글
SQLD 시험 대비 - 데이터 모델과 성능 (2) (0) | 2023.03.03 |
---|---|
SQLD 시험 대비 - 데이터 모델과 성능 (1) (0) | 2023.03.01 |
SQLD 시험 대비 - 데이터 모델링의 이해 (2) (0) | 2023.03.01 |
SQLD 시험 대비 - 데이터 모델링의 이해 (1) (0) | 2023.02.28 |
SolveSQL - 두 테이블 결합하기 (0) | 2023.02.19 |