1. 식별자 (Identifier)
1) 개념
- 엔터티의 각 인스턴스를 개별적으로 식별하기 위해서 사용되는 하나의 속성 또는 속성들의 조합을 말한다.
- 엔터티 내에서 하나의 행을 콕 집어낼 때 사용하는 것이다.
2) 예
- 고객 (고객번호)
- 사원 (사원번호)
- 주문 (주문번호)
- 상품 (상품번호)
3) 특징
- 각각의 인스턴스 집합은 주 식별자에 의해 유일하게 구분할 수 있다. (유일성)
- 주 식별자를 구성하는 속성의 수는 최소한의 수로 이루어져야 한다. (최소성)
- 주 식별자가 한번 정해지면 그 값은 변하지 말아야 한다. (불변성)
- 주 식별자가 지정되면 반드시 데이터 값은 존재해야한다 (Null 불가, 존재성)
* NULL : 아직 정해지지 않은 미지의 값
4) 분류
- 대표성 여부
- 주 식별자 ; 예) 사원번호, 고객번호
- 보조 식별자 ; 주 식별자가 아니라서 대표성을 가지지 못한다. 예) 주민등록번호
- 속성의 수
- 단일 식별자 : 하나의 속성으로 구성된 식별자. 예) 고객 엔터티의 고객번호
- 복합 식별자 : 둘 이상의 속성으로 구성된 식별자. 예) 주문상세 엔터티의 주문번호
5) 식별자 도출 기준
- 비즈니스에서 자주 이용되는 속성을 주 식별자로 지정한다.
- 명칭, 장소와 같이 이름으로 기술이 되는 속성은 가능하면 주 식별자로 하지 않는다.
- 주 식별자를 복합 식별자로 할 경우 지나치게 많은 속성이 포함되지 않도록 한다.
6) 식별자 관계와 비식별자 관계
* 식별자 관계
- 자식 엔터티에서 부모 엔터티에 받은 외부 식별자를 자신의 주 식별자로 이용한 경우
- 자식 입장에서 외부식별자(FK)를 자신의 식별자로 사용하고 있는 것
- 강한 연결 관계
* 비식별자 관계
- 자식 엔터티에서 부모 엔터티에 받은 외부 식별자를 부모와 자식이 연결되는 속성으로서만 이용한 경우
- 자식 엔터티 입장에서 외부식별자(FK)를 자신의 식별자로 사용하고 있지 않은 것
- 약한 연결 관계
=> 업무 특징, 자식 엔터티의 주 식별자 구성, SQL 작성 전력에 의해 결정한다.
7) 식별자 관계로만 설정한 경우
- SQL문의 복잡성이 올라감
- 조인(Join) 조건이 누락되는 실수 발생 확률이 높아진다.
- 관계가 도출될 때마다 PK 속성의 수가 지속적으로 증가하게 된다.
- SQL문 개발 시 필연적으로 테이블 간의 조인을 하게 된다. 조인에 참여하는 식별자 속성의 개수가 많을 경우 SQL 문의 복잡도가 올라간다.
8) 고객/주문의 관계를 비식별자로 설정한 경우
- 주문 엔터티 구성 시 주문번호를 식별자로 지정하고 고객번호를 외부 식별자로 하는 비식별자 관계를 설정
- SQL 작성 시 복잡성과 오류 가능성 줄여주게 된다.
9) 비식별자 관계를 고려해야 하는 경우
- 데이터 모델링 작업 시 식별자 관계와 비식별자 관계를 취사선택하여 연결하는 것. 높은 수준 내공 필요로 하는 모델링 기술이다.
- 기본적으로 식별자 관계로 모든 관계를 연결하면서 다음 조건에 해당할 경우 비식별자 관계로 조정하면 된다.
1. 관계의 강/약 분석 => 약한 관계 => 비 식별자 관계 고려 2. 자식 테이블 독립 PK 필요 => 독립 PK 구성 => 비 식별자 관계 고려 3. SQL 복잡성 증가 (개발 생산성 하락) => PK 속성 단순화 => 비 식별자 관계 고려 |
'프로그래밍 > SQL' 카테고리의 다른 글
[SQL] 데이터 모델링 서식 설정과 데이터 모델링 예제 (0) | 2022.09.24 |
---|---|
[ SQL ] 정규화 개념 목적 용어 정의 1차 2차 3차 (0) | 2022.09.23 |
[SQL] 엔터티 뜻 종류 분류 관계 인스턴스 (0) | 2022.09.21 |
[SQL] 데이터 모델링 정의 표기법 엔터티 (0) | 2022.09.20 |
[SQL] 데이터 모델링 이해, 관계, 3요소, 설계단계 및 엔터티 분류 (0) | 2022.09.19 |