목차

개념 요약
데이터베이스에서 키들 간의 포함 관계를 이해하는 것은 중요하다. 다음은 키들 간의 포함 관계에 대한 설명이다:
- 슈퍼키(Super Key)
- 슈퍼키는 테이블 내의 모든 행을 유일하게 식별할 수 있는 하나 이상의 속성으로 구성된다.
- 모든 후보키(기본키 + 대체키)는 슈퍼키의 부분집합이다. (S ⊇ C)
- 슈퍼키는 필요 이상의 속성을 포함할 수 있지만, 후보키는 최소성을 만족한다.
- 후보키(Candidate Key)
- 후보키는 슈퍼키 중 최소성을 만족하는 키이다. 즉, 키의 어떤 부분도 제거하면 식별 능력을 잃어버리는 최소한의 속성들로 구성된다.
- 후보키의 특수한 형태로 기본키와 대체키가 있으며 후보키는 기본키와 대체키를 합친 것과 같다. (C = P + A)
- 기본키는 선택된 후보키이며, 나머지 후보키들이 대체키가 된다.
- 기본키(Primary Key)
- 후보키 중에서 선택된 하나의 키로, 각 행을 유일하게 식별하는 데 사용된다.
- 기본키는 후보키의 일부이며, 선택되면 그 외의 후보키는 대체키가 된다.
- 대체키(Alternate Key)
- 기본키로 선택되지 않은 나머지 후보키들을 대체키라 한다.
- 이 키들은 기본키와 같은 유일성과 최소성을 갖지만, 실제로 기본키로 선택되지는 않았다.
- 외래키(Foreign Key)
- 외래키는 다른 테이블의 기본키를 참조하여 두 테이블 사이의 관계를 형성하는 키다.
- 외래키는 기본적으로 다른 테이블의 기본키에 의존한다. (F -> P)
이러한 포함 관계는 데이터베이스 설계와 데이터 무결성 관리에서 중요한 역할을 한다. 각 키의 선택과 사용은 테이블의 구조를 결정하고, 테이블 간의 관계를 정의하는 데 핵심적인 역할을 한다.

