[DB] 데이터베이스 키(Key)의 개념과 종류
SQL을 공부하면서 PRIMARY KEY, FOREIGN KEY, UNIQUE 같은 말, 많이 들어보셨죠?
이 키(Key)라는 개념은 데이터베이스에서 정확하고 일관된 데이터를 저장하고 관리하기 위한 핵심 도구입니다.
오늘은 데이터베이스에서 사용되는 다양한 키의 종류와 그 역할에 대해 정리해볼게요.
📌 키(Key)란 무엇인가?
키(Key)는 테이블 내에서 각 행(row)을 고유하게 식별하거나,
테이블 간 관계를 정의하기 위한 기준이 되는 열(column)입니다.
쉽게 말해, 중복 없이 값을 구분해주는 기준이라고 생각하면 돼요.
🔎 주요 키의 종류
1. 🟡 기본 키 (Primary Key)
- 한 행(row)을 고유하게 식별하기 위한 컬럼
- NULL 값을 가질 수 없고, 중복도 허용되지 않음
- 하나의 테이블에는 기본 키는 오직 하나만 존재 가능
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100)
);
예: 주민등록번호, 학번, 사용자 ID 등
2. 🟢 후보 키 (Candidate Key)
- 기본 키가 될 수 있는 후보들
- 유일하게 각 행을 식별할 수 있는 컬럼이 둘 이상일 경우, 그 중 하나를 기본 키로 선택하고 나머지는 후보 키로 남김
학생 테이블
- 학번 (유일)
- 이메일 (유일)
→ 후보 키: 학번, 이메일
→ 기본 키: 학번 (선택)
3. 🔵 대체 키 (Alternate Key)
- 후보 키 중에서 기본 키로 선택되지 않은 키
- 즉, 후보 키 - 기본 키 = 대체 키
위 예시에서 이메일은 대체 키가 됩니다.
4. 🟠 외래 키 (Foreign Key)
- 다른 테이블의 기본 키를 참조하는 컬럼
- 테이블 간의 관계를 연결해주는 역할
- 데이터 무결성(참조 무결성)을 보장함
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
);
orders 테이블은 users 테이블의 id를 참조함
5. 🟣 슈퍼 키 (Super Key)
- 행을 고유하게 식별할 수 있는 모든 컬럼 조합
- 후보 키 + 다른 컬럼이 포함된 것도 가능 (즉, 후보 키보다 넓은 개념)
{학번}, {학번, 이름}, {이메일}, {이메일, 전화번호} 등
→ 중복 없이 구별만 가능하면 모두 슈퍼 키
6. 🟤 유니크 키 (UNIQUE Key)
- 중복을 허용하지 않는 컬럼 (하지만 NULL은 허용)
- 기본 키와 달리 하나의 테이블에 여러 개 존재 가능
CREATE TABLE users (
id INT PRIMARY KEY,
email VARCHAR(100) UNIQUE
);
✔ 정리
키의 종류 | 고유식별 | NULL 허용 | 중복 허용 | 복수 설정 가능 |
기본키(Primary Key) | ✅ | ❌ | ❌ | ❌ |
외래키(Foreign Key) | ❌ (참조) | ✅ | ✅ | ✅ |
유니크키(Unique Key) | ✅ | ✅ | ❌ | ✅ |
후보키(Candidate Key) | ✅ | ❌ | ❌ | ✅ |
대체키(Alternate Key) | ✅ | ❌ | ❌ | ✅ |
슈퍼키(Super Key) | ✅ | 경우에 따라 | ❌ | ✅ |
"키"는 단순히 테이블 안의 컬럼이 아니라,
데이터베이스가 질서를 유지하고 관계를 맺고 오류를 막는 중요한 장치입니다.
지금은 용어가 헷갈릴 수 있지만, 실제로 테이블을 설계하거나 데이터를 조회해보면서 이 개념들이 점점 명확해질 거예요.
다음에는 정규화(Normalization) 개념을 이어서 소개해볼게요.
왜 테이블을 나누는지, 그리고 키가 그 속에서 어떤 역할을 하는지도 자연스럽게 연결됩니다 😊
읽어주셔서 감사합니다 🙌
질문이나 피드백은 언제든지 댓글로 남겨주세요!
👀 데이터베이스에 대한 다른 포스팅도 궁금하시다면 아래의 글을 추천해요
[SQL] SQL 조인의 종류
SQL(Structured Query Language)에서 조인(JOIN)은 여러 테이블에서 데이터를 결합하고 관련 정보를 가져오는 데 사용됩니다. 데이터베이스 설계 시 데이터를 여러 테이블로 나누어 관리하는 것이 일반적
dev-yeonwha.tistory.com