[개발 일기] 2025.04.18 - DB 복합키

2025. 4. 18. 12:59·개발 일기

💡 개요

 

오늘은 데이터베이스의 테이블에 사용되는 복합 키에 대해 정리 해보자.

 

 

 

🛠️ 복합 키

 

복합 키란 둘 이상의 컬럼을 조합해 하나의 기본 키로 사용하는 것이다.

 

 

역시 말로만 설명하면 어려우니까 예시를 하나 보자.

 

 

‘수강신청’ 이라는 테이블이 있다.

 

 

모든 학생들은 한 과목을 한 번만 신청할 수 있다고 가정하자. (재수강은 없다고 가정함)

 

 

만약 복합 키를 사용하지 않는 경우 한 행의 데이터에 삽입하고자 하는 student_id와 course_id가 일치하는 컬럼이 있는 지 매번 확인해야 한다.

 

 

하지만 복합 키를 사용한다면 이렇게 불필요한 조회 과정을 생략할 수 있다.

 

 

왜냐하면 하나의 테이블에는 중복된 기본 키가 존재할 수 없기 때문이다!

 

student_id course_id 등록일
1001 CS101 2024-03-01
1002 CS101 2024-03-02
1001 CS102 2024-03-03

 

 

이와 같은 테이블이 있을 때, student_id와 course_id를 조합해서 복합 키로 사용하면 된다.

 

 

위 처럼 복합 키를 사용한다면 단일 컬럼으로 유일한 값을 만들 수 없을 때 유용하게 사용된다.

 

 

하지만 주의할 점은 기존의 단일 컬럼을 사용한 기본 키보다 인덱싱에 드는 비용이 증가하기 때문에 성능이 더 낮아질 수 있다.

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.04.20 - Docker 포트 번호가 2개?  (0) 2025.04.20
[개발 일기] 2025.04.19 - 테이블의 기본키로 VARCHAR?  (0) 2025.04.19
[개발 일기] 2025.04.17 - Cookie 요소  (0) 2025.04.17
[개발 일기] 2025.04.16 - 클래스가 final로 선언되면 내부 필드도 변경이 안될까?  (0) 2025.04.16
[개발 일기] 2025.04.15 - 자바 vector  (1) 2025.04.15
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.04.20 - Docker 포트 번호가 2개?
  • [개발 일기] 2025.04.19 - 테이블의 기본키로 VARCHAR?
  • [개발 일기] 2025.04.17 - Cookie 요소
  • [개발 일기] 2025.04.16 - 클래스가 final로 선언되면 내부 필드도 변경이 안될까?
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.04.18 - DB 복합키
상단으로

티스토리툴바