IT 지식 (기술면접 대비)

Primary Key와 Foreign Key의 차이와 각각의 역할

KoesJin 2025. 4. 29. 10:27

⭐️ Primary Key와 Foreign Key의 차이 및 역할

데이터베이스 구축 시 각 데이터 테이블을 잘 관리하기 위해 하나의 고유한 데이터를 지정하고,

이에 파생되는 다른 데이터를 관리할줄 알아야하는데, 여기서 나오는 Primary Key와 Foreign Key에 대해서 알아보겠다.

 

🔥 Primary Key (기본 키)

테이블의 각 행(row)을 유일하게 식별하기 위해 설정하는 컬럼이다.

 

중복될 수 없고, NULL(빈값)이 될 수 없다.

 

🍀 특징 

1. 고유성 : 모든 레코드(행)는 고유한 Primary Key를 가져야 한다. -> 중복 x

 

2. NOT NULL : Primary Key 컬럼은 NULL을 허용하지 않는다.

 

3. 기본 정렬기준 : 일부 DBMS에서 Primary Key를 기준으로 정렬 하기도 함

 

4. 일반적으로 숫자 사용 : 인덱싱 및 검색 속도를 위해 정수형 컬럼을 주로 사용한다.

 

[ Primary Key 예제 ]

CREATE TABLE Student (
    student_id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

 

Primary key는 테이블 생성시에 위 코드와 같이 컬럼레벨 (컬럼 옆에 작성),

테이블레벨 ( 컬럼 맨 아래 작성 - 현재 코드로 보면 age INT 아래 작성), ALTER로 수정할때 Primary Key를 줄 수 있다.

 

Primary key를 주면 Student_id 컬럼은 모든 학생을 고유하게 구분하는 값이 된다.

 


 

🔥 Foreign Key (외래 키)

 

외래키란 다른 테이블의 Primary key를 참조하는 컬럼이다.

 

테이블 간 관계를 설정할때 사용되며, 참조 무결성을 유지하기 위해 필수적이다.

 

* 참조 무결성 : 관계형 데이터베이스에서 두 테이블 간의 참조 관계가 올바르게 유지되도록 보장하는 데이터

무결성 규칙.

 

🍀 특징 

1. 참조관계 설정 : 한 테이블의 컬럼이 다른 테이블의 Primary key를 참조

 

2. NULL 허용 가능 : Foreign key 컬럼은 NULL일 수 있다. -> 관계가 없을 수도 있으니까.

 

3. 중복 허용 : 여러 행이 같은 Foreign key 값을 가질 수 있다.

 

4. 삭제 / 수정 규칙 가능 : 부모 테이블의 값 변경시 연쇄 반응 설정 가능. CASCADE 등이 있다.

 

[ Foreign key 예제 ]

CREATE TABLE Enrollment (
    enrollment_id INT PRIMARY KEY,
    student_id INT,
    course_id INT,
    FOREIGN KEY (student_id) REFERENCES Student(student_id)
);

 

Foreign key는 테이블 레벨 방식으로 작성하는 것을 추천 -> 가독성을 위해

 

FOREIGIN KEY (현재 테이블에서 참조받을 컬럼) REFERENCES 참조 테이블(참조할 컬럼)으로 작성

 

Enrollment 테이블의 student_id는 Student 테이블의 student_id를 참조한다.

 

이렇게 Foreign key를 설정하게 되면 테이블 간 관계가 형성된 것이다.

 


 

[ Primary Key Vs Foreign Key ]

구분 Primary Key Foreign Key
역할 행(Row)을 고유하게 식별 다른 테이블의 행을 참조
중복 허용 불가 허용
NULL 허용 불가 허용
데이터 소유 자신의 테이블 데이터 다른 테이블 Primary Key 참조
제약 조건 고유성 + NOT NULL 참조 무결성 유지
사용목적 데이터의 유일성 보장 테이블 간 관계 형성