ballqs 님의 블로그
[DB] 키의 종류 본문
수 없이 공부를 했지만 세월에 인해 까먹는건 어쩔수 없나보다.
그리고 기록하는 곳이 바뀌었음에 따라 여기에도 마침 다시 외우기 위해 작성해둔다.
기본 테이블 설정
학번 (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 |