본문 바로가기

데이터베이스(Database)/Data Modeling

[DB] 데이터 모델링(6) - 식별자(Identifier)

 

이 글은 전공 수업 내용을 복습할 겸 기록해놓은 글입니다.

추가할 사항이 있거나 잘못된 점이 있으면 댓글로 남겨주세요.

 


 

식별자의 정의

  • 식별자
    엔티티내에서 인스턴스들을 구분할 수 있는 구분자
    하나의 엔티티에 구성되어 있는 여러 개의 속성 중 엔티티를 대표할 수 있는 속성
    하나의 엔티티는 반드시 하나의 유일한 식별자가 존재해야 함

    식별자와 키
    - 식별자는 논리 데이터 모델링 단계에서 사용
    - 키는 물리 데이터 모델링 단계에서 사용

 

식별자의 분류

  • 대표성에 따른 분류
    주식별자(PK) vs 보조식별자(CK)
  • 목적(또는 스스로 생성되었는지)에 따른 분류
    내부식별자 vs 외부식별자(FK)

  • 속성 수에 따른 분류
    단일식별자 vs 복합식별자

  • 본질(또는 대체 여부)에 따른 분류
    본질식별자 vs 인조식별자

출처 : https://dataonair.or.kr/db-tech-reference/d-guide/sql/?pageid=4&mod=document&keyword=%EA%B4%80%EA%B3%84&uid=329

 

식별자의 특징

  • 유일성
    주 식별자에 의해 엔티티 내의 각 인스턴스들을 모두 유일하게 구분

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

  • 불변성
    주식별자가 지정되면 그 식별자의 값은 변하면 안 됨

  • 존재성
    주식별자의 값은 Null이 될 수 없음

 

주식별자 도출 기준

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

 

식별자 관계와 비식별자 관계

  • 식별자 관계
    부모 엔티티의 식별자를 자식 엔티티의 주식별자로 사용
    - 반드시 부모 엔티티가 생성되어야 자식 엔티티가 생성될 수 있음 (Not-Null 이기 때문. Weak entity)
    - 자식 엔티티의 주식별자가 해당 속성만으로 구성되는 경우 = 1:1 관계
    - 자식 엔티티의 주식별자가 해당 속성 + α로 구성되는 경우 = 1:N 관계

  • 비식별자 관계
    부모 엔티티의 식별자를 자식 엔티티의 일반적인 속성으로 사용
    - 부모 엔티티와 자식 엔티티의 관계가 약한 경우
    - 부모 엔티티 없이 자식 엔티티가 생성 가능한 경우
    - 자식 엔티티의 주식별자로 사용해도 되지만, 일반 속성으로 두는 것이 유리한 경우
    - 자식 엔티티의 독립적인 주식별자 설정이 필요한 경우

출처 : https://dataonair.or.kr/db-tech-reference/d-guide/sql/?pageid=4&mod=document&keyword=%EA%B4%80%EA%B3%84&uid=329

 

  • 식별자 관계 남용시 문제점
    주식별자 속성이 지속적으로 증가
    → 개발자 복잡성과 오류가능성 증가

 

  • 비식별자 관계 남용시 문제점
    데이터 조회 시 조인 횟수 증가
    → 성능 저하