Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL

DBMS의 다양한 키 유형 완벽 정리: 후보 키부터 외래 키까지

데이터베이스 관리 시스템(DBMS)에서 키(Key)는 테이블 내의 데이터 행을 고유하게 식별하고, 테이블 간의 관계를 설정하는 데 필수적인 역할을 합니다. DBMS에서 사용되는 대표적인 키 유형은 다음과 같습니다.

DBMS의 주요 키 유형

1. 후보 키 (Candidate Key)

후보 키는 테이블에서 최소성(Minimality)을 만족하면서 모든 데이터 행을 고유하게 식별할 수 있는 속성(또는 속성 집합)을 의미합니다. 하나의 테이블에는 여러 개의 후보 키가 존재할 수 있습니다.

2. 기본 키 (Primary Key)

기본 키는 여러 후보 키 중에서 하나가 선택되어 해당 테이블의 대표 식별자 역할을 하는 키입니다. 기본 키는 테이블의 모든 데이터 행을 고유하게 식별할 수 있어야 하며, 중복 값과 NULL 값을 가질 수 없습니다.

3. 슈퍼 키 (Super Key)

슈퍼 키는 기본 키를 포함하는 상위 집합(Superset)입니다. 슈퍼 키는 기본 키를 포함한 속성들의 집합으로, 테이블의 모든 데이터 행을 고유하게 식별할 수 있습니다. 단, 슈퍼 키에는 불필요한 속성이 포함될 수 있어 최소성은 보장되지 않습니다.

4. 복합 키 (Composite Key)

테이블의 어떤 단일 속성으로도 각 행을 고유하게 식별할 수 없는 경우, 두 개 이상의 속성을 조합하여 키를 만들 수 있습니다. 이렇게 여러 속성을 결합하여 구성한 키를 복합 키라고 합니다.

5. 대체 키 (Secondary Key)

후보 키 중 하나만 기본 키로 선택되며, 선택되지 않은 나머지 후보 키들은 대체 키(또는 보조 키)라고 부릅니다. 대체 키는 기본 키가 될 자격이 있지만 선택되지 않은 키입니다.

6. 외래 키 (Foreign Key)

외래 키는 한 테이블의 속성 값이 다른 테이블의 기본 키 역할을 하는 경우를 말합니다. 외래 키는 두 테이블을 연결하는 관계(Relationship)를 형성하는 데 유용합니다. 외래 키 컬럼에는 데이터를 신중하게 입력해야 하며, 잘못된 데이터가 입력되면 두 테이블 간의 관계가 무효화될 수 있습니다.

예시를 통한 키 유형 이해하기

다음 세 개의 테이블을 통해 각 키 유형을 구체적으로 살펴보겠습니다.

<STUDENT> 테이블

Student_NumberStudent_NameStudent_PhoneSubject_Number
1Andrew661592728410
2Sara658365486520
3Harry464756746310

<SUBJECT> 테이블

Subject_NumberSubject_NameSubject_Instructor
10DBMSKorth
20AlgorithmsCormen
30AlgorithmsLeiserson

<ENROLL> 테이블

Student_NumberSubject_Number
110
220
310

슈퍼 키 (Super Key)

<STUDENT> 테이블의 슈퍼 키는 다음과 같습니다.

{Student_Number}
{Student_Phone}
{Student_Number, Student_Name}
{Student_Number, Student_Phone}
{Student_Number, Subject_Number}
{Student_Phone, Student_Name}
{Student_Phone, Subject_Number}
{Student_Number, Student_Name, Student_Phone}
{Student_Number, Student_Phone, Subject_Number}
{Student_Number, Student_Name, Subject_Number}
{Student_Phone, Student_Name, Subject_Number}

<SUBJECT> 테이블의 슈퍼 키는 다음과 같습니다.

{Subject_Number}
{Subject_Number, Subject_Name}
{Subject_Number, Subject_Instructor}
{Subject_Number, Subject_Name, Subject_Instructor}
{Subject_Name, Subject_Instructor}

<ENROLL> 테이블의 슈퍼 키는 다음과 같습니다.

{Student_Number, Subject_Number}

후보 키 (Candidate Key)

  • <STUDENT> 테이블: {Student_Number} 또는 {Student_Phone}
  • <SUBJECT> 테이블: {Subject_Number} 또는 {Subject_Name, Subject_Instructor}
  • <ENROLL> 테이블: {Student_Number, Subject_Number}

기본 키 (Primary Key)

  • <STUDENT> 테이블: {Student_Number}
  • <SUBJECT> 테이블: {Subject_Number}
  • <ENROLL> 테이블: {Student_Number, Subject_Number}

복합 키 (Composite Key)

  • <ENROLL> 테이블: {Student_Number, Subject_Number}

대체 키 (Secondary Key)

  • <STUDENT> 테이블: {Student_Phone}
  • <SUBJECT> 테이블: {Subject_Name, Subject_Instructor}

외래 키 (Foreign Key)

{Subject_Number}는 <STUDENT> 테이블의 외래 키이면서 동시에 <SUBJECT> 테이블의 기본 키입니다. 이처럼 외래 키는 두 테이블 간의 참조 관계를 형성하여 데이터의 일관성을 유지하는 데 중요한 역할을 합니다.