CS 길라잡이
정보처리기사 이론
읽기 설정
글꼴 조합

제목 · 본문 순서예요. 선택하면 지금 읽는 화면에 적용돼요.

글꼴 출처 ↗
읽기 글자 크기

정보처리기사 · DB·SQL · 02/15

행을 구별하는 키

책 제목이 같아도 서로 다른 책을 저장할 수 있을까?

키는 모든 허용 데이터에서 행을 유일하게 구별하는 속성 집합이다. 지금 우연히 값이 다르다는 사실만으로 키가 되지는 않는다.

books에서는 book_id가 기본키다. 제목이 같은 복본을 허용하므로 title을 키라고 가정하지 않는다. book_id와 title을 함께 써도 행을 구별하지만 title을 빼도 충분하다.

행을 유일하게 구별하는 속성 집합이 슈퍼키다. 후보키는 최소 슈퍼키다. 속성을 하나라도 빼면 유일성이 깨진다. 후보키 중 대표로 고른 것이 기본키이며 다른 후보키는 대체키다. 최소성은 글자 수나 값의 길이가 짧다는 뜻이 아니다.

  1. 01 →

    허용할 중복을 정한다

  2. 02 →

    유일성을 확인한다

  3. 03 →

    속성을 빼 본다

  4. 04

    대표 키를 고른다

같은 상황에서 비교하기

개념의 기준과 확인할 점
개념기준확인할 점
슈퍼키유일성불필요한 속성을 포함할 수 있다
후보키유일성·최소성여러 개일 수 있다
기본키선택한 후보키SQL PRIMARY KEY는 유일성과 NOT NULL을 강제한다
대체키선택하지 않은 후보키예시의 title은 해당하지 않는다

도서관 예제로 따라가기

book_id만으로 유일한 현재 설계에서 {book_id, title}은 슈퍼키이지만 최소성이 없어 후보키는 아니다. 별도의 관리번호도 항상 유일하고 NULL이 없도록 정한다면 후보키를 더 둘 수 있다.

공통 예제 데이터 보기
books
book_idtitleshelf_codepages
1SQL 입문DB120
2설계 노트SW200
3관계 모델DBNULL
4분산 읽기NULL160
loans
loan_idbook_id
111
121
132

내 말로 설명해 보기

{book_id, title}이 후보키가 아닌 이유를 최소성으로 설명해 보자.

0/6,000자 · 브라우저 저장 · 계정 동기화 없음

설명한 뒤 점검하기

설명 예시 확인

book_id만 남겨도 행을 구별하므로 title이 불필요하다. 유일성은 만족하지만 최소성을 만족하지 않는다.

암기한 문장과 같을 필요는 없어요. 개념의 기준과 예외가 맞는지 비교하세요.

참고한 자료

관계 모델·키·관계대수 ↗

Database System Concepts 7판 · 저자 제공 자료 · 확인 2026-10-28

제약조건 ↗

PostgreSQL 18 · 확인 2026-10-28

이전 개념 자료와의 연결

이전 자료에서 다룬 주제를 이어받아 설명과 예시를 다시 썼어요.