Databasemedium면접 빈도: medium

Key

Key (키)

📝 개념 정의

데이터베이스에서 조건에 만족하는 레코드를 찾거나 정렬할 때 기준이 되는 속성 또는 속성의 집합


🔑 핵심 개념

유일성 (Uniqueness)

하나의 키값으로 레코드를 식별할 수 있는 성질

예시:

상품 정보:
상품일련번호 | 상품명 | 판매가
0001         | 쿠션   | 3,000
0002         | 슬라임 | 2,000
  • 상품명, 판매가: 중복 가능 (유일성 X)
  • 상품일련번호: 중복 불가 (유일성 O)

최소성 (Minimality)

키를 구성하는 최소한의 속성들로만 키를 구성하는 성질

예시:

키 후보:
1. 상품일련번호 + 상품명
2. 상품일련번호
  • 상품일련번호만으로 유일성 보장
  • 상품일련번호 + 상품명은 최소성 X

🔐 데이터베이스 무결성

1. 개체 무결성 (Entity Integrity)

기본키 제약 조건

NULL 불가

  • 기본키는 NULL 값을 가질 수 없음

중복 불가

  • 기본키는 다른 레코드와 중복될 수 없음

2. 참조 무결성 (Referential Integrity)

외래키 제약 조건

기본키 참조

  • 외래키는 참조 테이블의 기본키 값과 동일해야 함

예시:

테이블 A:
a1(기본키) | a2 | a3

테이블 B:
b1(기본키) | b2(외래키) | b3
  • b2a1에 없는 값 입력 불가
  • a1은 반드시 기본키로 설정

3. 도메인 무결성 (Domain Integrity)

속성값 제약 조건

도메인 범위 준수

  • 속성값은 정의된 도메인 범위 내에 있어야 함

예시:

  • 성별: male, female만 허용

🗝️ Key 종류

예시 테이블

상품 리스트:

상품번호 | 상품명 | 판매가 | 상품정보
0001     | 쿠션   | 3,000  | blah
0002     | 슬라임 | 2,000  | blah
0003     | 양말   | 2,000  | blah

회원 정보:

회원아이디 | 비밀번호 | 회원등급 | 주민등록번호
malang123  | abc123   | 실버     | 900101-1xxxxxx
dandan     | abc123   | 골드     | 900102-1xxxxxx
marin      | sdf90    | 실버     | 900103-1xxxxxx

장바구니:

주문번호 | 주문자    | 상품목록   | 수량 | 합계금액
0001     | malang123 | 0001, 0002 | 1, 2 | 6,000
0002     | marin     | 0003       | 4    | 8,000

1. Super Key (슈퍼 키)

유일성을 만족하는 모든 키

특징:

  • 유일성 O
  • 최소성 X

예시:

상품 리스트:
✅ 상품번호
✅ 상품번호 + 상품명
✅ 상품번호 + 판매가
❌ 판매가 + 상품정보 (중복 가능)

2. Candidate Key (후보 키)

유일성과 최소성을 모두 만족하는 키

특징:

  • 유일성 O
  • 최소성 O
  • 개체 무결성 원칙 준수

예시:

상품 리스트:
✅ 상품번호 (최소성 O)
✅ 상품명 (중복 없다면)
❌ 상품번호 + 상품명 (최소성 X)

3. Primary Key (기본 키)

후보 키 중 선택된 대표 키

특징:

  • 릴레이션에서 유일
  • NULL 불가
  • 중복 불가
  • 릴레이션당 1개만 존재

예시:

회원 정보:
후보 키: 회원아이디, 주민등록번호
기본 키: 회원아이디 (선택)

4. Alternate Key (대체 키)

후보 키 중 기본 키를 제외한 나머지 키

예시:

회원 정보:
기본 키: 회원아이디
대체 키: 주민등록번호

5. Foreign Key (외래 키)

다른 릴레이션의 기본 키를 참조하는 속성

