TIL - 20260108

juni·2026년 1월 7일

TIL

목록 보기
232/316

0108 SQLD 학습 (5/10): 식별자 (Identifier)


✅ 1. 식별자(Identifier)란?

  • 식별자란 하나의 엔터티(Entity) 내에서 각각의 인스턴스(행)를 유일하게 구분할 수 있는 속성(Attribute) 또는 속성들의 집합입니다.
  • 데이터베이스에서는 기본 키(Primary Key, PK) 제약조건으로 생성되어, 데이터의 무결성을 보장하는 핵심적인 역할을 합니다.
  • 예시: 학생 엔터티에서 모든 학생을 유일하게 구분할 수 있는 학번은 식별자입니다. 이름은 동명이인이 있을 수 있으므로 식별자가 될 수 없습니다.

✅ 2. 식별자의 특징 (유일성, 최소성, 불변성, 존재성)

  • 좋은 식별자가 되기 위해서는 다음 4가지 특징을 모두 만족해야 합니다.
특징설명예시
1. 유일성 (Uniqueness)주 식별자에 의해 모든 인스턴스들이 유일하게 구분되어야 합니다.주민등록번호는 모든 사람을 유일하게 구분한다.
2. 최소성 (Minimality)유일성을 만족하는 최소한의 속성으로 구성되어야 합니다.(학번, 과목코드)만으로 수강신청 내역을 구분할 수 있다면, (학번, 과목코드, 학생이름)은 최소성을 위반한다.
3. 불변성 (Immutability)식별자의 값은 자주 변경되지 않아야 합니다.이름은 개명할 수 있지만, 학번이나 주민등록번호는 거의 변하지 않는다.
4. 존재성 (Existence)식별자의 값은 반드시 존재해야 합니다. 즉, NULL 값을 허용하지 않습니다.모든 학생은 반드시 학번을 가져야 한다.

✅ 3. 식별자의 분류

  • 식별자는 여러 기준에 따라 분류할 수 있습니다.
분류 기준종류설명
대표성 여부주 식별자
(Primary Identifier)
• 엔터티를 대표하는 유일한 식별자. (PK)
• 유일성, 최소성, 불변성, 존재성을 모두 만족해야 함.
보조 식별자
(Alternate Identifier)
• 주 식별자는 아니지만, 유일성을 만족하여 인스턴스를 구분할 수 있는 속성.
• 데이터베이스의 유니크 인덱스(Unique Index)로 생성됨. (e.g., 이메일, 전화번호)
생성 방식내부 식별자
(Internal Identifier)
• 엔터티 내부에서 스스로 생성된 식별자. (e.g., 사원번호, 부서코드)
외부 식별자
(Foreign Identifier)
• 다른 엔터티와의 관계를 통해 받아온 식별자. (FK)
• 자식 엔터티에서 부모 엔터티의 식별자를 포함하는 경우.
속성 개수단일 식별자
(Single Identifier)
하나의 속성으로 구성된 식별자. (e.g., 학번)
복합 식별자
(Composite Identifier)
두 개 이상의 속성을 조합하여 구성된 식별자. (e.g., (학번, 과목코드))
대체 여부본질 식별자
(Original Identifier)
• 업무적으로 의미가 있는, 원래 존재하는 식별자. (e.g., 주민등록번호)
인조 식별자
(Artificial Identifier)
• 업무적인 의미는 없지만, 유일성을 보장하기 위해 시스템에서 인위적으로 생성한 식별자. (e.g., 회원ID, 주문번호 - 보통 순차 증가하는 숫자)

✅ 4. 식별 관계와 비식별 관계 (중요)

  • 외부 식별자(FK)가 자식 엔터티에서 어떤 역할을 하느냐에 따라 관계의 종류가 결정됩니다.

➕ 4-1. 식별 관계 (Identifying Relationship)

  • 개념: 부모 엔터티의 식별자(PK)를 자식 엔터티가 물려받아, 자신의 주 식별자(PK)의 일부로 사용하는 관계.
  • ERD 표기: 실선으로 표현.
  • 특징:
    • 자식 엔터티는 부모 엔터티 없이 존재할 수 없습니다. (강한 의존 관계)
    • 자식 엔터티의 주 식별자는 부모로부터 물려받은 속성을 포함한 복합 식별자가 됩니다.
  • 예시:
    • 게시판 - 게시글: 게시글의 PK는 (게시판ID, 게시글번호)가 됩니다.
    • 주문 - 주문상세: 주문상세의 PK는 (주문번호, 상품번호)가 됩니다.

➕ 4-2. 비식별 관계 (Non-identifying Relationship)

  • 개념: 부모 엔터티의 식별자(PK)를 자식 엔터티가 물려받지만, 자신의 주 식별자로 사용하지 않고 일반 속성(FK)으로만 사용하는 관계.

  • ERD 표기: 점선으로 표현.

  • 특징:

    • 자식 엔터티는 부모 엔터티 없이도 독립적으로 존재할 수 있습니다. (약한 의존 관계)
    • 자식 엔터티는 보통 별도의 단일 식별자(인조 식별자)를 주 식별자로 가집니다.
  • 예시:

    • 부서 - 사원: 사원사원번호라는 독립적인 PK를 가지며, 부서코드는 일반 속성(FK)으로 가집니다. (사원은 부서에 소속되지 않을 수도 있음)
    • 회원 - 게시글: 게시글게시글ID라는 독립적인 PK를 가지며, 회원ID는 작성자를 나타내는 일반 속성(FK)입니다.
  • 최근 경향: 복잡한 식별 관계는 주 식별자가 계속해서 하위 엔터티로 전파되어 관리가 어려워지는 단점이 있습니다. 따라서 최근에는 모델의 유연성과 단순성을 위해, 가급적 인조 식별자를 사용한 비식별 관계로 설계하는 것을 선호하는 경향이 있습니다.


📌 요약

  • 식별자는 엔터티의 각 인스턴스를 유일하게 구분하는 속성(PK)이며, 유일성, 최소성, 불변성, 존재성을 만족해야 합니다.
  • 식별자는 대표성, 생성 방식 등 여러 기준으로 분류할 수 있습니다.
  • 부모의 PK를 자식이 어떻게 사용하느냐에 따라 관계가 나뉩니다.
    • 식별 관계: 부모 PK를 자식의 PK 일부로 사용. (강한 의존)
    • 비식별 관계: 부모 PK를 자식의 일반 속성(FK)으로 사용. (약한 의존)
  • 최근에는 모델의 유연성을 위해 비식별 관계를 선호하는 추세입니다.

0개의 댓글