데이터 모델링의 이해 (4) 식별자
1. 식별자의 개념
- 엔터티 내에서 인스턴스들을 구분 할 수 있는 구분자
-- 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재해야한다
2. 식별자의 특징
- 존재성 : 널값 안됨
- 유일성 : 유일해야함
- 최소성 : 주 식별자를 구성하는 속성의 수는 최소의 수가되어야함(유일성을 만족하는)
- 불변성 : 한번 정해지면 변하지 않아야함
(조나 유명한 최불암씨.. 로 암기했다)
실제 스키마 설계에서 가장 중요한 부분 중 하나라고 장담한다.
3. 식별자의 분류 및 표기법
1) 식별자 분류
-
대표성 : 주 식별자 + 보조 식별자
-
대체여부 : 본질식별자 + 인조식별자
-
속성의수 : 단일 식별자 + 복합 식별자
-
스스로 생성 : 내부 식별자 + 외부 식별자
(대대속스로 암기.. 꼭 외우자! 각 성징별 분류 기준도 다 암기했던거로 기억한다)
2) 식별자의 표기법 : 위 분류를 통해서 구성할 수 있음
4. 주 식별자 도출 기준
- 해당 업무에서 자주 사용
- 이름으로 기술된 것은 기피
- 복합으로 주식별자를 구성할 경우 새로운 인조식별자를 생성해서 데이터 모델을 구성
5. 식별자 관계와 비식별자 관계에 따른 식별자
1) 식별자 관계와 비 식별자 관계의 결정
- 외부 식별자 : 다른 엔터티와 관계를 통해 자식 엔터티에 생성되는 속성
- 자식 엔터티에서 외부 식별자를 자신의 주식별자로 이용할 것인지, 또는 속성으로만 이용할 것인지 결정해야함
2) 식별자 관계
- 부모에게 받은 식별자를 자식 엔터티의 주식별자로 이용하는 경우 널값이 안되므로, 반드시 부모엔터티가 생성되어야 자식 엔터티도 생성되는 구조
- 1:1 or 1: M 을 선택하는 것은 주 식별자가 추가로 있냐 없냐임
3) 비식별자 관계
- 부모에게 받은 식별자를 일반속성으로 사용하는 경우
- 비 식별자 관계에 의한 외부 속성이 생성되는 경우
-- 자식 엔터티에서 받은 속성이 필수값이 아닌 경우 부모 엔터티가 없는 자식 엔터티가 생성된다
-- 부모엔터티가 먼저 소멸될 수도 있음
-- 여러 엔터티가 하나의 엔터티로 통합되어 표현되어 있지만, 별도의 관계를 가지는 경우도 이에 해당됨
4) 식별자 관계로만 설정할 경우 문제점
- pk 속성의 수가 증가하게되고, 개발 복잡성과 오류 발생할 수 있음
5) 비 식별자 관계로만 설정할 경우 문제점
- 부모 엔터티를 상속받을 때는 주로 pk속성을 상속받는데, 이를 조건으로 사용하는 경우가 많음
- 그때 자식 엔터티 데이터 처리하는데 부모까지 가야하는 귀찮은 경우가 발생할 수 있음
6) 식별자 관계와 비식별자 관계 모델링
-
관계 분석 -> 관계의 강/약 분석 -> 자식 테이블 독립 pk 필요 -> 개발 복잡도 및 오류 및 개발 생산성 저하 (순서대로 문제 발생시 비식별자 관계 고려해야 함)
-
식별자 관계 : 강한 연결관계 // 자식 주식별자의 구성에 부모 식별자 포함 // 실선 표현 // 반드시 부모에 종속 // 상속받은 주식별자 속성을 타 엔터티에 이전 필요
-
비식별자 관계 : 약한 연결관계 // 자식 일반속성에 부모 식별자가 퐇마 // 점선표현 // 독립적으로 서로 구성 // 부모쪽의 관계 참여가 선택관계 // 타 엔터티 이전 x