특징:

  • 테이블 간 관계 표현
  • 참조 무결성 보장

예시:

장바구니:
기본 키: 주문번호
외래 키: 주문자 (회원아이디 참조)

외래 키 존재 이유:데이터 무결성

  • 항상 정확한 값 유지
  • 참조 테이블과 동기화

6. Composite Key (복합 키)

2개 이상의 속성을 사용한 키

예시:

✅ 상품번호 + 상품명
✅ 상품번호 + 판매가
✅ 상품번호 + 상품명 + 판매가

7. Unique Key (유일 키)

중복 불가, NULL 허용 키

특징:

  • 중복 X
  • NULL O
  • 릴레이션에 여러 개 지정 가능

vs 기본 키: | 특징 | 기본 키 | 유일 키 | |------|---------|---------| | NULL | 불가 | 허용 | | 중복 | 불가 | 불가 | | 개수 | 1개 | 여러 개 |


🔍 자연 키 vs 인조 키

자연 키 (Natural Key)

자연스럽게 레코드를 구분할 수 있는 속성

예시:

  • 회원아이디
  • 주민등록번호
  • 전화번호

문제점: ❌ 변경 가능 (전화번호 변경) ❌ 환경 변화 (주민번호 수집 금지)


인조 키 (Surrogate Key)

인위적으로 생성한 키

예시:

  • 상품번호
  • 주문번호
  • 회원번호

장점: ✅ 변경 불가 ✅ 환경 독립적 ✅ 안정적


💡 식별자 선택 가이드

인조 키 권장

이유:

자연 키는 변경 가능

  • 전화번호, 이메일 등 변경 가능

환경 변화 대응

  • 법규 변경 등에 영향 받지 않음

안정성

  • 시스템 내부에서만 사용

❓ 면접 질문 예시

Q1. 기본 키란 무엇인가요?

답변: 후보 키 중 선택된 대표 키로, 각 레코드를 유일하게 식별합니다. 개체 무결성 원칙에 따라 NULL 값과 중복 값을 허용하지 않으며, 하나의 릴레이션에 오직 하나만 설정할 수 있습니다.

Q2. 유일 키와 기본 키의 차이는?

답변: 기본 키는 NULL 값을 허용하지 않고 중복 값을 허용하지 않으며 릴레이션당 1개만 설정할 수 있습니다. 유일 키는 중복 값을 허용하지 않지만 NULL 값을 허용하고 릴레이션에 여러 개를 지정할 수 있습니다.

Q3. 외래 키란 무엇이고 왜 필요한가요?

답변: 다른 릴레이션의 기본 키를 참조하는 속성으로 테이블 간 관계를 표현합니다. 데이터 무결성을 보장하기 위해 필요하며, 참조하는 테이블의 값이 변경되면 외래 키도 동기화되어 항상 정확한 값을 유지합니다.

Q4. 후보 키와 슈퍼 키의 차이는?

답변: 슈퍼 키는 유일성만 만족하는 모든 키이고, 후보 키는 유일성과 최소성을 모두 만족하는 키입니다. 예를 들어 '상품번호 + 상품명'은 슈퍼 키이지만 최소성을 만족하지 못해 후보 키가 될 수 없습니다.

Q5. 자연 키와 인조 키 중 어떤 것을 식별자로 사용해야 하나요?

답변: 인조 키를 식별자로 사용하는 것이 적절합니다. 자연 키는 전화번호나 이메일처럼 변경될 수 있고, 주민등록번호처럼 법규 변경 등 환경 변화에 영향을 받을 수 있습니다. 인조 키는 시스템 내부에서만 사용되어 안정적이고 변경되지 않습니다.


📚 원본 참고 자료

출처: 2023-CS-Study

  • 링크: db_key.md
  • 내용: Key 종류, 무결성, 유일성/최소성

추가 학습 자료

⬅️이 문서를 참조하는 문서

이 개념을 기반으로 하는 고급 주제들입니다.