안녕하세요.
이번 시간에는 Database와 Power BI에서 주로 Modeling을 위해 사용하는
"Key" 종류에 대해 한 번 소개 해보려고 합니다.

Key 종류
KEY 의 종류는 대표적으로 7개가 있습니다.
종류 | 고유성 | Null 허용 | 역할 |
Primary Key(기본 키) | O | X | 행을 고유하게 식별 |
Foreign Key(외래 키) | X | O | 다른 테이블과의 관계 정의 |
Composite Key(복합 키) | O | X | 여러 열을 결합해 고유성 보장 |
Unique Key(유니크 키) | O | O | 고유값을 가지는 열 (기본 키 외 다른 키) |
Candidate Key(후보 키) | O | X | 기본 키로 선택이 가능한 키 |
Alternate Key(대체 키) | O | X | 후보 키 중 기본 키로 선택되지 않은 키 |
Super Key(슈퍼 키) | O | X | 고유성을 보장하는 모든 키 조합 |
1. Primary Key (기본 키)
● 테이블 내에서 각 행을 고유하게 식별하기 위한 열 입니다.
● 반드시 고유 값(Unique)이어야 하며, Null 값을 가질 수 없습니다.
EX) 학생 테이블에서 학생 ID는 각 행을 고유하게 식별하는 기본 키가 될 수 있다.
- 학생 테이블
StudentID | Name | Age |
101 | 홍길동 | 20 |
102 | 이순신 | 21 |
2. Foreign Key (외래 키)
● 다른 테이블의 기본 키를 참조해 두 테이블 간의 관계를 정의하는데 사용합니다.
● 데이터 무결성을 보장하고 관계형 모델을 형성합니다.
EX) 학생 테이블과 등록 테이블 간의 관계에서 등록 테이블의 학생ID는 외래 키가 될 수 있다.
- 등록 테이블
StudentID | Course | Grade |
101 | 수학 | A |
102 | 과학 | B |
3. Compisite Key (복합 키)
● 두 개 이상의 열을 결합하여 고유한 키를 만드는 경우를 의미합니다.
● 개별 열로는 고유하지 않지만, 결합하면 고유성을 보장합니다.
● 특히 Power BI에서 고유한 키가 없을 경우 DAX을 활용하여 복합 키를 생성하고 Modeling 하는 경우도 매우 많습니다.
EX) 수업 테이블에서 학생ID와 강의ID를 결합하여 복합 키로 설정할 수 있다.
- 수업 테이블
StudentID | ClassID | Teacher |
101 | A01 | Mr. Lee |
101 | A02 | Mr. Park |
102 | A01 | Mr. Lee |
4. Unique Key (유니크 키)
● 기본 키와 유사하게 고유성을 보장하지만, 테이블 당 여러 개가 존재할 수 있습니다.
● Null 값을 허용할 수 있습니다.
EX) 유저 테이블에서 E-mail 열이 유일한 값을 가져야 하는 경우 E-mail은 유니크 키로 설정될 수 있습니다.
- 유저 테이블
ID | Username | |
1 | User1 | abc@naver.com |
2 | User2 | qwe@naver.com |
5. Candidate Key (후보 키)
● 기본 키로 사용할 수 있는 열이나 열들의 집합을 의미합니다.
● 한 테이블에 여러 후보 키가 있을 수 있고, 그중 하나가 기본 키로 선택이 됩니다.
EX) 학생2 테이블에서 학생ID와 E-mail 모두 후보키가 될 수 있음.
- 학생2 테이블
StudentID | Name | |
101 | 홍길동 | aaa@naver.com |
102 | 이순신 | bbb@naver.com |
6. Alternate Key (대체 키)
● 후보 키 중 기본 키로 선택되지 않은 나머지 키를 의미합니다.
EX) 학생2 테이블에서 학생ID가 기본 키 라면 E-mail은 대체 키가 될 수 있습니다.
7. Super Key (슈퍼 키)
● 테이블의 행을 고유하게 식별할 수 있는 열이나 열들의 집합으로, 기본 키를 포함합니다.
● 슈퍼 키는 고유성이 보장은 되나, 최소성은 보장하지 않습니다.
EX) 학생2 테이블에서 학생ID, 이름, E-mail을 포함하는 모든 키 조합은 슈퍼 키가 될 수 있습니다.
다소 생소하고 어렵지만
기본적으로 데이터를 다루고, Modeling을 하기 위해서는 꼭 필요한 개념입니다 :)
'Power BI 글모음 > SQL-Power BI' 카테고리의 다른 글
SQL/PowerBI(동작관계) (2) | 2024.12.29 |
---|---|
SQL(Structured Query Language)? (5) | 2024.12.24 |
SQL-Power BI의 관계 (0) | 2024.12.23 |