본문 바로가기
자격증/SQLD

[#SQLD] 식별자

by dopal2 2023. 2. 8.
반응형

1. 식별자의 개념

           : 엔터티 내에서 인스턴스들을 구분할 수 있는 구분자, 논리적 데이터모델링 단계에 사용(식별자!=key, key는 물리적모델링 단계에 사용)

2. 식별자의 특징

           - 유일성 : 주 식별자에 의해 엔터티 내에 모든 인스턴스들을 유일하게 구분함

           - 최소성 : 주 식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야함

           - 불변성 : 주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함

           - 존재성 : 주 식별자가 지정되면 반드시 데이터 값이 존재 (NULL 안됨)

3. 식별자 분류 및 표기법

           . 식별자 분류

                     * 대표성 여부

                                - 주 식별자 : 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자, 타 엔터티와 참조관계를 연결할 수 있는 구분자.

                                - 보조 식별자 : 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자, 대표성을 가지지 못해 참조 연결 못함.

                     * 스스로 생성 여부

                                - 내부 식별자 : 엔터티 내부에서 스스로 만들어지는 식별자.

                                - 외부 식별자 : 타 엔터니와의 관계를 통해 타 엔터티로부터 받아오는 식별자.

                     * 속성의 수

                                - 단일 식별자 : 하나의 속성으로 구성된 식별자

                                - 복합 식별자 : 둘 이상의 속성으로 구성된 식별자

                     * 대체여부

                                - 본질 식별자 : 업무에 의해 만들어지는 식별자

                                - 인조 식별자 : 업무에 의해 만들어지지는 않지만 원조 식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자.

           . 식별자 표기법

4. 주 식별자 도출기준

           . 해당 업무에서 자주 이용되는 속성을 주 식별자로 지정해야 함

           . 명칭, 내역 등과 같이 이름으로 기술되는 것을 피함

           . 속성의 수가 많아지지 않도록 함

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

           . 식별자 관계와 비식별자 관계의 결정

                     - 외부식별자 : 자기자신의 엔터티에서 필요한 속성이 아니라 다른 엔터티와의 관계를 통해서 자식 엔터티에 생성되는 속성(=>Foreign Key)

           . 식별자 관계

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

           . 비식별자 관계

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

                     1) 자식 엔터티에서 받은 속성이 반드시 필수가 아니여도 무방하기 때문에 부모없는 자식이 생성될 수 있는 경우

                     2) 엔터티 별로 데이터의 생명주기를 다르게 관리할 경우 (자식만 남기고 먼저 소멸하는 경우)

                     3) 여러 개의 엔터티가 하나의 엔터티로 통합되었는데, 각각의 엔터티가 별도의 관계를 가질 때

                     4) 자식 엔터티에서 주식별자로 사용해도 되지만 자식 엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때 비식별자에 의한 외부식별자로 표현

 

           . 식별자의 관계로만 할 때 문제점

                     - 주식별자 속성이 지속적으로 증가함에 따라 개발자 복잡성과 오류가능성을 유발할 수 있는 요인

           . 비식별자 관계로만 설정할 경우의 문제점

                     - 불필요한 조인이 다량 유발, SQL문도 길어져 성능이 저하되는 현상 발생

           . 식별자 관계와 비식별자 관계 모델링

                     1) 비식별자 관계 선택 프로세스

관계분석    
   
관계의 강/약 분석 -약한관계-> 비식별자 관계 설정 고려
 
자식테이블 독립PK필요 -독립PK구성->
 
SQL 복잡도 증가,
개발 생산성 저하
-PK속성 단순화->

 

                     2) 식별자와 비식별자 관계 비교

                                - 식별자 관계

                                           * 강한 연결관계 표현

                                           * 자식 주식별자의 구성에 포함됨

                                           * 실선표현

                                           * 반드시 부모 엔터티 종속

                                           * 자식 주식별자 구성에 부모 주식별자 포함

                                           * 상속받은 주식별자 속성을 타 엔터티에 이전 필요

                                - 비식별자 관계

                                           * 약한 연결관계 표현

                                           * 자식 일반속성에 포함됨

                                           * 약한 종속관계

                                           * 자식 주식별자 구성을 독립적으로 구성

                                           * 상속받은 주식별자 속성을 타 엔터티에 차단 필요

                                           * 부모쪽의 참여관계가 선택관계

                     3) 식별자와 비식별자를 적용한 데이터 모델

                                - 식별자와 비식별자 관계가 적절한 데이터 모델은 균형감 있게 나타난다.

반응형

'자격증 > SQLD' 카테고리의 다른 글

[#SQLD] 제 2절 정규화와 성능  (0) 2023.02.09
[#SQLD] 제 1절 성능데이터 모델링의 개요  (0) 2023.02.09
[#SQLD] 관계  (0) 2023.02.08
[#SQLD] 속성  (0) 2023.02.07
[#SQLD] 엔터티  (0) 2023.02.07

댓글