데이터베이스

[DB] 데이터베이스 키(Key)의 개념과 종류

연화 2025. 4. 11. 11:12

 

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