본문 바로가기
데이터 모델과 SQL

[SQL 이해하기] 4. 데이터의 이해 - 식별자(Identifiers)

by 영바이트 2023. 5. 16.

엔터티의 속성 중 식별자(identifier)는 흔히 키(key)라고 불리며 일차적으로 엔터티(Table)에서 인스턴스(Row)를 구분할 수 있게 만들어준다. 구분자로서의 기능에 더해 식별자는 한 테이블을 다른 테이블들과 연결시키는 매개자 역할도 수행한다. 어떻게 보면 엔터티의 가장 중요한 속성이라고 할 수 있다.

 

엔터티는 여러 개의 식별자를 가질 수 있다. 예를 들어 학생의 학번과 학생 정보 테이블 안에서 각 인스턴스의 일련번호는 모두 식별자 역할을 할 수 있다. 이렇게 여러 개의 식별자 중 가장 우선적으로 사용되는 식별자를 '주식별자(Primary Key, PK)'라고 한다. 예를 들어 학생 데이터에서는 학번이 PK가 될 것이다. 그리고 테이블 안에서 각 인스턴스를 식별할 수 있도록 해 주지만 우선 순위가 낮은 식별자들을 '보조식별자(Alternate Key)'라고 부른다.

 

주식별자는 엔터티에서 가장 중요한 속성이다. 주식별자가 반드시 만족시켜야 할 속성들을 정리하면 아래와 같다.

유일성 각 인스턴스에 유일성(uniqueness)을 부여할 수 있어야한다.
최소성 유일성을 보장하되 최소 개수로 이루어져야 한다.
불변성 속성의 값이 변해서는 안된다.
존재성 속성값이 Null일 수 없다.

 


앞에서 엔터티의 속성 중 가장 중요한 속성인 '주식별자'에 관해 살펴보았다. 범위를 조금 넓혀서 식별자에 대한 일반적인 내용에 대해 살펴보자. 식별자를 ⓐ대표성 여부, ⓑ엔터티 내부에서 생성되었는지 여부, ⓒ단일 속성으로 구성되어 있는지 여부, 그리고 ⓓ대체여부의 관점에서 살펴볼 수 있다.

 

ⓐ대표성 여부

주식별자(Primary Identifier) · 유일성, 최소성, 불변성, 존재성을 만족시키는 식별자
· 다른 엔터티와 참조 관계에 사용된다.
보조식별자(Alternate Identifier) · 유일성, 최소성, 불변성, 존재성을 만족시키는 식별자
· 다른 엔터티와 참조 관계에 사용되지 않는다.

 

ⓑ엔터티 내부에서 생성되었는지 여부

내부식별자(Internal Identifier) 엔터티 내부 정보를 기반으로 생성한 식별자
외부식별자(Foreign Identifier) 다른 엔터티에서 가져온 식별자

 

ⓒ단일 속성으로 구성되어 있는지 여부

단일식별자(Single Identifier) 하나의 속성으로 구성된 식별자
복합식별자(Composite Identifier) 둘 이상의 속성으로 구성된 식별자. Composite Key(CK)

 

ⓓ대체 여부

원조식별자(Original Identifier) 업무 프로세스에 존재하는 가공되지 않은 본질 식별자
대리식별자(Surrogate Identifier) 주식별자의 속성이 두 개 이상인 경우 해당 속성들을 하나로 묶어서 사용하는 인조식별자

 


식별자의 가장 첫 번째 역할은 엔터티에서 인스턴스를 구분할 수 있도록 만들어 주는것이다. 여기에 더해 식별자는 하나의 엔터티와 다른 엔터티를 연결시켜주는 기능도 수행한다. 예를 들어 게시글과 댓글은 식별자를 매개로 하여 아래와 같이 연결될 수 있다.

식별자 관계 예 - 게시글(부모)과 댓글(자식)

 

ⓐ 식별자 관계(Identification Relationship)

한 엔터티(부모)의 식별자가 다른 엔터티(자식)의 주식별자가 되는 관계이다. 이 경우 부모 엔터티 없이 자식 엔터티는 생성이 불가능하며 부모-자식 사이의 관계는 1:1(단일식별자인 경우) 또는 1:M(복합식별자인 경우)이 된다.

 

하지만 엔터티들이 연결되지 않을 수도 있다. 이 경우 비식별자 관계라고 한다.

 

ⓑ 비식별자 관계(Non-Identification Relationship)

한 엔터티(부모)의 식별자가 다른 엔터티(자식)의 일반속성으로 포함된다. 예로 주문-상품 관계를 생각해 볼 수 있다. 주문은 속성으로 상품코드를 포함하지만 상품은 주문 없이도 존재할 수 있다. ER 다이어그램에서 점선으로 표시된다.

 

댓글