본문 바로가기
카테고리 없음

데이터 모델링, 설계의 핵심 - 식별자 · 비 식별자 · 기본키란? (SQLD대비)

by moment-love 2025. 1. 22.

 

데이터 모델링, 설계의 핵심 - 식별자 · 비 식별자 · 기본키란?

 

데이터베이스 설계에서 '식별자'는 각 데이터 인스턴스를 고유하게 구분할 수 있는 중요한 요소입니다.

엔티티 간의 관계를 정의하는 방식은 데이터 관리의 효율성과 정확성을 결정짓는 중요한 요소로,

엔티티 간의 관계는 '식별자 관계'와 '비식별자 관계'로 구분됩니다.

 

이는 엔티티 간의 결합 방식과 데이터베이스 설계의 기본적인 구조에 큰 영향을 미칩니다.

 

이 글에서는 식별자의 기본 개념과 주 식별자(PK)의 특성,

식별자가 어떠한 특성으로 인해서 분류가 되는지에 대해서,

그리고 식별자 관계와 비식별자 관계의 차이점과 각각의 특성에 대해 설명해 보겠습니다.


1) 식별자란 무엇인가? 주 식별자(PK)와 그 특성

 


식별자는 데이터베이스에서 각 인스턴스를 고유하게 구분하는 속성입니다.
그중 '주 식별자(Primary Key, PK)'
'기본기'는
각 레코드를 유일하게 식별하는 데 사용됩니다.
주 식별자는 반드시 다섯 가지 특성을 충족해야 합니다.

 

 

  • 유일성 : 값이 고유해야 함

  • 대표성 : 엔터티를 대표할 수 있어야 함

  • 최소성 : 최소한의 속성으로 유일성을 보장

  • 불변성 : 값이 변하지 않아야 함

  • 존재성 : NULL 값을 가질 수 없음

주 식별자는 여러 속성으로 이루어질 수 있습니다.

이 경우, 각 속성들은 서로 함수적 종속성을 가져야 하며, 그렇지 않으면 2차 정규화를 통해 문제를 해결해야 합니다.

 

 


2) 대표성 여부에 따른 식별자의 종류

 

주 식별자와 보조 식별자

 

주 식별자

 

  • 유일성과 최소성을 만족하면서
    • 엔터티를 대표하는 식별자
      • 다른 엔터티와 참조 관계로 연결될 수 있습니다.

 

보조 식별자

 

  • 유일성과 최소성은 만족하지만
    • 대표성을 만족하지 못하는 식별자

 

보조 식별자는 인스턴스를 식별할 수 있지만, 엔티티를 대표하는 주 식별자는 아닙니다.
예를 들어,
회원 엔티티에서 '아이디'는 중복되지 않지만,
다른 엔티티와 참조 관계를 갖지 않기 때문에 주 식별자 역할을 하지 않습니다.

주 식별자와 보조 식별자의 차이점

주 식별자는 각 레코드를 고유하게 식별하는 데 사용되며, 엔티티의 기본적인 식별자 역할을 합니다.

보조 식별자는 다른 속성으로 인스턴스를 식별할 수 있지만,
엔티티의 기본 식별자 역할을 하지 않습니다.
중복될 수 있으며, 다른 테이블과의 참조 관계를 맺지 않습니다.

 

 


3) 생성 여부에 따른 식별자의 종류

 

내부 식별자와 외부 식별자

 

내부 식별자

 

  • 엔터티 내부에서 스스로 생성되는 식별자
    • 예 : 부서 코드, 회원 번호, 주문 번호, 종목 코드

 

외부 식별자

 

  • 다른 엔티티와의 관계를 통해 받아오는 식별자
    • 부모 엔티티의 외래 키(FK)를 받아 자식 엔티티의 주 식별자로 사용될 수 있습니다.
      • 예 : 부서 코드에 사원 ID, 계좌 엔터티에 회원 ID

 


4) 생성 여부에 따른 식별자의 종류

 

단일 식별자와 복합 식별자

 


식별자는 한 개의 속성으로 구성된 단일 식별자와
여러 개의 속성으로 이루어진 복합 식별자로 나눌 수 있습니다.

복합 식별자는 여러 속성들이 결합된 형태로,
각 속성들의 우선순위를 잘 매겨서 관리해야 합니다.

 

 

단일 식별자

 

  • 주 식별자가 하나의 속성으로 구성
    • 예 : 고객 엔터티에 회원 ID

 

복합 식별자

 

  • 주 식별자가  두 개 이상의 속성으로 구성
    • 예 : 주문 목록이라는 테이블에서 주문 ID와 제품 ID를 결합하여 복합 식별자를 생성할 수 있습니다.

 


5) 대체 여부에 따른 식별자의 종류

 

본질 식별자와 인조 식별자

 

 

 

본질 식별자는
업무에서 자연스럽게 발생하는 유일한 속성을 사용하여
엔티티를 식별하는 키입니다.

