Database Keys: A Comprehensive Guide

세계의 데이터베이스 관리에서, 키는 데이터를 조직化하고, 접근하며, 데이터의 무결성을 유지하는 중요한 역할을 한다. 경험丰富的 데이터베이스 관리자이든 데이터 관리의 여정을 시작하는 격인가, 다양한 유형의 데이터베이스 키를 이해하는 것이 필수적이다. 이 글에서 우리는 모든 다른 유형의 키들을 살펴볼 것이며, 그들의 목적과 효과적인 데이터베이스 설계에 어떻게 기여하는지 알아보자.

이 개념들을 설명하기 위해, 다음과 같은 간단한 대학 데이터베이스를 사용할 것입니다:

  1. 학생
  2. 과목
  3. 수강신청
  4. 교수
  5. 학과

각각의 키 유형을 살펴보고 우리의 대학 데이터베이스에서 어떻게 적용되는지 알아보자.

1. 주요 키(Primary Key)

정의

테이블의 각 로우를 고유하게 식별하는 열 또는 열 집합

특징

  • 각 레코드마다 고유해야 한다
  • `NULL` 값을 포함할 수 없다
  • 변경되지 않는(시간이 지나도 변하지 않는) 것이 좋다

예시

우리의 학생 테이블에서는 StudentID를 주요 키로 사용한다.

SQL

 


CREATE TABLE Students (

    StudentID INT PRIMARY KEY,

    FirstName VARCHAR(50),

    LastName VARCHAR(50),

    Email VARCHAR(100) UNIQUE

);

여기서 StudentID는 각 학생을 고유하게 식별하며, 두 학생이 같은 ID를 가지지 않게 한다.

2. 외래 키(Foreign Key)

정의

하나의 테이블의 열 또는 열 집합이 다른 테이블의 기본 키를 참조하는 것

목적

참조 정보의 일관성을 유지하고 테이블 사이의 관계를 생성하는 것

예시

우리의 Enrollments 테이블에서 StudentIDCourseID를 외국 키로 사용하고 있습니다.

SQL

 


CREATE TABLE Enrollments (

    EnrollmentID INT PRIMARY KEY,

    StudentID INT,

    CourseID INT,

    EnrollmentDate DATE,

    FOREIGN KEY (StudentID) REFERENCES Students(StudentID),

    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)

)

이 설계는 모든 등록 레코드가 유효한 학생과 과목과 관련づけられ는 것을 보장합니다.

3. 複合키

정의

레코드를 유일하게 识別하기 위해 두 개 이상의 열로 구성된 키

사용

하나의 열이 유일성을 보장할 수 없을 때

예시

우리의 Enrollments 테이블을 다시 설계하여 複合키를 사용할 수 있습니다:

SQL

 

CREATE TABLE Enrollments (

    StudentID INT,

    CourseID INT,

    EnrollmentDate DATE,

    Grade CHAR(2),

    PRIMARY KEY (StudentID, CourseID),

    FOREIGN KEY (StudentID) REFERENCES Students(StudentID),

    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)

);

여기에서 StudentIDCourseID의 조합이 복합 키로, 각 등록을 유일하게 识別합니다.

4. 候補키

정의

레코드를 유일하게 识別할 수 있는 최소한의 속성 집합

특징

  • 유일성이 있어야 합니다
  • NULL 값을 포함할 수 없습니다
  • 테이블은 여러 候補키를 가질 수 있습니다.

예시

우리의 Students 테이블에서, StudentIDEmail가 모두 학생을 고유하게 标识 할 수 있는 候補 키로 사용할 수 있습니다. StudentID를 기본 키로 선택했지만, Email도 대체 수요가 있었습니다.

5. Super Key

Definition

レコード를 고유하게 标识 할 수 있는 列の集合, 중요하지 않은 列也包括됨

Difference From Candidate Key

고유 标识 할 수 있는 것이 아닌 추가 속성을 포함 할 수 있음

Example

우리의 Students 테이블에서, 슈퍼 키는 다음과 같이 포함 할 수 있습니다

  • {StudentID, FirstName, LastName, Email}
  • {StudentID, Email}
  • {Email, FirstName, LastName}

이 모두 候補 키 (StudentID 또는 Email)를 포함하며 추가적인 필드를 포함합니다.

6. Alternate Key

Definition

기본 키로 선택되지 않은 候補 키

Purpose

레코드를 고유하게 标识 할 수 있는 대체 방법을 제공

Example

우리의 Students 테이블에서 StudentID를 기본 키로 선택한다면, Email가 대체 키가 되ます

SQL

 

CREATE TABLE Students (

    StudentID INT PRIMARY KEY,

    FirstName VARCHAR(50),

    LastName VARCHAR(50),

    Email VARCHAR(100) UNIQUE  -- This is an alternate key

);

