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):
-
본질식별자가 너무 길거나, 여러 속성으로 구성되어 다루기 복잡할 때, 시스템 편의를 위해 인위적으로 만든 식별자입니다.
-
보통 의미 없는 숫자나 문자의 조합으로, 단순히 데이터를 구분하기 위한 목적으로 사용됩니다.
-
예: 게시판의 ‘게시글 번호’는 실제 업무 내용과는 상관없이 시스템이 순서대로 부여하는 인조식별자입니다.
-