본문 바로가기
🖊️Certificate/📌SQLD

[SQLD] 1과목 - 1장) 5절. 식별자

by 빛나고요 2024. 3. 5.
BIG

1과목. 데이터 모델링의 이해

1장. 데이터 모델링의 이해

5절. 식별자

# 식별자 개념

- 엔터티: 인스턴스들의 집합
- 식별자
  · 하나의 엔터티에 구성되어 있는 여러 개의 속성 중 엔터티를 대표할 수 있는 속성
  · 엔터티 내 유일한 인스턴스를 식별할 수 있는 속성의 집합
- 하나의 엔터티는 반드시 하나의 식별자가 존재
- 식별자와 키의 구분
  · 식별자: 업무적으로 구분이 되는 정보 ➪ 논리 데이터 모델링 단계에서 사용
  · 키: DB 테이블에 접근을 위한 매개체 ➪ 물리 데이터 모델링 단계에서 사용

# 식별자의 특징

- 유일성: 주식별자에 의해 엔터티 내에 신스턴스들이 유일하게 구분
- 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수
- 불변성: 지정된 주식별자의 값은 자주 변하지 않아야 함
- 존재성: 주식별자가 지정이 되면 반드시 값이 들어와야 함

# 식별자 분류 및 표기법

- 식별자 분류
  · 대표성 여부
  · 자생 여부
  · 단일 속성 여부
  · 대체 여부

- 식별자 표기법


# 주식별자 도출 기준

- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정 자제
- 복합으로 주식별자로 구성할 경우, 너무 많은 속성이 포함되지 않도록 함

#식별자관계와 비식별자관계에 따른 식별자

- 식별자관계와 비식별자 관계의 결정
  · 외부식별자(Foreign Identifier):
    ➢ 다른 엔터티와의 관계를 통해 자식 족에 엔터티에 생성되는 속성
    ➢ 데이터베이스 생성 시에 Foreign Key 역할

- 식별자 관계
  · 부모로부터 받은 식별자를 자식 엔터티의 주식별자로 이용하는 경우
    ➪ Null 값이 오면 안되므로 반드시 부모 엔터티가 생성되어야 자신의 엔터티가 만들어짐
   ➪ 1:1  or  1:M  관계
  · 식별자 관계(Identifying Relationship): 자식 엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우

- 비식별자 관계
  · 부모 엔터티로부터 속성을 받았으나 자식 엔터티의 주식별자로 사용하지 않고, 일반적인 속성으로만 사용하는 경우
  · 비식별자 관계에 의한 외부속성을 생성하는 경우
    ➢ 자식 엔터티에서 받은 속성이 필수가 아니어도 되므로 부모 없는 자식이 생성될 수 있는 경우
    ➢ 엔터티 별로 데이터의 생명주기(Life Cycle)를 다르게 관리할 경우
    ➢ 여러 개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각각의 엔터티가 별도의 관계를 가질 때
    ➢ 자식엔터티에 주식별자로 사용하여도 되지만 자식 엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때 비식별자 관계에 의한 외부식별자로 표현

- 식별자 관계로만 설정할 경우의 문제점
  · 주식별자 속성이 지속적으로 증가할 수 밖에 없는 구조로서 개발자 복잡성과 오류가능성을 유발시킬 수 있는 요인이 됨

- 비식별자 관계로만 설정할 경우의 문제점
  · 불필요한 조인이 다량으로 발생하면서 SQL 구문이 길어지고 성능도 저하됨

- 식별자관계와 비식별자관계 모델링
  · 비식별자관계 선택 프로세스: 독립적으로 주식별자를 구성한다는 의미임
    ➪ 업무적 필요성과 성능상 필요 여부를 모두 반영함
  · 식별자와 비식별자관계 비교

댓글