본문 바로가기
SQLD

SQL 이론 - 1과목 1장 (5)

by Poorm 푸름 2023. 6. 16.

1. 식별자(Identifiers) 개념


-
엔터티 내에서 인스턴스를 구분하는 구분자

- 하나의 엔터티에 하나의 유일한 식별자가 존재

- 식별자: 업무적으로 구분이 되는 정보, 논리적 데이터 모델링 단계에서 사용

- : 데이터베이스 테이블에 접근을 위한 매개체, 물리 데이터 모델링 단계에서 사용

 

 

2. 식별자의 특징 (---)

 

- 최소성: 속성의 수는 유일성 만족하는 최소의 수

  예) 사원번호도 있고 이미 고유한데 사원 분류 코드까지하면 부적절

 

- 불변성: 주식별자 값 자주 변하지 않음

  예) 사원번호 변하면 이전기록 말소하 고 새롭게 만든다

 

- 유일성: 모든 인스턴스들이 유일하게 구분됨

  예) 사원번호 개인별로 모두 부여

 

- 존재성: 주식별자가 지정이 되면 반드시 값 존재

  예) 사원번호 없는 직원은 존재 X

 

 

3. 식별자 분류

 

- 엔터티 내에서 대표성을 가지는가에 따라 구별

: 주식별자, 보조식별자

 

- 엔터티 내에서 스스로 생성되었는지에 따라 구별

: 내부식별자, 외부식별자

 

- 단일 속성으로 식별이 되는가에 따라 구별

: 단일식별자, 복합식별자

 

- 원래 의미가 있던 식별자 속성을 대체하여 일련번호와 같이 새롭게 만든 식별자를 구별

: 본질식별자, 인조식별자

 

4. 식별자 표기법

 

5. 주식별자 도출기준

 

- 자주 이용되는 속성을 주식별자로 지정

) 주민번호 vs 사원번호: 회사에선 사원번호가 주식별자 주민번호가 보조식별자

 

- 명칭, 내역 등과 같이 이름으로 기술되는 것 X, 이럴때에는 새로운 식별자를 생성하도록 한다

) 보통 일련번호와 코드 사용/ 부서번호를 주식별자, 부서명을 보조식별자

 

- 너무 많은 속성이 포함되지 않도록 한다

) 너무 많으면 새로운 인조식별자 생성

 

 

6. 식별자관계와 비식별자관계에 따른 식별자

 

- 외부식별자

: 다른 엔터티와의 관계를 통해 자식 엔터티에 생성되는 속성

: 데이터베이스 생성 시 Foreign Key 역할

: 부모 엔터티로 받은 외부식별자를 자식의 주식별자로 이용할 건지

  부모와 연결이 되는 속성으로만 이용할 것인지를 결정해야함

 

- 식별자관계

: 자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우

: 부모로부터 받은 식별자를 자식 엔터티의 주식별자로 이용할 경우

  Null값이 오면 안되므로 반드시 부모엔터티가 생성되어야함

: 부모로부터 받은 속성을 자식이 모두 주식별자로 사용한다면 1:1 관계

: 부모로부터 받은 속성을 포함하거나 스스로 가지고 있는 속성이 있을 경우는 1:M 관계

 

- 비식별자관계

: 부모로부터 속성을 받았지만 자식의 주식별자로 사용하지 않고 일반적인 속성으로 사용하는 경우

: 상속이 필수가 아니므로 부모 없는 자식 생성의 경우

: 엔터티마다 데이터의 생명주기가 다를 경우 (부모가 자식만 남겨두고 먼저 소멸)

  (같이죽는 경우에는 식별자 관계)

 : 여러 개의 엔터티가 하나의 엔터티로 통합되었는데 각각의 엔터티가 별도의 관계를 가질 경우

 

 

4) 자식의 주식별자로 사용이 아닌 자식엔터티에서 별도의 주식별자를 생성하는 것이 더 유리

    비식별자 관계에 의한 외부식별자로 표현

  예) 계약 엔터티의 주식별자가 1개인 것이 더 효율적이라고 판단

       (계약번호 = 주식별자, 계약사원번호 = 일반속성, 외부식별자)

 

 

<식별자 외부식별자 구분예시>

 

- 식별자 관계 -

: 외부식별자(FK) = 주식별자

: 부모 주식별자를 자식의 주식별자로 복사

: 실선

 
 
  주식별자: <학생> 학번, <수강> 과목코드, 수강년도, 학번(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

 

'SQLD' 카테고리의 다른 글

SQL 이론 - 1과목 2장 (2)  (1) 2023.06.17
SQL 이론 - 1과목 2장 (1)  (0) 2023.06.16
SQL 이론 - 1과목 1장 (4)  (0) 2023.06.16
SQL 이론 - 1과목 1장 (3)  (0) 2023.06.16
SQL 이론 - 1과목 1장 (2)  (0) 2023.06.16