코딩요
쉬운코드 기술 블로그
코딩요
전체 방문자
오늘
어제
  • 분류 전체보기 (54)
    • 개발자로 성장하기 (11)
    • 컴공 (25)
      • 운영체제 (12)
      • 알고리즘 (1)
      • 데이터베이스 (11)
      • 네트워크 (1)
    • 쉬운코드 (15)
      • 쉬운코드 소개 (6)
      • 쉬운코드 영상 보는 법 (3)
      • 쉬운코드 정정 보고서 (1)
      • 쉬운코드 스토리 (4)
      • 기타 이것저것 (1)
    • 면접 tip (3)

공지사항

  • 아이폰 앱에서는 슈퍼땡스 보내지 말아주세요ㅠㅠ
  • 쉬운코드 멤버십을 소개합니다
  • 쉬운코드 운영 철학

인기 글

hELLO · Designed By 정상우.
글쓰기 / 관리자
코딩요
컴공/데이터베이스

[DB] key와 index의 차이

[DB] key와 index의 차이
컴공/데이터베이스

[DB] key와 index의 차이

2022. 11. 18. 09:20

 

 

key와 index는 무엇인가?

 

key는 테이블에 있는 tuple을 유일하게 식별하는(uniquely identify) attributes 집합을 의미한다

 

index는 테이블에 있는 tuple을 빠르게 찾기 위해 테이블에 적용되는 추가적인 자료 구조다

 

(보통 candidate key를 줄여서 그냥 key라고 부른다. 즉 key = candidate key)

 

 

 

 

primary key와 index의 관계

 

한 테이블에는 여러 key들이 존재할 수 있다.

 

그중에서 tuple을 식별할 목적으로 DB 설계자가 공식적으로 선택하여 지정한 key를 primary key라고 한다

 

 

primary key는 엄밀히 말하면 constraint다

 

테이블을 생성할 때 primary key를 지정하게 되면 해당 primary key에 대해서는 서로 다른 tuple이 같은 primary key 값을 가질 수 없으며, null도 값으로 가질 수 없다

 

이 primary key를 통해서 tuple을 찾는 일은 매우 자주 일어나는 일이기 때문에 빠른 조회를 위해 대부분의 RDBMS는 primary key에 index를 자동으로 생성해 준다

 

 

 

 

 

 

 

foreign key와 index의 관계

 

foreign key는 다른 테이블의 primary key나 key를 가리킬 목적으로 생성된 attribute(s)를 의미한다

 

가령, 임직원 정보를 저장하는 EMPLOYEE 테이블과 부서 정보를 저장하는 DEPARTMENT 테이블의 스키마가 아래와 같이 있다면,

 

 

EMPLOYEE (emp_id, first_name, last_name, address, phone_number, birth_date, dept_id)

 

DEPARTMENT (id, name, address, leader_id)

 

 

EMPLOYEE 테이블의 dept_id는 임직원이 어느 부서에 속했는지 정보를 저장하는 attribute이기 때문에 DEPARTMENT 테이블의 (primary key인) id에 있는 값을 가지게 될 것이다

 

이때 이 dept_id가 foreign key가 된다

 

 

 

primary key와 마찬가지로 foreign key도 constraint다

 

foreign key를 걸어주게 되면, 이 foreign key는 반드시 가리키는 (다른 테이블의) attribute(s)에 존재하는 값만 가질 수 있다

 

 

 

 

한편, (primary key와는 다르게) foreign key로 지정해줬다고 해서 자동으로 index가 걸리는 것은 아니다 

 

이건 RDBMS마다 다른데, MySQL의 경우에는 foreign key에 자동으로 index를 걸어주지만, 다른 RDBMS들은 오히려 자동으로 index를 걸어주지 않는 경우가 더 많다

 

 

 

 

 

 

 

 

쉬운코드는 기본에 충실합니다

 

 

 

 

 

👉 DB 인덱스 영상 보러 갈래요?

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)
  • key와 index는 무엇인가?
  • primary key와 index의 관계
  • foreign key와 index의 관계
  • 쉬운코드는 기본에 충실합니다
'컴공/데이터베이스' 카테고리의 다른 글
  • DB 테이블에 인덱스(index)가 매우 중요한 이유
  • [DB] transaction isolation level(격리 수준) 존재 이유
  • [DB] key와 functional dependency 차이
  • DB 정규화에 쓰이는 functional dependency (함수 종속)
코딩요
코딩요
8년차 백엔드 개발자가 이해하기 쉽게 설명합니다. 배워서 남주는 블로그! 이해하기 쉬운 기술 블로그! 쉬운코드입니다 :)

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.