개주 훈련일지/📚 코살대 교본 학습

SQL) 식별자

lshfood2 2025. 12. 21. 19:16

[ 식별자 개념 ]

엔터티는 인스턴스들의 집합이다.

이러한 집합에서 단 하나의 인스턴스를 구별해 낼 수 있는

논리적인 이름이 필요하며 이러한 구분자를 식별자 라고 한다.

(식별자=Identifier)


[ 식별자 특징 ]

식별자는 주식별자에 의해 엔터티 내의

모든 인스턴스들이 유일하게 구분되어야 하고,

 

주식별자를 구성하는 속성의 수는

유일성을 만족하는 최소의 수가 되어야 한다.

 

지정된 주식별자의 값은 자주 변하지 않는 것이여 하고,

주식별자가 지정되면 반드시 값을 포함해야 한다.

특징 내용 예시
유일성 엔터티 내에 존재하는 각각의 인스턴스 집합은
주식별자에 의해 유일하게 구분할 수 있다.
사원번호 (개인별 고유)
최소성 유일성을 만족한다면 주식별자를 구성하는
속성의 수는 최소한의 수로 이루어져야 한다.
사원번호+사원분류 코드는 최소성 위반
불변성 엔터티 내 특정 인스턴스에 주식별자가
한번 정해지면 그 값은 변하지 말아야 한다.
사원번호 값이 바뀌면 안된다.
존재성 주식별자가 지정되면 반드시 데이터 값이
존재해야만 한다.(NULL 허용 불가)

주식별자로 정해진 속성은 반드시 데이터 값이
존재해야만 한다. (NULL 허용 불가)
사원번호가 없는 회사직원은 없다.

[ 식별자의 분류 ]

식별자는 대표성 여부, 스스로 생성 여부,

속성의 수, 대체 여부로 분류할 수 있다.

 

1) 대표성 여부

- 주식별자

- 보조식별자

 

2) 스스로 생성 여부

- 내부식별자

- 외부식별자

 

3) 속성의 수

- 단일식별자

- 복합식별자

 

4) 대체 여부

- 본질식별자

- 인조식별자


[ 식별자 도출 기준 ] 

아래와 같이 3가지 기준을 지닌다.

 

1) 

비즈니스에서 자주 이용되는 속성을 주식별자로 지정한다.

 

2)

명칭, 장소와 같이 이름으로 기술되는 속성은
가능하면 주식별자로 하지 않는다.

 

3)

주식별자를 복합식별자로 할 경우
지나치게 많은 속성이 포함되지 않도록 한다.


[ 비식별자 관계 ]

자식 엔터티 입장에서 외부식별자(FK)를

자신의 식별자로 사용하고 있지 않은 것을

비식별자 관계라고 한다. 

 

비식별자 관계를 갖는 경우

자식 엔터티에서 받은 속성이 반드시 필수가 아니어도

무방하기 때문에 부모 없는 자식이 생성될 수 있는 경우

 

부모 엔터티의 주식별자를 자식 엔터티의 주식별자 속성으로

사용해도 되지만, 자식 엔터티에서 별도의 주식별자를 생성하는 것이

더 유리하다고 판단될 때 비식별자 관계에 의한 외부식별자로 표현


[ 간단 비교 ]

항목 식별자 관계 비식별자 관계
목적 강한 연결 관계를 표현 약한 연결 관계를 표현
자식 주식별자 영향 부모 엔터티의 주식별자 속성이
자식 엔터티의 주식별자 구성에 포함
부모 엔터티의 주식별자 속성이
자식 엔터티의 일반 속성
연결 고려사항 부모 엔터티에 종속되는 경우

자식 엔터티의 주식별자 구성에 
부모 엔터티의 주식별자 속성이
필요한 경우

부모 엔터티에게서 상속받은
주식별자 속성을 타 엔터티에
이전이 필요한 경우
부모/자식 간 약한 종속 관계

자식 엔터티의 주식별자 구성을
독립적으로 구성할 경우

부모 엔터티로부터 상속받은
주식별자 속성을 타 엔터티에
이전하지 않도록 차단하는 경우 

부모 엔터티의 주식별자가
NULL이 허용되는(선택관계) 경우

'개주 훈련일지 > 📚 코살대 교본 학습' 카테고리의 다른 글

프로젝트 실행과 모니터링  (1) 2025.12.21
SQL) 성능 데이터 모델링 개요  (0) 2025.12.21
SQL) 관계  (0) 2025.12.20
프로젝트 팀 조직  (1) 2025.12.18
파일 입출력  (0) 2025.12.16