- 데이터베이스에는 Key라는 개념이 존재합니다.
이 글에서는 데이터베이스의 슈퍼 키(Super Key), 후보 키(Candidate Key), 주요 키(Primary Key),
대체 키(Substitute Key), 외래 키(Foreign Key), 복합 키(Composite Key)와 같은 개념을 알아 보겠습니다.
1) 슈퍼 키(Super Key)
- 데이터베이스에서 슈퍼 키란 하나의 행(row)을 식별할 수 있는 키를 의미합니다.
이를 다른 표현으로 유일성(uniqueness)를 가졌다고 합니다.
유일성이란 하나의 키로 행을 유일하게 식별할 수 있는 성질을 의미합니다.
예시를 통해 이해해 보겠습니다.
- 위의 테이블을 보면 학번, 주민번호, 이름+나이 로 유일한 행을 식별할 수 있습니다.
따라서 학번, 주민번호, 이름+나이는 슈퍼 키가 될 수 있습니다.
또한 학번+주민번호, 학번+이름+나이, 주민번호+이름+나이도 유일한 행을 식별할 수 있으므로
슈퍼 키가 될 수 있습니다.
2) 후보 키(Candidate Key)
- 후보 키는 슈퍼 키 중에서 더 이상 쪼개질 수 없는 키를 의미합니다.
즉, 후보 키는 유일성(uniqueness)과 최소성(minimality)을 동시에 만족시켜야 합니다.
위의 테이블을 기준으로 다시 설명하면,
학번, 주민번호, 이름+나이는 더 이상 쪼개질 수 없으므로, 후보 키입니다.
반면, 학번+주민번호는 학번과 주민번호로 쪼개질 수 있고,
학번+이름+나이는 학번과 이름+나이로 쪼개질 수 있으므로 후보 키가 아닙니다.
3) 주요 키(Primary Key)
- 주요 키는 후보 키 중에서 선택한 main key를 의미합니다.
기본 키는 테이블 당 한 개만 지정해야 하며,
null 값을 가질 수 없고, 중복된 값을 가질 수 없습니다.
4) 대체 키(Substitute Key)
- 대체 키는 후보 키가 2개 이상일 경우, 주요 키로 선정되지 못하고 남은 키들을 의미합니다.
5) 슈퍼 키, 후보 키, 주요 키, 대체 키 간의 관계
- 여기까지 슈퍼 키, 후보 키, 주요 키, 대체 키의 관계를 벤 다이어그램으로 나타내면
다음과 같습니다.
- 즉, 후보 키는 슈퍼 키의 부분 집합이고, 후보 키는 기본 키와 대체 키로 구성되며,
기본 키와 대체 키는 여집합 관계에 있습니다.
6) 외래 키(Foreign Key)
- 외래 키는 다른 테이블의 주요 키(Primary Key)를 참조하는 칼럼을 의미합니다.
아래 그림을 통해서 외래 키를 이해해보겠습니다.
- 그림에서 Products 테이블에는 ProductID라는 주요 키(PK)가 존재하고,
이를 Orders 테이블에서 ProductID 칼럼으로 참조하므로, Orders 테이블의 ProductID는 외래 키(FK)입니다.
마찬가지로 Customers 테이블에는 CustomerID라는 주요 키(PK)가 존재하고,
이를 Orders 테이블에서 CustomerID 칼럼으로 참조하므로, Orders 테이블의 CustomerID는 외래 키(FK)입니다.
7) 복합 키(Composite Key)
- 복합 키는 후보 키(Candidate Key) 중에서 두 개 이상의 칼럼으로 구성된 것을 의미합니다.
위의 그림을 다시 한 번 참조하여 설명하겠습니다.
- 이 그림에서 후보 키는 학번, 주민번호, 이름+나이 입니다.
이 중에서 이름+나이는 2개의 칼럼으로 구성되었으므로 복합 키이고,
학번과 주민번호는 1개의 칼럼으로 구성되었으므로 복합 키가 아닙니다.
참고
기출로 대비하는 개발자 전공 면접
면접을 위한 CS 전공 지식 노트
'데이터베이스' 카테고리의 다른 글
Inner Join vs Outer Join (0) | 2022.08.01 |
---|---|
데이터베이스 기본 (0) | 2022.08.01 |
RDB vs NoSQL (0) | 2022.07.26 |