[SQLD] 1-5. 식별자 - 키워드 요약 | 정리 | SQLD 공부 | 개발자 자격증 :: 매운코딩
728x90
300x250

[과목1. 데이터 모델링의 이해 - 1-5. 식별자]

 

1.     식별자 개념

(1)   여러 개의 집합체를 담고 있는 하나의 통에서 각각을 구분할 수 있는 논리적인 이름

(2)   엔터티의 인스턴스를 개별적으로 식별하기 위해 사용되는 관계 또는 속성들의 조합 (ex. 고객-고객번호)

 

2.     식별자의 특징

(1)   유일성 - 유일하게 구분되어야 한다.

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

(3)   불변성- 자주 변하지 않는 것이어야 한다. 한번 등록된 식별자의 값은 변하지 않아야함

(4)   존재성- 반드시 값이 들어와야 한다. (Not NULL)

 

3.     식별자 분류

(1)   대표성 여부

-        주식별자 : 엔터티 내에서 각 행을 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자(ex. 사원번호, 고객번호)

-        보조식별자 : 대표성을 가지지 못해 참조관계 연결을 못함 (ex. 휴대폰번호, 주민번호)

(2)   스스로 생성 여부

-        내부식별자 : 엔터티 내부에서 스스로 만들어지는 식별자 (ex. 고객번호)

-        외부식별자 : 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자 (ex. 주문엔터티의 고객번호)

(3)   속성의 수

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

-        복합식별자 : 둘 이상의 속성으로 구성된 식별자 (ex.주문번호헤더+주문번호상세sequence)

(4)   대체여부 (인조,본질)

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

-        인조식별자 : 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기에 인위적으로 만든 식별자 (ex. 주문번호 -> 고객번소+주문번호+순번)

 

4.     식별자 도출 기준

(1)   해당 업무에서 자주 이용되는 속성을 주식별자로 지정

(2)   명칭/내역등과 이름으로 기술되는 것은 가급적 주식별자로 지정하지 않는다

(3)   복합으로 주식별자를 구성할 경우 너무 많은 속성이 포함되지 않도록 한다. (인조식별자 활용)

 

5.     식별자관계와 비식별자 관계의 결정 **중요!

(1)   외부식별자는 다른 엔터티와의 관계를 통해 자식 쪽에 엔터티에 생성되는 속성을 외부식별자라 하며 데이터베이스 생성시에 Foreign Key 역할을 한다.

(2)   자식엔터티에서 부모엔터티로부터 받은 외부식별자(FK)를 자신의 주식별자(#PK)로 이용할 것인지(식별자 관계),
부모와 연결이 되는 속성으로서만 이용할 것인지를 결정(비식별자 관계)

(3)   엔터티 사이 관계 유형은 업무 특징, 자식엔터티의 주 식별자 구성/SQL 전략에 의해 결정

 

6.     식별자 관계

(1)   외부 식별자의 주 식별자 역할 / 강한 관계

(2)   부모의 주식별자가 자식의 주식별자로 상속이 되는 경우

(3)   부모식별자가 자식식별자라면 Null이 오면 안되기에 부모가 생성되어 있어야함

 

7.     비식별자 관계

(1)   외부 식별자는 FK로써의 역할을 함

(2)   부모의 주식별자가 자식의 일반속성으로만 사용되는 경우

(3)   부모 없는 자식이 생성될 수 있음

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

 

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

(1)   식별자 관계 주문 엔티티가 고객 엔티티의 고객번호를 식별자로 받음 ,,너무 많아짐

(2)   비식별자 관계 주문 엔티티가 주문번호라는 식별자를 별도로 이용,, 줄일 수 있다.

(3)   식별자 관계만으로 연결된 데이터 모델의 특징은 주식별자 속성이 지속적으로 증가할 수 밖에 없는 구조로서 개발의 복잡성과 오류가능성을 유발시킬 수 있는 요인이 될 수 있다는 사실을 기억@

 

9.     식별자관계와 비식별자관계

(1)   관계분석

(2)   관계의 강/약 분석 확인

(3)   자식테이블 독립 PK필요 확인

(4)   SQL복잡성 증가(개발 생산성 하락)

728x90

+ Recent posts