Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Ga0's

SQLD_식별자 본문

Study IT/SQLD

SQLD_식별자

Ga0Kwon 2023. 4. 27. 21:47

식별자(Identifiers) 

1. 정의

  ▪ 엔터티를 구분짓는 논리적인 이름

  ▪ 엔터티를 대표할 수 있는 속성

  ▪ 엔터티에는 반드시 하나의 유일한 식별자가 존재함

→ 식별자는 업무적으로 구분되는 정보로써 논리 데이터 모델링 단계에서 사용하고, 키는 데이터베이스 테이블에 접근을 위한 매개체로서 물리 모델링 단계에서 사용한다.

 

2. 특징

  ▪ 유일성 : 주식별자에 의해 엔터티내에 모든 인스턴스들이 유일하게 구분되어야 함

  ▪ 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수여야 함

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

  ▪ 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야함 (Null값 X)

 

3. 식별자 분류

분류 식별자 내용
대표성 여부 주식별자   ▪ 엔터티를 대표하는 식별자로 다른 엔터티와의 참조관계를 연결(PK)
보조식별자   ▪ 대표성을 가지지 못해 참조관계를 연결X (후보키)
스스로 생성여부 내부식별자   ▪ 엔터티 내부에서 스스로 만들어지는 식별자
외부식별자   ▪ 타 엔터티와의 관계를 통해 생성되는 식별자
속성의 수 단일식별자   ▪ 하나의 속성으로 만들어지는 식별자
복합식별자   ▪ 두개 이상의 속성으로 구성된 식별자
대체 여부 본질식별자   ▪ 업무로 인해 만들어지는 식별자
인조식별자   ▪ 인위적으로 만들어지는 식별자

 

4. 주식별자  도출 기준

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

  ▪ 명칭, 내역 등과 같이 이름으로 기술되는 것들은 피해야 함

     → 구분자가 존재하지 않을 경우 새로운 식별자를 생성함(일련번호, 코드 등)

  ▪ 복합으로 주식별자를 구성할 경우 너무 많은 속성이 포함되지 않도록 해야한다.

     → 주식별자 개수가 많을 경우 새로운 인조 식별자를 생성함

식별자와 비식별자의 관계

1. 식별자 관계

  ▪ 실선으로 표시하며, 강한 연결(종속)관계라고한다.

  ▪ 부모의 주식별자가 자식의 주식별자가 되는 경우를 식별자 관계라고 한다.

  ▪ 예를 들어, 영화를 보기 위해서는 영화표가 있어야한다. 즉, 영화관람은 영화표가 있어야 생기는 엔터티이다. 이러한 경우를 부모관계라고 하는데, 자세히 말하면 영화표 엔터티의 주식별자(PK)는 영화표 코드 번호 이고, 영화관람 엔터티는 이 영화표 코드 번호를 외래키로 받아 다른 엔터티(영화표)의 기본키를 참조한다. => 식별자 관계!!

 

2. 비식별자 관계

  ▪ 부모의 주식별자가 자식의 주식별자가 되지 않고 부모로부터 아무 속성이나 받아 일반 속성으로 사용하는 것을 비식별자 관계라하며, 약한 종속 관계라고도 한다.

  ▪ 주로 사용하는 경우

    ▫ 부모 없는 자식 생성이 가능한 경우

    ▫ 엔터티별로 데이터 생명주기를 다 다르게 관리하는 경우

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

    ▫ 자식 엔터티에서 별도의 주식별자 생성이 더 유리한 경우

 

식별자와 비식별자의 문제점

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

  ▪ 부모에서 자식으로 식별자 관계로 연결되므로 인해 주식별자의 속성의 수가 많아진다. → 복잡성과 오류가능성 유발

 

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

  ▪ 속성이 자식에게 상속되지 않아 부모엔터티까지 조인되는 현상이 많아진다. 이로 인해 불필요한 조인이 발생하여 SQL구문이 길어져 성능이 저하된다.

 

정리

이미지 출저 : https://hoon93.tistory.com/22

 

5

'Study IT > SQLD' 카테고리의 다른 글

SQLD_정규화  (0) 2023.04.28
SQLD_성능 데이터 모델링의 개요  (0) 2023.04.27
SQLD_관계(Relationship)  (0) 2023.04.26
SQLD_엔터티(Entity)  (0) 2023.04.26
SQLD_데이터 모델링  (0) 2023.04.25