+------------------Super--------------------+
| +---------------Candidate----------------+|
| | +---------+ +------------------------+ ||
| | | | | | ||
| | | Primary | | Alternate | ||
| | | | | | ||
| | +---------+ +------------------------+ ||
| +--------------------------------------+ ||
+-------------------------------------------+
1. 슈퍼키(Super Key)
정의
테이블 내에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성(열)의 집합. 슈퍼키는 중복된 행이 없도록 테이블에서 각 행의 데이터를 고유하게 식별하는 데 필요한 모든 정보를 포함한다.
특징
- 유일성: 슈퍼키는 테이블의 모든 행을 유일하게 식별할 수 있어야 한다.
- 확장성: 슈퍼키는 필요 이상의 속성을 포함할 수 있으며, 이는 최소성을 만족하지 않는다는 것을 의미한다. 즉, 슈퍼키는 각 행을 구별하는 데 필요한 최소한의 속성보다 더 많은 속성을 포함할 수 있다.
예시
슈퍼키를 예시로 설명하기 위해 간단한 고객 테이블을 구성하겠다. 이 테이블에는 여러 속성이 포함되어 있으며, 이 중에서 슈퍼키를 구성할 수 있는 여러 조합을 확인할 수 있다.
고객 테이블:
고객 ID | 이름 | 이메일 | 주소 |
1 | 김철수 | cheolsu@example.com | 서울시 강남구 |
2 | 이영희 | younghi@example.com | 서울시 서초구 |
3 | 박지민 | jimin@example.com | 서울시 송파구 |
이 테이블에서 슈퍼키는 다음과 같은 조합이 될 수 있다:
- (고객 ID): 고객 ID만으로도 모든 행을 유일하게 식별할 수 있음.
- (고객 ID, 이름)
- (고객 ID, 이메일)
- (고객 ID, 주소)
- (고객 ID, 이름, 이메일)
- (고객 ID, 이름, 주소)
- (고객 ID, 이메일, 주소)
- (고객 ID, 이름, 이메일, 주소): 테이블의 모든 속성을 포함하는 슈퍼키.
위의 예에서 볼 수 있듯이, 고객 ID는 자체적으로 슈퍼키 역할을 할 수 있으며, 추가적인 속성과의 조합 또한 슈퍼키가 될 수 있다. 이러한 슈퍼키들은 모두 각 행을 유일하게 식별할 수 있는 조합을 포함하고 있지만, 최소성의 조건을 만족하지 않는 것들도 포함되어 있다.
중요성
슈퍼키는 데이터베이스의 무결성을 유지하는 데 필수적이며, 각 데이터가 고유하게 식별될 수 있도록 보장한다. 이를 통해 데이터의 정확성과 일관성이 유지되며, 데이터 중복을 방지할 수 있다.
상호 관계
슈퍼키의 개념은 후보키, 기본키, 대체키의 정의와 선택에 기초를 제공한다. 모든 후보키는 슈퍼키이지만, 모든 슈퍼키가 후보키는 아니라는 점에서 차이가 있다.
2. 후보키(Candidate Key)
정의
슈퍼키 중 불필요한 속성을 제거하여 최소한의 속성만으로 테이블의 모든 행을 유일하게 식별할 수 있는 속성의 집합. 후보키는 최소성과 유일성의 두 가지 조건을 모두 만족해야 한다.
특징
- 유일성: 후보키로 선택된 속성의 조합은 테이블 내 모든 행을 유일하게 식별할 수 있어야 한다.
- 최소성: 어떠한 속성도 제거할 수 없는, 즉 더 이상 줄일 수 없는 최소한의 속성들로 구성되어야 한다.
예시
고객 테이블:
고객 ID | 이름 | 이메일 | 주소 |
1 | 김철수 | cheolsu@example.com | 서울시 강남구 |
2 | 이영희 | younghi@example.com | 서울시 서초구 |
3 | 박지민 | jimin@example.com | 서울시 송파구 |
이 테이블에서의 후보키는 다음과 같다:
- (고객 ID): 각 고객을 유일하게 식별할 수 있으며, 더 이상 줄일 수 있는 속성이 없다.
- (이메일): 이메일도 각 고객을 유일하게 식별할 수 있는 속성이며, 다른 속성 없이도 유일성을 만족한다.
위의 예에서 고객 ID와 이메일은 각각 테이블의 모든 행을 유일하게 식별할 수 있으며, 불필요한 속성이 포함되어 있지 않다. 이러한 속성들은 후보키로서의 역할을 충분히 수행할 수 있다.
중요성
후보키는 데이터베이스 설계에서 매우 중요하며, 이는 기본키를 선정하는 기준이 되기도 한다. 또한, 데이터의 무결성을 보장하고 정확한 데이터 접근을 가능하게 하는 역할을 한다.
상호 관계
후보키는 슈퍼키 중 최소성을 만족하는 키를 의미하며, 이 중 하나가 최종적으로 기본키로 선정될 수 있다. 후보키의 개념은 기본키와 대체키 선정의 기반을 제공한다.
3. 기본키(Primary Key)
정의
기본키는 후보키 중에서 선택된 하나의 키로, 데이터베이스 내의 각 행을 유일하게 식별하는 역할을 한다. 기본키는 해당 테이블의 모든 행에 대해 고유하고, 절대적으로 불변해야 한다.
특징
- 유일성: 기본키로 설정된 속성의 값은 테이블 내의 모든 행을 통해 중복되어서는 안 된다.
- 불변성: 기본키의 값은 한 번 설정되면 변경되어서는 안 된다. 이는 데이터의 무결성을 유지하기 위함이다.
- 공백 값 불가: 기본키로 설정된 필드는 NULL 값을 가질 수 없다.
예시
고객 테이블:
고객 ID | 이름 | 이메일 | 주소 |
1 | 김철수 | cheolsu@example.com | 서울시 강남구 |
2 | 이영희 | younghi@example.com | 서울시 서초구 |
3 | 박지민 | jimin@example.com | 서울시 송파구 |
이 테이블에서 고객 ID는 기본키로 선택될 수 있다. 고객 ID는 테이블의 모든 행을 유일하게 식별하며, 중복되거나 NULL 값이 될 수 없다. 이 속성은 불변성을 유지하므로 데이터의 일관성과 무결성을 보장하는 데 중요한 역할을 한다.
중요성
기본키는 데이터베이스의 행을 식별하는 데 중심적인 역할을 하며, 외래키와의 관계 설정에서도 중요한 역할을 한다. 또한, 인덱싱, 쿼리 최적화, 데이터 무결성 보장 등 데이터베이스 관리의 핵심 요소로 기능한다.
상호 관계
기본키는 후보키 중에서 선택되며, 기본키가 아닌 나머지 후보키들은 대체키가 된다. 외래키와의 관계에서는 기본키가 다른 테이블의 외래키와 연결되어 관계를 형성하는 기반이 된다.
4. 대체키(Alternate Key)
정의
후보키 중 기본키로 선택되지 않은 키를 의미한다. 이 키들은 기본키의 역할을 수행할 수 있는 모든 특성을 갖추고 있지만, 실제로 기본키로 선정되지 않은 키들이다.
특징
- 유일성: 대체키도 후보키와 마찬가지로 테이블 내에서 모든 행을 유일하게 식별할 수 있는 속성을 가지고 있다.
- 비활성화: 기본키로 선택되지 않았기 때문에, 주로 보조 식별자로서의 역할을 하며, 필요에 따라 사용될 수 있다.
예시
고객 ID | 이름 | 이메일 | 주소 |
1 | 김철수 | cheolsu@example.com | 서울시 강남구 |
2 | 이영희 | younghi@example.com | 서울시 서초구 |
3 | 박지민 | jimin@example.com | 서울시 송파구 |
이 테이블에서 고객 ID가 기본키로 사용되고 있다면, 이메일은 대체키로 사용될 수 있다. 이메일은 각 고객을 유일하게 식별할 수 있는 속성이며, 불변성과 유일성을 가지고 있지만, 현재 기본키로 활성화되지 않았다.
중요성
대체키는 데이터베이스 설계에서 중요한 역할을 한다. 기본키가 손상되거나 사용할 수 없게 될 경우, 대체키가 기본키의 역할을 대신 수행할 수 있어 데이터 무결성 유지에 기여한다.
상호 관계
대체키는 후보키의 일부로서, 기본키와 동일한 기능을 할 수 있는 다른 후보키들을 의미한다. 이러한 키들은 데이터베이스 설계에서 중요한 보조 역할을 하며, 특정 상황에서 데이터를 식별하는 데 사용될 수 있다.
이제 외래키에 대해 설명하겠다.
5. 외래키(Foreign Key)
정의
외래키는 한 테이블의 필드(또는 필드 집합)로서 다른 테이블의 기본키를 참조하는 키이다. 외래키는 데이터베이스 내의 두 테이블 사이의 관계를 설정하고, 관련 데이터 간의 무결성을 유지하는 데 사용된다.
특징
- 참조성: 외래키는 다른 테이블의 기본키를 참조하여 두 테이블 간의 관계를 형성한다.
- 무결성 유지: 외래키를 통해 참조 무결성을 보장한다. 즉, 참조되는 테이블의 기본키 값이 변경되거나 삭제될 경우, 외래키를 가진 테이블에도 그 영향이 반영되어 데이터의 일관성을 유지한다.
- NULL 허용: 외래키는 NULL 값을 허용할 수 있다. 이는 참조하는 테이블의 특정 행과의 관계가 설정되지 않았을 수 있음을 의미한다.
예시
고객 테이블:
고객 | ID 이름 |
1 | 김철수 |
2 | 이영희 |
3 | 박지민 |
주문 테이블:
주문 번호 | 고객 ID | 주문 내용 |
101 | 1 | 상품 A |
102 | 2 | 상품 B |
103 | 1 | 상품 C |
여기서 주문 테이블의 고객 ID는 고객 테이블의 고객 ID를 참조하는 외래키이다. 이 외래키를 통해 각 주문이 어떤 고객에게 속하는지 식별할 수 있으며, 고객 데이터와 주문 데이터 간의 관계를 정의한다.
중요성
외래키는 데이터베이스의 관계형 구조를 유지하는 데 필수적이다. 테이블 간의 관계를 통해 데이터 간의 일관성을 유지하고, 쿼리의 효율성을 높이며, 데이터 무결성을 보장한다.
상호 관계
외래키는 기본키와 직접적인 관계를 가진다. 외래키가 참조하는 테이블의 기본키에 의존하여 그 유효성이 결정되며, 두 테이블 간의 데이터 무결성과 관계를 관리하는 핵심적인 도구로 작용한다.
'DBMS > SQL' 카테고리의 다른 글
[데이터베이스] SQL 치팅시트: DDL, DML, DCL 커맨드 목록 (0) | 2024.04.21 |
---|---|
[데이터베이스] 정규화(Normalization) (1NF - 5NF) (0) | 2024.04.15 |
[데이터베이스] DB용어 - [완전, 이행, 부분] 함수(적) 종속 (0) | 2024.04.14 |
[데이터베이스] 무결성 제약 조건 (Integrity Constraints : IC) (0) | 2024.03.21 |
[Database] 트랜잭션과 ACID 속성 (0) | 2024.03.19 |