공든탑앱 열기

식별자

SQLD (SQL 개발자) · 데이터 모델링의 이해 · 약 10분

쉽게 말하면

식별자는 여러 건 중에서 딱 한 건을 찾아내는 이름표예요. 학생을 이름으로 찾으면 동명이인이 있어서 안 되고, 학번으로 찾아야 정확해요. 대표로 고른 식별자를 주식별자라고 하고, 겹치지 않고, 꼭 필요한 만큼만이고, 바뀌지 않고, 모두가 가지고 있어야 해요.

시험용 정의

식별자는 엔터티 안에서 인스턴스 하나하나를 구별하는 속성(또는 속성들의 묶음)이다. 그중 대표로 고른 것이 주식별자로, 테이블에서는 기본키(PK)가 된다. 주식별자는 유일성·최소성·불변성·존재성을 만족해야 한다.

비유로 이해하기

학교에서 학생을 구별할 때 이름은 동명이인이 있어 안 되고, 학번은 겹치지 않고(유일성), 학번 하나로 충분하며(최소성), 졸업할 때까지 안 바뀌고(불변성), 모든 학생이 가지고 있다(존재성).

자세히

먼저 알아 둘 말

말뜻
기본키(PK)Primary Key. 테이블에서 행을 대표로 구별하는 열. 중복과 NULL을 허용하지 않는다
외래키(FK)Foreign Key. 다른 테이블의 기본키를 참조하는 열
후보키유일성과 최소성을 만족해 주식별자가 될 수 있는 모든 속성(조합)
상속부모 엔터티의 주식별자가 관계를 통해 자식 엔터티의 속성으로 내려오는 것

주식별자의 네 가지 특징

특징뜻어긴 예
유일성주식별자로 모든 인스턴스를 유일하게 구별한다이름을 주식별자로 (동명이인)
최소성유일성을 만족하는 최소한의 속성으로 이루어진다사원번호+이름
불변성한 번 정하면 값이 바뀌지 않아야 한다전화번호를 주식별자로
존재성값이 반드시 있어야 한다 (NULL 불가)선택 입력인 이메일을 주식별자로

식별자 분류

기준종류뜻
대표성주식별자 / 보조식별자주식별자는 대표로 고른 것, 다른 엔터티와 참조 관계를 맺는다. 보조식별자는 유일하지만 대표가 아니어서 참조 관계에 쓰지 않는다
스스로 생성 여부내부식별자 / 외부식별자엔터티 안에서 스스로 만들어지면 내부, 다른 엔터티와의 관계로 받아 오면 외부(FK)
속성 수단일식별자 / 복합식별자속성 하나면 단일, 둘 이상이면 복합
대체 여부본질식별자 / 인조식별자업무에서 원래 쓰이면 본질, 인위적으로 만든 일련번호면 인조

식별 관계와 비식별 관계

구분식별 관계비식별 관계
부모 주식별자가자식 주식별자의 일부가 된다자식의 일반 속성이 된다
표기실선점선
연결 강도강하다. 부모 없이 자식이 생길 수 없다약하다. 부모 없는 자식도 가능하다(FK가 NULL)
단점계속 내려가면 자식 주식별자 속성이 늘어 조인 SQL이 복잡해진다부모 정보가 필요할 때 조인이 더 필요할 수 있다
고려할 때자식이 부모에 강하게 종속될 때 (주문 → 주문상세)자식만의 독립 주식별자가 필요할 때, 부모 없이 자식이 생길 때, 상속받은 주식별자 속성을 끊고 싶을 때

주식별자 고르는 기준

  • 해당 업무에서 자주 이용되는 속성을 고른다
  • 이름·명칭·내역처럼 이름으로 기술되는 것은 피한다
  • 복합으로 구성할 때 너무 많은 속성이 들어가지 않게 한다 (많으면 인조식별자 고려)

시험에 이렇게 나와요

출제 범위·공식 안내 기반

확인 문제

Q1. 주식별자의 특징 중 "주식별자를 이루는 속성 수가 유일성을 만족하는 최소한이어야 한다"는 것은?

  1. 유일성
  2. 최소성
  3. 존재성
  4. 불변성
정답 보기

2번 최소성

최소성. 사원번호만으로 구별되는데 사원번호+이름으로 주식별자를 잡으면 최소성을 어긴 것이다.

Q2. 주식별자는 값이 반드시 있어야 한다. 이 특징은?

  1. 유일성
  2. 최소성
  3. 불변성
  4. 존재성
정답 보기

4번 존재성

존재성. 주식별자(PK)에는 NULL이 올 수 없다.

Q3. 보조식별자에 대한 설명으로 옳은 것은?

  1. 엔터티를 대표하는 식별자다
  2. 인위적으로 만든 일련번호다
  3. 유일하게 구별할 수 있지만 대표성이 없어 참조 관계에 쓰지 않는다
  4. 다른 엔터티에서 받아 온 식별자다
정답 보기

3번 유일하게 구별할 수 있지만 대표성이 없어 참조 관계에 쓰지 않는다

보조식별자는 유일하지만 대표가 아니다. 다른 엔터티에서 받아 온 것은 외부식별자, 인위적 일련번호는 인조식별자.

Q4. 비식별 관계로 설정하는 것이 알맞은 경우는?

  1. 부모 없는 자식 인스턴스도 생길 수 있을 때
  2. 자식이 부모 없이는 절대 생길 수 없을 때
  3. 부모와 자식의 연결이 매우 강할 때
  4. 자식 엔터티의 주식별자에 부모 주식별자를 꼭 포함해야 할 때
정답 보기

1번 부모 없는 자식 인스턴스도 생길 수 있을 때

부모 없이도 자식이 생기거나, 자식이 독립 주식별자를 가져야 하면 비식별 관계(점선)로 둔다.

Q5. 식별 관계에 대한 설명으로 틀린 것은?

  1. 부모 없는 자식 인스턴스가 생길 수 있다
  2. 계속 이어지면 자식의 주식별자 속성이 늘어난다
  3. ERD에서 실선으로 표현한다
  4. 부모의 주식별자가 자식 주식별자의 일부가 된다
정답 보기

1번 부모 없는 자식 인스턴스가 생길 수 있다

식별 관계에서는 부모 주식별자가 자식 PK의 일부라 부모 없이 자식이 생길 수 없다.

헷갈리기 쉬운 O·X

주식별자는 한 번 정해지면 자주 바뀌어도 된다.

정답 보기

X 불변성. 주식별자 값이 바뀌면 참조하는 모든 데이터를 고쳐야 한다.

외부식별자는 다른 엔터티와의 관계를 통해 받아 온 식별자로, 자식 쪽에서 외래키가 된다.

정답 보기

O 부모의 주식별자를 받아 온 것이다.

사원명은 업무에서 자주 쓰므로 주식별자로 쓰기 좋다.

정답 보기

X 이름·명칭으로 기술되는 속성은 동명이인이 생길 수 있어 피한다.

함께 보면 좋은 개념