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
b2는a1에 없는 값 입력 불가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 종류, 무결성, 유일성/최소성