UNIQUE 제약 조건이 Email에 적용되어 학생을 고유하게 标识 할 수 있도록 만듭니다.

7. Surrogate Key

정의

유일한 식별 목적으로 생성된 기계적 키

특성

  • 대부분 databases에서 자동으로 생성됨
  • 사업적 의미가 없음

예시

우리의 Courses 表에서, 자동 증가하는 CourseID를 사용할 수 있을 수 있음:

SQL

 

CREATE TABLE Courses (

    CourseID INT PRIMARY KEY AUTO_INCREMENT,

    CourseCode VARCHAR(10) UNIQUE,

    CourseName VARCHAR(100),

    Credits INT

);

CourseID는 대안 키이며, CourseCode는 더 자연스러운 식별자입니다.

8. 자연 키

정의

현실 세계에 이미 존재하는 데이터로 이루어진 키

장점

의미 있는 식별자를 제공함

demerit

시간 안에 변경될 수 있음

예시

Professors 表에서, 사회 보안 编号(尽管隐私原因不推荐使用)를 고려할 수 있습니다:

SQL

 

CREATE TABLE Professors (

    ProfessorID INT PRIMARY KEY,

    SSN CHAR(9) UNIQUE,  -- This could be used as a natural key

    FirstName VARCHAR(50),

    LastName VARCHAR(50),

    Department VARCHAR(50)

);

9. 복합 키

정의

두 개 이상의 열로 이루어진 키이며, 이 조합이 사업적 의미를 가질 수 있음

복합 키와의 차이

이往往 조합된 열들이 유ique 식별자 exclusive로 이해되는 것 이외에도 의미를 가질 수 있을 때 사용됨

예시

CourseOfferings 表에서:

SQL

 

CREATE TABLE CourseOfferings (

    CourseID INT,

    Semester CHAR(6),  -- e.g., '202301' for Spring 2023

    ProfessorID INT,

    RoomNumber VARCHAR(10),

    PRIMARY KEY (CourseID, Semester),

    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID),

    FOREIGN KEY (ProfessorID) REFERENCES Professors(ProfessorID)

);

과정ID학기의 조합은 복합 键(compound key)로, 특정 과정을 uniquely 标识(identify)하는 동시에 사업적 의미도 있다.

10. 간단한 键(Simple Key)

정의(Definition)

한 열(column)으로 구성되는 键(key)이다.

장점(Advantage)

実装(implementation)과 사용이 간단하다.

예(Example)

우리의 부서(Departments) 테이블에서:

SQL

 

CREATE TABLE Departments (

    DepartmentID INT PRIMARY KEY,

    DepartmentName VARCHAR(100) UNIQUE,

    Building VARCHAR(50),

    Budget DECIMAL(10, 2)

);

부서ID(DepartmentID)는 간단한 键(simple key)이다: 각 부서를 uniquely 标识(identify)하는 단일 열(column)이다.

11. 유니크 键(Unique Key)

정의(Definition)

열 또는 열 집합에 있는 모든 값이 유니크하다는 것을 보장하는 键(key)이다.

주요 键(Primary Key)와의 차이(Difference From Primary Key)

NULL 값을 허용할 수 있다(다른 조건이 명시되지 않았다면).

예(Example)

우리의 학생(Students) 테이블에서, 이메일(Email)는 유니크 键(unique key)의 예이다:

SQL

 

CREATE TABLE Students (

    StudentID INT PRIMARY KEY,

    FirstName VARCHAR(50),

    LastName VARCHAR(50),

    Email VARCHAR(100) UNIQUE  -- This is a unique key

);

UNIQUE 제약조건은 두 학생이 동일한 이메일 주소를 갖을 수 없도록 보장한다.

결론(Conclusion)

이러한 다양한 키 유형을 이해하는 것은 有效的 데이터베이스 설계과 관리를 위한 중요한 요소입니다. 각 유형의 키는 데이터 integrit y를 보장하는 것에서 表格外 관계를 설정하는 것까지 특정 목적을 充当中요합니다. 적절한 키를 精炼하고 적용하는 것으로, 효율적이고 신뢰할 수 있고 スケーラブルな 데이터베이스 시스템을 생성할 수 있습니다.

기억하십시오, 키의 선택은 데이터베이스의 성능, 유지 관리 및 실제 세계 관계를 정확하게 나타내는 능력에 중요한 영향을 미칠 수 있습니다. 어떤 키를 사용할지 결정하는 것은 항상 应用程序의 특정 需求과 데이터의 性质을 고려하십시오.

이 글은 데이터베이스 기본 시리즈의 일부입니다. 데이터베이스 관리와 설계에 대한 자세한 記事을 기대하십시오.

Source:
https://dzone.com/articles/database-keys-a-comprehensive-guide