[SQL] 기본키(PK)와 외래키(FK)

jul ee·2025년 4월 4일

데이터 성장기

목록 보기
15/139

🖇  기본키 (Primary Key, PK)
🖇  외래키 (Foreign Key, FK)


데이터셋을 다루다 보면 단일 테이블로 사용하는 경우도 있지만,

대부분의 케이스가 여러 개의 테이블을 붙여서 활용하는 경우일 것이다.

따라서 테이블 간 연결의 핵심인 기본키(Primary Key, PK)외래키(Foreign Key, FK) 를 짚고 넘어가야 한다.

    기본키와 외래키는

    관계형 데이터베이스에서 데이터 무결성을 유지하고,
    테이블 간 관계를 정의하는 데 핵심적인 역할을 한다.

데이터는 나눠져 있어야 관리하기 쉽고, 연결되어 있어야 활용하기 좋다는 것을 기억하고 시작해 보자 :)



🖇  기본키 (Primary Key, PK)

기본키란?

기본키는 테이블 내의 각 행을 유일하게 식별할 수 있는 컬럼이다.

테이블마다 하나의 기본키만 존재한다.

  • 데이터베이스는 여러 개의 테이블로 구성되어 있다.
    ->   테이블은 키를 매개로 서로 연결되어 있다.

  • 기본키로 하나의 컬럼이 지정되어있으며, 해당 컬럼의 데이터는 테이블 내 유일성을 보장한다.

  • 기본키로 지정된 컬럼은 중복이 불가능하며, NULL을 허용하지 않는다.

    ->   기본키는 각 테이블의 데이터를 고유하게 식별하는 역할을 한다.



왜 기본키가 필요할까?

하나의 테이블에 모든 정보를 담으면 어떤 문제가 생길까?

    예를 들어

     고객 정보가 중복되어 여러 줄에 나타나고,
    수정할 때마다 모든 데이터 행을 일일이 수정해야 한다.

데이터베이스에는 여러 테이블이 있기 때문에 데이터를 전부 다 바꿔줘야 해서 비효율적이다.

또한, 이런 구조는 데이터 중복과 불일치 문제를 야기한다.

따라서 잘 설계된 데이터베이스는
관리 목적에 따라 테이블을 분리하고, 각 테이블은 기본키로 고유성을 유지한다.


예제를 통해 기본키가 무엇인지, 왜 필요한지 직접 살펴보자.

orders 테이블 조회

-- orders 테이블에서 기본키 확인하기

SELECT *
FROM orders
LIMIT 10

각각의 주문은 하나의 고유한 주문 번호로 구분되기 때문에
orders 테이블에서는

    실질적으로 테이블을 구분할 수 있는 orderId 가 기본키이며,

    orders 테이블의 유일성을 보장하는 키라고 할 수 있다.




🖇  외래키 (Foreign Key, FK)

외래키란?

외래키는 다른 테이블의 기본키를 참조하는 컬럼이다.

즉, 테이블 간 관계를 연결해주는 다리 역할을 합니다.

  • 외래키에 들어가는 값은 참조하는 기본키의 값과 동일하거나 NULL 값이다.
    ->   외래키는 기본키와 동일한 값의 종류와 범위를 가진다.

  • 참조 무결성(Referential Integrity) 을 보장하여 잘못된 연결을 방지한다.

  • JOIN 연산을 통해 다른 테이블과 연동할 때 사용된다.


예제를 통해 외래키가 무엇인지, 기본키와는 어떻게 다른지 살펴보자.

customers 테이블 조회

-- orders 테이블에서 기본키 및 외래키 확인하기

SELECT *
FROM customers
LIMIT 10

customers 테이블은 고객에 대한 정보가 담겨있는 테이블이고,
여기서는 customerId 가 기본키이다.

employeesId 컬럼을 보면, 고객을 담당하고 있는 직원 번호가 들어 있는 것을 볼 수 있다.
그래서 employeesId 컬럼은 employees 테이블의 기본키를 참조하는 외래키인 것이다.


customers 테이블에서 참조하고 있는 employees 테이블의 기본키도 확인해 보자.

employees 테이블 조회


SELECT *
FROM employees
LIMIT 10

employees 테이블은 직원에 대한 정보가 담겨있는 테이블이다.

여기서 employeesId가 바로 기본키 역할을 합니다.
이 값이 customers 테이블의 employeesId에서 외래키로 참조되는 것이다.

즉, 고객이 담당 직원과 연결되는 구조인 것이다.



하나의 테이블은 여러 개의 외래키를 가질 수 있지만, 기본키는 오직 하나만 존재한다는 것

그리고
외래키는 반드시 참조하는 기본키 값과 일치하거나 NULL이어야 한다는 것을 기억하자.

profile
AI에 관심을 가지고, 데이터로 가치를 만들어 나가는 과정을 기록합니다.

0개의 댓글