체다의 기록

[SQLD] Chapter1. 데이터 모델링의 이해 1-5 식별자 (Identifiers) 본문

STUDY

[SQLD] Chapter1. 데이터 모델링의 이해 1-5 식별자 (Identifiers)

체다오니 2022. 10. 17. 22:18
  • 식별자란? 
    • 엔터티를 구분하는 논리적인 이름
    • 속성 중에 인스턴스를 구분 가능하게 만들어주는 대표 격인 속성
    • 엔터티에는 반드시 하나의 유일한 식별자 존재

 

  • 주식별자의 특징
    1. 유일성: 각 인스턴스에 유니크함을 구분하여 식별이 가능하도록
    2. 최소성: 유일성을 보장하는 최소 개수의 속성이어야
    3. 불변성: 되도록 변하지 않아야 한다
    4. 존재성: NULL일 수 없으며 반드시 데이터 값이 존재해야 한다

 

  • 식별자 분류
    • 대표성 여부
      1. 주식별자: 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자
      2. 보조식별자: 인스턴스 식별은 가능하나 대표 식별자는 아님
    • 스스로 생성되었는지 여부
      1. 내부식별자: 엔터티 내부에서 스스로 생성
      2. 외부식별자: 다른 엔터티에서 온 식별자. 다른 엔터티와의 연결고리
    • 단일 속성의 여부
      1. 단일식별자: 하나의 속성으로 구성
      2. 복합식별자: 두 개 이상의 속성으로 구성 
    • 대체 여부
      1. 원조식별자: 업무프로세스에 존재하는 식별자, 가공되지 않은 원래의 식별자. 본질식별자
      2. 대리식별자: 주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 인조 식별자. 새로 만든 식별자

  • 주식별자 (PK) 도출 기준
    • 해당 업무에서 자주 이용되는 속성으로 지정
    • 명칭, 내역처럼 이름으로 기술되는 것은 피함 -> 구분자가 존재하지 않을 경우 새로운 식별자 생성
    • 복합키를 구성할 경우, 너무 많은 속성으로 구성하지 않도록 해야 한다

 

  • 식별자 관계 vs. 비식별자 관계
    1. 식별자 관계
      • 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계
      • 자식이 부모의 기본키를 상속받아 기본키로 사용
      • 부모 엔터티가 있어야 생성 가능
      • NULL이면 안 된다.
      • 부모 엔터티와 자식 엔터티는 1:1 혹은 1:M 관계가 형성된다.
      • 문제점: 자식의 주식별자 속성이 지속적으로 증가할 수 있으므로, 복잡해지고 오류가능성을 유발한다.
    2. 비식별자 관계
      • 부모 엔터티의 식별자가 자식 엔터티의 일반 속성이 되는 관계
      • 부모 엔터티가 없는 자식 엔터티 생성이 가능
      • 자식 엔터티가 존재하는 상태에서 부모 엔터티가 삭제될 수 있다
      • 문제점: 부모까지 조인해야 되는 현상 발생할 경우, SQL 구문이 길어져서 성능이 저하될 수 있다.

 

항목 식별자 관계 비식별자 관계
목적 강한 연결관계 표현 약한 연결관계 표현
자식 주식별자 영향 자식 주식별자에 포함 자식 일반 속성에 포함
표기법 실선 점선
연결 고려사항 - 반드시 부모 엔터티에 종속
- 자식 주식별자에 부모 주식별자 포함 필요
- 상속받은 주식별자 속성을 타 엔터티에 이전 필요
- 약한 종속 관계
- 자식 주식별자 구성을 독립적으로 구성
- 자식 주식별자 구성에 부모 주식별자 부분 필요
- 상속받은 주식별자 속성을 타 엔터티에 차단 필요
부모쪽의 관계 참여가 선택 관계

비식별자 관계 설정 고려사항

반응형