외래키(Foreign Key) 총정리

외래키(Foreign Key)

데이터베이스 설계에서 외래키(Foreign Key)는 테이블 간의 관계를 정의하고 데이터의 무결성을 유지하는 데 중요한 역할을 합니다. 이 글에서는 외래키의 정의, 특징, 활용 방법, 그리고 설계 시 주의할 점에 대해 알아보겠습니다.

외래키(Foreign Key)란?

외래키는 한 테이블의 컬럼이 다른 테이블의 기본키(Primary Key)를 참조하도록 설정된 제약 조건입니다. 외래키는 테이블 간의 관계를 정의하며, 데이터의 무결성을 보장하는 데 사용됩니다.

쉽게 말해, 외래키는 “다른 테이블의 기본키를 참조하는 컬럼”으로, 테이블 간 데이터를 연결하는 다리 역할을 합니다.

외래키의 주요 특징

  1. 참조 무결성(Referential Integrity)

    • 외래키는 참조된 기본키 값이 존재하지 않으면 데이터를 삽입하거나 수정할 수 없도록 보장합니다.

  2. NULL 허용 여부

    • 외래키 컬럼은 NULL 값을 가질 수 있습니다. 이 경우, 해당 행은 참조 관계를 가지지 않음을 의미합니다.

  3. 테이블 간 관계 정의

    • 외래키는 “1:1”, “1:N”, “N:M” 관계를 정의하는 데 사용됩니다.

  4. 제약 조건 설정

    • 외래키는 테이블 생성 시 또는 ALTER TABLE 명령어를 통해 설정됩니다.

외래키 예제

예제: 학생과 수강신청 테이블

| 학생 테이블(Student) |

학번 (StudentID, PK) 이름 (Name)
1001 김철수
1002 이영희

| 수강신청 테이블(Enrollment) |

수강ID (EnrollmentID, PK) 학번 (StudentID, FK) 과목코드 (CourseCode)
1 1001 MATH101
2 1002 ENG102
  • 외래키 설정:

    • 수강신청 테이블학번(StudentID)학생 테이블학번(StudentID)을 참조합니다.

    • 수강신청 데이터를 삽입하려면, 학생 테이블에 존재하는 학번이어야만 합니다.

외래키의 활용

  1. 데이터 무결성 유지

    • 외래키는 참조 무결성을 통해 잘못된 데이터 입력을 방지합니다. 예를 들어, 수강신청에 없는 학번을 입력할 수 없습니다.

  2. 테이블 간 관계 정의

    • 외래키를 사용하면 테이블 간 관계를 명확히 정의하고 데이터를 효과적으로 연결할 수 있습니다.

  3. JOIN 연산 활용

    • 외래키로 연결된 테이블은 JOIN 연산을 통해 데이터를 쉽게 조회할 수 있습니다.

  4. 삭제 및 갱신 동작 정의

    • 외래키는 참조된 데이터가 삭제되거나 갱신될 때의 동작을 정의할 수 있습니다.

      • CASCADE: 참조된 데이터가 삭제되면 외래키를 가진 데이터도 함께 삭제됩니다.

      • SET NULL: 참조된 데이터가 삭제되면 외래키를 NULL로 설정합니다.

      • NO ACTION: 참조된 데이터가 삭제되지 않도록 차단합니다.

외래키 설계 시 주의할 점

  1. 참조 대상 확인

    • 외래키는 반드시 참조하려는 기본키 또는 유니크 키를 가리켜야 합니다.

  2. NULL 값 처리

    • 외래키 컬럼의 NULL 허용 여부를 상황에 맞게 설정해야 합니다.

  3. 성능 고려

    • 외래키 제약 조건은 데이터 삽입 및 삭제 시 성능에 영향을 미칠 수 있으므로, 대규모 데이터베이스에서는 성능 최적화가 필요합니다.

  4. CASCADE 사용 주의

    • CASCADE 옵션은 데이터 무결성을 유지하는 데 유용하지만, 잘못 사용하면 원치 않는 데이터 삭제를 초래할 수 있습니다.

외래키와 기본키의 차이

구분 기본키(Primary Key) 외래키(Foreign Key)
역할 테이블의 각 행을 고유하게 식별 다른 테이블의 기본키를 참조하여 테이블 간 관계를 정의
유일성 반드시 고유해야 함 중복될 수 있음
NULL 허용 허용되지 않음 허용될 수 있음
제약 관계 테이블 자체의 무결성을 유지 참조 무결성을 유지

결론

외래키는 테이블 간의 관계를 정의하고 데이터 무결성을 보장하는 중요한 도구입니다. 데이터베이스 설계 시 외래키를 적절히 활용하면, 데이터의 신뢰성과 관계성을 높일 수 있습니다. 설계 시 외래키의 특징과 제약 조건을 잘 이해하고 사용하세요.

RDBMS(Relational Database Management System)

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Loading...