SQL 이론 - 1과목 1장 (5)
1. 식별자(Identifiers) 개념
- 엔터티 내에서 인스턴스를 구분하는 구분자
- 하나의 엔터티에 하나의 유일한 식별자가 존재
- 식별자: 업무적으로 구분이 되는 정보, 논리적 데이터 모델링 단계에서 사용
- 키: 데이터베이스 테이블에 접근을 위한 매개체, 물리 데이터 모델링 단계에서 사용
2. 식별자의 특징 (최-불-유-존)
- 최소성: 속성의 수는 유일성 만족하는 최소의 수
예) 사원번호도 있고 이미 고유한데 사원 분류 코드까지하면 부적절
- 불변성: 주식별자 값 자주 변하지 않음
예) 사원번호 변하면 이전기록 말소하 고 새롭게 만든다
- 유일성: 모든 인스턴스들이 유일하게 구분됨
예) 사원번호 개인별로 모두 부여
- 존재성: 주식별자가 지정이 되면 반드시 값 존재
예) 사원번호 없는 직원은 존재 X
3. 식별자 분류
- 엔터티 내에서 대표성을 가지는가에 따라 구별
: 주식별자, 보조식별자
- 엔터티 내에서 스스로 생성되었는지에 따라 구별
: 내부식별자, 외부식별자
- 단일 속성으로 식별이 되는가에 따라 구별
: 단일식별자, 복합식별자
- 원래 의미가 있던 식별자 속성을 대체하여 일련번호와 같이 새롭게 만든 식별자를 구별
: 본질식별자, 인조식별자
4. 식별자 표기법
5. 주식별자 도출기준
- 자주 이용되는 속성을 주식별자로 지정
예) 주민번호 vs 사원번호: 회사에선 사원번호가 주식별자 주민번호가 보조식별자
- 명칭, 내역 등과 같이 이름으로 기술되는 것 X, 이럴때에는 새로운 식별자를 생성하도록 한다
예) 보통 일련번호와 코드 사용/ 부서번호를 주식별자, 부서명을 보조식별자
- 너무 많은 속성이 포함되지 않도록 한다
예) 너무 많으면 새로운 인조식별자 생성
6. 식별자관계와 비식별자관계에 따른 식별자
- 외부식별자
: 다른 엔터티와의 관계를 통해 자식 엔터티에 생성되는 속성
: 데이터베이스 생성 시 Foreign Key 역할
: 부모 엔터티로 받은 외부식별자를 자식의 주식별자로 이용할 건지
부모와 연결이 되는 속성으로만 이용할 것인지를 결정해야함
- 식별자관계
: 자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우
: 부모로부터 받은 식별자를 자식 엔터티의 주식별자로 이용할 경우
Null값이 오면 안되므로 반드시 부모엔터티가 생성되어야함
: 부모로부터 받은 속성을 자식이 모두 주식별자로 사용한다면 1:1 관계
: 부모로부터 받은 속성을 포함하거나 스스로 가지고 있는 속성이 있을 경우는 1:M 관계
- 비식별자관계
: 부모로부터 속성을 받았지만 자식의 주식별자로 사용하지 않고 일반적인 속성으로 사용하는 경우
: 상속이 필수가 아니므로 부모 없는 자식 생성의 경우
: 엔터티마다 데이터의 생명주기가 다를 경우 (부모가 자식만 남겨두고 먼저 소멸)
(같이죽는 경우에는 식별자 관계)
: 여러 개의 엔터티가 하나의 엔터티로 통합되었는데 각각의 엔터티가 별도의 관계를 가질 경우
4) 자식의 주식별자로 사용이 아닌 자식엔터티에서 별도의 주식별자를 생성하는 것이 더 유리해
비식별자 관계에 의한 외부식별자로 표현
예) 계약 엔터티의 주식별자가 1개인 것이 더 효율적이라고 판단
(계약번호 = 주식별자, 계약사원번호 = 일반속성, 외부식별자)
<식별자 외부식별자 구분예시>
- 식별자 관계 -
: 외부식별자(FK) = 주식별자
: 부모 주식별자를 자식의 주식별자로 복사
: 실선

* <학생> = 단일식별자, <수강> = 복합식별자
보조식별자: <학생> 학생명, 연락처, <수강> 평점
외부식별자: <수강> 학번(FK)
- 비식별자 관계 -
: 외부식별자(FK) = 비식별자 속성
: 부모 주식별자를 자식의 일반속성으로 복사
: 점선
주식별자: <학과> 학과코드, <학생> 학번
* <학과>, <학생> = 단일식별자
보조식별자: <학과> 학과명, 학과주소, <학생> 학생명, 연락처, 학과코드
외부식별자: <학생> 학과코드(FK)
7. 식별자 관계로만 설정할 경우의 문제점
- 식별자 관계만으로 연결된 데이터 모델의 특징은 주식별자 속성이 지속적으로 증가하는 구조로서
개발자 복잡성과 오류 가능성을 유발
8. 비식별자 관계로만 설정할 경우의 문제점
- 일반적으로 각각의 엔터티에는 중요한 기준 속성이 있는데 비식별자 관계로 설정하면 자식 엔터티로
상속이 되지 않아 자식엔터티에서 데이터를 처리할 때 쓸데없이 부모엔터티까지 찾아가야함
9. 식별자관계와 비식별자관계 모델링
- 비식별자관계 선택 프로세스
: 흐름(Flow)에 따라 비식별자 관계를 선정
: 식별자관계로 모든 관계가 연결되면서 다음 조건에 해당할 경우만 비식별자 관계로 조정
: 자식의 독립된 주식별자 구성이 필요한지 분석
- 식별자와 비식별자관계 비교
**참고 사이트**
https://dataonair.or.kr/db-tech-reference/d-guide/sql/?pageid=5&mod=document&uid=329
식별자
1. 식별자(Identifiers) 개념 엔터티는 인스턴스들의 집합이라고 하였다. 여러 개의 집합체를 담고 있는 하나의 통에서 각각을 구분할 수 있는 논리적인 이름이 있어야 한다. 이 구분자를 식별자(Iden
dataonair.or.kr