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

DBMS 기본 키(Primary Key)와 외래 키(Foreign Key)의 차이점 완벽 정리

데이터베이스를 설계할 때 가장 중요한 개념 중 하나가 바로 기본 키(Primary Key)외래 키(Foreign Key)입니다. 이번 글에서는 DBMS에서 두 키가 어떤 역할을 하며, 어떤 점에서 서로 다른지 자세히 알아보겠습니다.

기본 키(Primary Key)란?

기본 키는 테이블 내에서 각 레코드를 고유하게 식별하기 위해 사용되는 핵심 제약 조건입니다. 주요 특징은 다음과 같습니다.

  • 특정 열(column)의 데이터가 중복 없이 유일(unique)하도록 보장합니다.
  • 관계형 데이터베이스에서 레코드를 고유하게 식별하는 역할을 합니다.
  • 하나의 테이블에는 기본 키가 오직 하나만 허용됩니다.
  • 'UNIQUE' 제약 조건과 'NOT NULL' 제약 조건이 결합된 형태입니다.
  • 따라서 기본 키 열에는 NULL 값을 저장할 수 없습니다.
  • 부모 테이블에서 기본 키 값은 다른 테이블이 참조하고 있기 때문에 임의로 삭제할 수 없습니다.
  • 임시 테이블(temporary table)에는 암묵적으로(implicitly) 정의될 수 있습니다.

기본 키 생성 예제 (SQL)

CREATE TABLE table_name (
col_name int NOT NULL PRIMARY KEY,
...
);

외래 키(Foreign Key)란?

외래 키는 한 테이블의 열이 다른 테이블의 기본 키를 참조하면서 두 테이블 사이의 관계를 연결해 주는 제약 조건입니다. 주요 특징은 다음과 같습니다.

  • 관계형 데이터베이스 테이블에서 하나의 열 또는 여러 열의 그룹으로 구성됩니다.
  • 두 테이블 간의 데이터를 연결하는 링크(link) 역할을 합니다.
  • 다른 테이블의 기본 키에 대응되는(analogous) 필드입니다.
  • 하나의 테이블에 여러 개의 외래 키를 정의할 수 있습니다.
  • 중복된 값을 포함할 수 있습니다.
  • NULL 값을 허용합니다.
  • 자식(child) 테이블에서는 해당 값을 삭제할 수 있습니다.
  • 로컬 또는 전역 임시 테이블에는 외래 키 제약 조건을 정의할 수 없습니다.

외래 키 생성 예제 (SQL)

CREATE TABLE table_name (
col_name int NOT NULL PRIMARY KEY,
col_name int FOREIGN KEY REFERENCES Persons(col_name)
);

기본 키 vs 외래 키 비교 요약

구분기본 키 (Primary Key)외래 키 (Foreign Key)
목적레코드를 고유하게 식별테이블 간 관계 연결
허용 개수테이블당 1개테이블당 여러 개 가능
NULL 허용불가가능
중복 값허용 안 됨허용됨
값 삭제부모 테이블에서 삭제 불가자식 테이블에서 삭제 가능
임시 테이블암묵적 정의 가능정의 불가

마무리

기본 키는 테이블 내 데이터의 고유성과 무결성을 보장하는 장치이고, 외래 키는 테이블 간의 참조 무결성(referential integrity)을 유지하며 관계를 형성하는 장치입니다. 두 키의 차이를 정확히 이해하면 더 안정적이고 효율적인 데이터베이스 스키마를 설계할 수 있습니다.