관리 메뉴

ballqs 님의 블로그

[DB] 키의 종류 본문

코딩 공부/DB

[DB] 키의 종류

ballqs 2024. 9. 16. 12:57

수 없이 공부를 했지만 세월에 인해 까먹는건 어쩔수 없나보다.

그리고 기록하는 곳이 바뀌었음에 따라 여기에도 마침 다시 외우기 위해 작성해둔다.


기본 테이블 설정

학번 (student_id) 이름 (name) 이메일 (email)
1 홍길동 hong@example.com
2 김철수 kim@example.com
3 이영희 lee@example.com

기본 키(Primary Key)

정의: 기본 키는 각 행을 고유하게 식별하며, 중복을 허용하지 않고 null 값이 허용되지 않습니다.

 

예시 테이블

학번 (student_id) 이름 (name) 이메일 (email)
1 홍길동 hong@example.com
2 김철수 kim@example.com
3 이영희 lee@example.com
  • 왜 기본 키인가?
    • 학번(student_id)은 각 학생을 고유하게 식별하며, 중복되지 않고 null 값이 없습니다. 그래서 기본 키로 사용됩니다.

후보 키(Candidate Key)

정의: 기본 키로 선택될 수 있는 속성(또는 속성들의 집합). 여러 개일 수 있으며, 그중 하나가 기본 키로 선택됩니다.

 

예시 테이블

학번 (student_id) 이름 (name) 이메일 (email)
1 홍길동 hong@example.com
2 김철수 kim@example.com
3 이영희 lee@example.com
  • 왜 후보 키인가?
    • 이메일(email)도 각 학생을 고유하게 식별할 수 있습니다. 즉, 이메일도 후보 키가 될 수 있지만, 학번(student_id)이 기본 키로 선택되었기 때문에 이메일은 대체 키가 됩니다.

대체 키(Alternate Key)

정의: 후보 키 중에서 기본 키로 선택되지 않은 키를 대체 키라고 합니다.

 

예시 테이블

학번 (student_id) 이름 (name) 이메일 (email)
1 홍길동 hong@example.com
2 김철수 kim@example.com
3 이영희 lee@example.com
  • 왜 대체 키인가?
    • 이메일(email)은 후보 키였지만, 학번(student_id)이 기본 키로 선택되었습니다. 따라서 이메일은 대체 키입니다.

외래 키(Foreign Key)

정의: 외래 키는 다른 테이블의 기본 키를 참조하여, 두 테이블 간의 관계를 나타냅니다.

 

예시 테이블 (학생 테이블)

학번 (student_id) 이름 (name) 이메일 (email)
1 홍길동 hong@example.com
2 김철수 kim@example.com
3 이영희 lee@example.com

 

예시 테이블 (수강 테이블)

수강번호 (course_id) 학생 학번 (student_id) 수강 과목 (course_name)
101 1 수학
102 2 과학
103 3 영어
  • 왜 외래 키인가?
    • 수강 테이블의 학생 학번(student_id)은 학생 테이블의 학번(student_id)을 참조합니다. 이를 통해 두 테이블은 연관 관계를 갖습니다.

슈퍼 키(Super Key)

정의: 테이블에서 한 행을 고유하게 식별할 수 있는 속성들의 집합입니다. 기본 키와 후보 키도 슈퍼 키에 포함됩니다.

 

예시 테이블

학번 (student_id) 이름 (name) 이메일 (email)
1 홍길동 hong@example.com
2 김철수 kim@example.com
3 이영희 lee@example.com
  • 왜 슈퍼 키인가?
    • 학번(student_id)이나 이메일(email)만으로도 학생을 고유하게 식별할 수 있습니다. 두 속성 모두 슈퍼 키가 됩니다.

복합 키(Composite Key)

정의: 두 개 이상의 속성을 결합하여 고유한 식별자를 만드는 키입니다.

 

예시 테이블 (복합 키 사용)

수강번호 (course_id) 학생 학번 (student_id) 수강 과목 (course_name)
101 1 수학
102 2 과학
103 3 영어
  • 왜 복합 키인가?
    • 수강번호(course_id)와 학생 학번(student_id)을 결합하여 한 행을 고유하게 식별할 수 있습니다. 이 두 속성의 조합이 복합 키가 됩니다.

'코딩 공부 > DB' 카테고리의 다른 글

[DB] 격리수준(Isolation)  (0) 2024.10.10
[SQL] 입양 시각 구하기(2) 문제  (0) 2024.08.12