이 속성은 실제로 존재하는 데이터를 기반으로 하며,
비즈니스 로직에서 중요한 역할을 하며,
고유성을 보장할 수 있습니다.


인조 식별자는
업무와는 상관없는 인위적으로 생성된 식별자로,
비즈니스 데이터의 의미와는 관계없이 고유성을 부여하는 용도로 사용됩니다.

예로 자동 증가 ID, UUID, 주문번호 등
같이 시스템에서 자동으로 생성되는 값들이 이에 해당합니다.

비즈니스 로직에서 중요한 의미를 가지지 않지만,
데이터베이스에서는 고유성과 효율성을 보장합니다.

 

 

 

본질 식별자

 

  • 자연스러운 업무 과정에서 생성된 식별자

 

인조 식별자

 

  • 업무와는 상관없이 인위적으로 생성된 식별자
    • 인조 식별자는 주 식별자가 복잡할 때 이를 단순화한 형태입니다.
      • 예를 들어, 여러 속성을 결합하여 만든 '주문번호'는 인조 식별자에 해당합니다.

 

6) 식별자 관계 VS 비 식별자 관계

 

데이터베이스 설계에서 관계의 유형은 엔티티 간의 연관성을 어떻게 정의할지에 따라 달라집니다.
특히,
식별자 관계와 비식별자 관계는 엔티티 간의 연결 방식을 결정짓는 중요한 요소입니다.

 

 

 

식별자 관계

 

  • 부모 엔티티의 식별자 속성이 자식 엔티티의 주 식별자(Primary Key)로 사용되는 관계
    • 이는 강한 연결 관계로, 부모 엔티티와 자식 엔티티가 항상 연결되어 있어야 하며,
      데이터베이스의 트랜잭션 처리 시 부모와 자식 엔티티가 하나의 커밋 단위로 묶여 처리됩니다.
  • 즉, 부모 엔티티의 식별자가 자식 엔티티의 주 식별자로 사용되어, 자식 엔티티의 고유성을 보장합니다.

 

 

  • 강한 연결 관계
    • 부모-자식 관계가 항상 유지되며, 자식 엔티티는 부모 엔티티의 식별자 속성에 의해 고유하게 식별됩니다.

  • 실선 연결
    • 부모와 자식 엔티티 간에 항상 연결이 존재하며, 이를 통해 SQL 문에서의 조인을 최소화할 수 있습니다.

  • 트랜잭션
    • 부모와 자식 엔티티 하나의 트랜잭션으로 처리되어, 동시에 커밋 또는 롤백됩니다.
예를 들어,
주문 엔티티와 주문 상세 엔티티 간의 관계에서 주문 ID는 주 식별자 역할을 하며,
이 주문 ID가 자식 엔티티인
주문 상세 엔티티의 고유 식별자로 사용됩니다.

 


 

비식별자 관계

 

  • 부모 엔티티의 식별자 속성이 자식 엔티티의 일반 속성으로 사용되는 관계
    • 이는 약한 연결 관계로, 부모와 자식 엔티티 간의 관계가 선택적 연결로 설정됩니다.
    • 즉, 부모 엔티티의 식별자 속성에 값이 없더라도 자식 엔티티의 인스턴스가 생성될 수 있습니다.

  • 약한 연결 관계
    • 부모와 자식 엔티티의 관계가 항상 유지되지 않을 수 있습니다.
      • 자식 엔티티는 부모 엔티티의 식별자 없이도 존재할 수 있습니다.

  • 점선 연결
    • 부모 엔티티의 식별자 속성은 자식 엔티티의 일반 속성으로,
      • 자식 엔티티가 부모의 식별자 없이 생성될 수 있습니다.

  • NULL 값 가능성
    • 부모 엔티티의 식별자 속성에 값이 없을 경우,
      • 자식 엔티티는 NULL 값을 허용하며 인스턴스가 생성될 수 있습니다.

 

 

예를 들어,
회원 엔티티와 주소 엔티티 간의 관계에서,
주소는 회원의 식별자 속성을 포함할 수 있지만,

주소만으로 별도의 인스턴스가 생성될 수 있습니다.

이는 비식별자 관계에 해당합니다.

 


 

결론 : 데이터베이스 설계 시, 각 관계의 특성을 잘 이해하고 적절한 관계 방식을 선택하는 것이 중요!

 

데이터베이스의 성능과 관리 효율성을 극대화하기 위해,

식별자 관계와 비식별자 관계는 데이터베이스 설계에서 각 엔티티 간의 관계를 정의하는 핵심적인 요소입니다.

 

식별자 관계는 부모와 자식 간의 강한 결합을 유지하며,

트랜잭션 처리 시 효율적인 데이터 관리가 가능하지만,

비식별자 관계는 더 유연하고 선택적인 연결을 제공할 수 있습니다.

 

따라서 데이터베이스 설계 시, 각 관계의 특성을 잘 이해하고 적절한 관계 방식을 선택하는 것이 중요합니다.

반응형