728x90
데이터베이스에서 키(Key)는 테이블 내의 튜플(행)을 식별하기 위해 사용하는 하나 이상의 속성(열)을 말합니다. 키는 데이터를 유일하게 식별하거나 참조 무결성을 유지하는 데 사용됩니다. 키의 종류와 그 특징을 정리해 보겠습니다.
1. 슈퍼키(Super Key)
- 정의: 테이블 내에서 각 튜플을 유일하게 식별할 수 있는 하나 이상의 속성 집합.
- 특징: 유일성은 보장되지만, 최소성을 요구하지는 않음. 여러 속성으로 이루어질 수 있음.
- 예시: 주민등록번호, 학생ID + 이름, 학번 + 이메일 등.
2. 후보키(Candidate Key)
- 정의: 슈퍼키 중에서 유일성과 최소성을 동시에 만족하는 속성 집합.
- 특징:
- 유일성: 테이블 내에서 각 튜플을 고유하게 식별할 수 있어야 함.
- 최소성: 후보키는 최소한의 속성으로 구성되어야 하며, 더 이상 속성을 제거하면 유일성을 잃음.
- 예시: 주민등록번호, 학번 (중복되지 않으며 최소한의 속성으로 구성된 키).
3. 기본키(Primary Key)
- 정의: 후보키 중에서 테이블의 대표 키로 선정된 것. 기본키는 각 튜플을 고유하게 식별하는 역할을 함.
- 특징:
- 유일성과 최소성을 만족.
- Null 값을 가질 수 없음.
- 하나의 테이블에 하나의 기본키만 설정 가능.
- 예시: 학생 테이블에서 학번, 사용자 테이블에서 사용자ID.
4. 대체키(Alternate Key)
- 정의: 후보키 중에서 기본키로 선택되지 않은 나머지 키들.
- 특징: 유일성과 최소성을 만족하지만, 기본키로 선택되지 않은 후보키.
- 예시: 주민등록번호와 학번이 후보키일 때, 학번이 기본키로 선택되면 주민등록번호는 대체키가 됨.
5. 외래키(Foreign Key)
- 정의: 다른 테이블의 기본키를 참조하는 속성. 두 테이블 간의 참조 무결성을 유지하는 데 사용됨.
- 특징:
- 외래키는 참조하는 테이블의 기본키 또는 후보키와 연결됨.
- 참조된 값만을 가질 수 있으며, 참조된 테이블에서 존재하지 않는 값은 외래키로 설정할 수 없음.
- 예시: 학생 테이블의 학과ID가 학과 테이블의 학과코드를 참조하는 경우, 학과ID는 외래키임.
6. 복합키(Composite Key)
- 정의: 두 개 이상의 속성을 결합하여 만든 키.
- 특징: 개별 속성만으로는 유일성을 만족하지 못하지만, 결합하면 유일성을 만족할 때 사용.
- 예시: 학생ID + 강의ID와 같이 두 속성을 결합하여 하나의 키로 사용하는 경우.
7. 유일키(Unique Key)
- 정의: 유일성을 가진 키로, 중복된 값을 가질 수 없음. 다만, NULL 값을 허용함(기본키와의 차이점).
- 특징:
- 하나의 테이블에 여러 개의 유일키를 설정할 수 있음.
- NULL 값은 허용되지만 중복된 값은 허용되지 않음.
- 예시: 이메일, 휴대전화번호 등이 유일키로 설정될 수 있음.
키의 역할과 중요성
- 데이터 무결성 보장: 키를 통해 테이블의 데이터를 유일하게 식별할 수 있어 중복을 방지하고 데이터 무결성을 유지합니다.
- 참조 무결성 유지: 외래키를 통해 테이블 간의 관계를 정의하고, 데이터가 일관되게 유지되도록 합니다.
- 효율적인 데이터 검색: 기본키나 유일키는 데이터 검색 시 인덱스로 작동하여 효율적인 검색을 지원합니다.
요약
- 슈퍼키(Super Key): 유일성을 만족하는 속성 집합.
- 후보키(Candidate Key): 유일성과 최소성을 만족하는 속성 집합.
- 기본키(Primary Key): 후보키 중에서 선택된 대표 키, Null 불가.
- 대체키(Alternate Key): 기본키로 선택되지 않은 후보키.
- 외래키(Foreign Key): 다른 테이블의 기본키를 참조하는 속성.
- 복합키(Composite Key): 두 개 이상의 속성으로 구성된 키.
- 유일키(Unique Key): 유일성을 만족하지만, Null 값을 허용하는 키.
이 키 개념을 정확하게 이해하는 것은 데이터베이스의 설계와 데이터 무결성 유지에 매우 중요합니다.
728x90
'Category > 정보처리기사' 카테고리의 다른 글
XOR(배타적 논리합, Exclusive OR)이란? (0) | 2024.10.12 |
---|---|
파일 구조(File Structures)란? (7) | 2024.10.12 |
V-모델 (V-Model)이란? (0) | 2024.10.12 |
화이트박스 테스트 (White-Box Testing)란? (0) | 2024.10.12 |
블랙박스 테스트(Black-box testing)란? (2) | 2024.10.12 |