2025-08-11 03:39

Tags:

식별자의 분류

분류식별자설명
대표 여부주식별자 (Primary Key)엔터티 내 각 어커런스 구분 가능, 타 엔터티와 참조관계 연결 가능
보조식별자 (Candidate Key)엔터티 내에서 각 어커런스 구분 가능, 대표성을 갖지 못해 참조관계 연결 불가능
스스로 생성 여부내부식별자엔터티 내부에서 스스로 만들어지는 식별자
외부식별자 (Foreign Key)관계를 통해 유입되는 타 엔터티의 식별자
속성 수단일식별자하나의 속성으로 구성된 식별자
복합식별자둘 이상의 속성으로 구성된 식별자
대체 여부본질식별자업무에 의해 만들어지는 식별자
인조식별자업무적으로 만들어지지는 않으나, 원조식별자가 복잡한 구성을 가져 인위적으로 만들어진 식별자

이 표는 데이터베이스를 설계할 때 사용하는 **식별자(Identifier)**를 여러 기준에 따라 어떻게 나눌 수 있는지 보여줍니다. 식별자란 각 데이터를 유일하게 구분해 주는 값으로, 주민등록번호나 학번처럼 고유한 값을 생각하시면 쉽습니다.


1. 대표 여부 (대표성)

엔터티(데이터 집합) 내에서 특정 데이터를 대표할 수 있는지에 따라 식별자를 나눕니다.

  • 주식별자 (Primary Key):

    • 엔터티 내의 모든 데이터(행)를 유일하게 식별할 수 있는 대표 식별자입니다.

    • NULL 값(빈 값)을 가질 수 없으며, 중복된 값을 허용하지 않습니다.

    • 다른 엔터티와의 관계를 맺을 때 기준이 되는 중요한 역할을 합니다. (예: ‘학생’ 테이블의 ‘학번’)

  • 보조식별자 (Candidate Key):

    • 주식별자처럼 데이터를 유일하게 식별할 수는 있지만, 주식별자로 선택되지 않은 식별자들을 말합니다.

    • 예를 들어, ‘학생’ 테이블에서 ‘학번’과 ‘주민등록번호’ 둘 다 유일한 값이지만, ‘학번’을 주식별자로 선택했다면 ‘주민등록번호’는 보조식별자가 됩니다.

    • 대표성이 없기 때문에 다른 테이블과의 관계를 맺는 데 직접 사용되지는 않습니다.


2. 스스로 생성 여부 (생성 방식)

식별자가 해당 엔터티 내부에서 자체적으로 생성되었는지, 아니면 다른 엔터티로부터 왔는지에 따라 구분합니다.

  • 내부식별자:

    • 해당 엔터티 내부에서 스스로 만들어진 식별자입니다.

    • 예: ‘게시판’ 테이블의 ‘게시글 번호’는 게시글이 생성될 때마다 순차적으로 부여되므로 내부식별자입니다.

  • 외부식별자 (Foreign Key):

    • 다른 엔터티와의 관계를 통해 들어온 식별자입니다. 즉, 다른 테이블의 주식별자를 참조하는 값입니다.

    • 예: ‘댓글’ 테이블에는 어떤 게시글에 달린 댓글인지를 표시하기 위해 ‘게시글 번호’가 포함됩니다. 이때 ‘댓글’ 테이블의 ‘게시글 번호’는 ‘게시판’ 테이블로부터 온 외부식별자입니다.


3. 속성 수 (구성)

식별자가 몇 개의 속성(컬럼)으로 이루어져 있는지에 따라 나뉩니다.

  • 단일식별자:

    • 하나의 속성만으로 데이터를 유일하게 식별할 수 있는 경우입니다.

    • 예: ‘학번’ 하나만으로 학생을 구분할 수 있으므로 단일식별자입니다.

  • 복합식별자:

    • 두 개 이상의 속성을 조합해야만 데이터를 유일하게 식별할 수 있는 경우입니다.

    • 예: ‘수강’ 테이블에서는 ‘학번’과 ‘과목 코드’ 두 가지를 모두 알아야 어떤 학생이 어떤 과목을 수강하는지 특정할 수 있습니다. 이 경우 (‘학번’, ‘과목 코드’) 조합이 복합식별자가 됩니다.


4. 대체 여부 (업무적 의미)

식별자가 실제 업무에서 의미를 갖는지, 아니면 시스템 편의를 위해 인위적으로 만들어졌는지에 따라 구분합니다.

  • 본질식별자:

    • 업무 프로세스에서 자연스럽게 발생하는 식별자입니다. 업무적으로 의미가 있는 값입니다.

    • 예: ‘사원’ 테이블의 ‘사원 번호’, ‘상품’ 테이블의 ‘상품 코드’ 등은 업무상 필요한 값입니다.

  • 인조식별자 (Surrogate Key):

    • 본질식별자가 너무 길거나, 여러 속성으로 구성되어 다루기 복잡할 때, 시스템 편의를 위해 인위적으로 만든 식별자입니다.

    • 보통 의미 없는 숫자나 문자의 조합으로, 단순히 데이터를 구분하기 위한 목적으로 사용됩니다.

    • 예: 게시판의 ‘게시글 번호’는 실제 업무 내용과는 상관없이 시스템이 순서대로 부여하는 인조식별자입니다.

References

식별자