● 식별자 개념
- 하나의 엔티티에 구성된 여러 개의 속성 중에 엔티티를 대표할 수 있는 속성을 나타냄
- 하나의 유일한 식별자가 존재해야 함
- 식별자는 논리 모델링에서 사용하는 용어, 물리 모델링에서는 키(key)라고 표현
ex) 학생 엔티티의 주식별자는 학생번호 속성 => 학생 테이블의 기본키는 학생번호 컬럼
(논리 모델링) (물리 모델링)
● 주식별자 특징
㉮ 유일성 : 주식별자에 의해 모든 인스턴스를 유일하게 구분함
ex) 학생 엔티티에서 이름 속성은 동명이인이 발생할 수 있으므로 모든 인스턴스를 완벽하게 구분할 수 없
으므로 학생번호와 같은 유일한 식별자를 주식별자로 사용
㉯ 최소성 : 주식별자를 구성하는 속성은 유일성을 만족하는 최소한의 속성으로 구성
ex) 학생 엔티티의 주식별자는 학생번호만으로 충분한데, 학생번호 + 이름으로 구성할 필요 없음
㉰ 불변성 : 주식별자가 한번 특정 엔티티에 지정되면 그 식별자의 값은 변하지 않아야 함
(항상 고유값으로 존재해야 함)
ex) 학생 엔티티에 주식별자인 학생번호가 때에 따라 변경되서는 안됨
㉱ 존재성 : 주식별자가 지정되면 반드시 값이 존재해야 하며 NULL 은 허용 안 됨




● 주식별자 도출기준
1) 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
- 같은 식별자 조건을 만족하더라도 업무적으로 더 많이 사용되는 속성을 주식별자로 지정
ex) 학생번호와 주민번호 중에 학생번호가 주식별자, 주민번호는 보조식별자
2) 명칭이나 내역등과 같은 이름은 피함
- 이름 자체를 주식별자로 사용하는 행위를 피함
ex) 부서명 보다는 부서 코드를 부여하여 부서코드로 주식별자로 사용
3) 속성의 수를 최대한 적게 구성
- 주식별자를 너무 많은 속성으로 구성 시, 조인으로 인한 성능저하 발생 우려
- 일반적으로 7~8개 이상의 주식별자 구성은 새로운 인조식별자를 생성하여 모델을 단순화 시키는 것이 좋음
ex) 주문 엔티티에 대해 주문일자 + 주문상품코드 + 고객번호 + .... 등으로 구성 => 주문번호 속성 추가!
● 관계간 엔티티 구분
1) 강한 개체
- 독립적으로 존재할 수 있는 엔티티
ex) 고객과 계좌 엔티티 중, 고객은 독립적으로 존재할 수 있음
2) 약한 개체
- 독립적으로 존재할 수 없는 엔티티
ex) 고객과 계좌 엔티티 중, 계좌는 독립적으로 존재할 수 없음(고객에 의해 파생되는 엔티티)
● 식별 관계와 비식별관계
1) 식별관계(Identification Relationship)
- 하나의 엔티티의 기본키를 다른 엔티티가 기본키의 하나로 공유하는 관계
- 식별관계는 ERD 에서 실선으로 표시
ex) 사원과 교육이력 엔티티에서 양쪽 모두 기본키 중 일부가 사원번호임
사원 교육이력
# 사원번호 # 사원번호(FK)
# 수강일자
2) 비식별관계(Non-identification Relationship)
- 강한 개체의 기본키를 다른 엔티티의 기본키가 아닌 일반 속성으로 관계를 가지는 것
- 비식별관계는 ERD 에서 점선으로 표시
ex) 부서와 사원의 관계에서 부서의 부서번호(기본키)를 사원 엔티티에서는 일반키로 가짐
(사원에서는 사원번호가 기본키)
● 식별자 개념
- 하나의 엔티티에 구성된 여러 개의 속성 중에 엔티티를 대표할 수 있는 속성을 나타냄
- 하나의 유일한 식별자가 존재해야 함
- 식별자는 논리 모델링에서 사용하는 용어, 물리 모델링에서는 키(key)라고 표현
ex) 학생 엔티티의 주식별자는 학생번호 속성 => 학생 테이블의 기본키는 학생번호 컬럼
(논리 모델링) (물리 모델링)
● 주식별자 특징
㉮ 유일성 : 주식별자에 의해 모든 인스턴스를 유일하게 구분함
ex) 학생 엔티티에서 이름 속성은 동명이인이 발생할 수 있으므로 모든 인스턴스를 완벽하게 구분할 수 없
으므로 학생번호와 같은 유일한 식별자를 주식별자로 사용
㉯ 최소성 : 주식별자를 구성하는 속성은 유일성을 만족하는 최소한의 속성으로 구성
ex) 학생 엔티티의 주식별자는 학생번호만으로 충분한데, 학생번호 + 이름으로 구성할 필요 없음
㉰ 불변성 : 주식별자가 한번 특정 엔티티에 지정되면 그 식별자의 값은 변하지 않아야 함
(항상 고유값으로 존재해야 함)
ex) 학생 엔티티에 주식별자인 학생번호가 때에 따라 변경되서는 안됨
㉱ 존재성 : 주식별자가 지정되면 반드시 값이 존재해야 하며 NULL 은 허용 안 됨




● 주식별자 도출기준
1) 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
- 같은 식별자 조건을 만족하더라도 업무적으로 더 많이 사용되는 속성을 주식별자로 지정
ex) 학생번호와 주민번호 중에 학생번호가 주식별자, 주민번호는 보조식별자
2) 명칭이나 내역등과 같은 이름은 피함
- 이름 자체를 주식별자로 사용하는 행위를 피함
ex) 부서명 보다는 부서 코드를 부여하여 부서코드로 주식별자로 사용
3) 속성의 수를 최대한 적게 구성
- 주식별자를 너무 많은 속성으로 구성 시, 조인으로 인한 성능저하 발생 우려
- 일반적으로 7~8개 이상의 주식별자 구성은 새로운 인조식별자를 생성하여 모델을 단순화 시키는 것이 좋음
ex) 주문 엔티티에 대해 주문일자 + 주문상품코드 + 고객번호 + .... 등으로 구성 => 주문번호 속성 추가!
● 관계간 엔티티 구분
1) 강한 개체
- 독립적으로 존재할 수 있는 엔티티
ex) 고객과 계좌 엔티티 중, 고객은 독립적으로 존재할 수 있음
2) 약한 개체
- 독립적으로 존재할 수 없는 엔티티
ex) 고객과 계좌 엔티티 중, 계좌는 독립적으로 존재할 수 없음(고객에 의해 파생되는 엔티티)
● 식별 관계와 비식별관계
1) 식별관계(Identification Relationship)
- 하나의 엔티티의 기본키를 다른 엔티티가 기본키의 하나로 공유하는 관계
- 식별관계는 ERD 에서 실선으로 표시
ex) 사원과 교육이력 엔티티에서 양쪽 모두 기본키 중 일부가 사원번호임
사원 교육이력
# 사원번호 # 사원번호(FK)
# 수강일자
2) 비식별관계(Non-identification Relationship)
- 강한 개체의 기본키를 다른 엔티티의 기본키가 아닌 일반 속성으로 관계를 가지는 것
- 비식별관계는 ERD 에서 점선으로 표시
ex) 부서와 사원의 관계에서 부서의 부서번호(기본키)를 사원 엔티티에서는 일반키로 가짐
(사원에서는 사원번호가 기본키)