기본 키 PK vs 외래 키 FK

박영준·2023년 7월 1일
0

DB

목록 보기
30/41

Primary Key, Foreign Key 에 대한 설명 은 개발자 면접에서 자주 나오는 질문 중의 하나!

1. 기본 키 (PK, Primary Key)

  • 테이블 내에서 유일하게 존재하는 값의 조합을 설정해서, 중복된 데이터가 테이블에 삽입되는 것을 방지

    • 유일해야하므로, 중복된 값을 가질 수 X
    • 유일한 값이므로, 데이터를 매우 빠르게 찾을 수 O
  • 해당 필드가 NOT NULL 과 UNIQUE 제약 조건의 특징을 모두 가지게 된다.

    • 반드시 존재하므로, NOT NULL
    • 유일한 값이므로, UNIQUE

2. 외래 키 (FK, Foreign Key)

  • 다른 기본 키를 참조하는 속성 or 속성들의 집합

    • 참조 관계의 기본 키와 같은 속성을 가짐

    • 데이터가 새롭게 추가될 때, 외래 키에 해당하는 값이 외래 키가 참조하는 테이블에 존재하는지를 확인

    • 하나의 테이블을 다른 테이블에 의존하게 만듦 (두 테이블을 연결하는 다리 역할)

      • 외래 키가 포함된 테이블 = 자식 테이블
      • 외래 키 값을 제공하는 테이블 = 부모 테이블
  • 데이터의 무결성을 보장

    • 하나의 테이블에서 중복된 데이터가 삽입되는 것을 방지
    • 외래 키를 가지는 테이블이 참조하는 기준 테이블의 열은 반드시 PK, UNIQUE 제약조건이 설정되어 있어야 한다.
  • DB 는 무조건 다(N)쪽이 외래 키를 갖는다

    • 외래 키가 있는 쪽이 연관관계의 주인
      • 연관관계의 주인 O : 두 객체 사이에서 '조회, 저장, 수정, 삭제' 가능
      • 연관관계의 주인 X : '조회'만 가능

3. PK & FK

1) 1:1 연관 관계 (일대일)

각 전화번호가 단 한 명의 유저와 연결되어 있고, 그 반대도 동일하다면, Users 테이블과 Phonebook 테이블은 1:1 관계

2) 1:N 연관 관계 (일대다)

한 쌍의 부모(1) 中 여러 명의 자식(N)들이 어떤 부모에 속해 있는지 표현해야 한다.
따라서, 부모 테이블의 PK 를 자식 테이블에 FK 로 집어 넣어 관계를 표현한다.

(즉, 부모 테이블(1)에서는 내 자식들이 누구인지 정보를 넣을 필요가 없고,
자식 테이블(N)에서만 각각의 자식들이 자신의 부모 정보(FK)를 넣음으로써 관계를 표현)

3) N:M 연관 관계 (다대다)

N:M 관계는 관계를 가진 양쪽 엔티티 모두에서 1:N 관계를 가지는 것을 말한다. (서로가 서로를 1:N 관계로 보고 있는 것)

  • 학원:학생 = 1:N
  • 학생:학원 = 1:M
  • 따라서, 학원:학생 = N:M


N:M 관계는 서로가 서로를 1:N 관계, 1:M 관계로 갖고 있기 때문에, 서로의 PK 를 자신의 외래키 컬럼으로 갖고 있으면 된다.
일반적으로 N:M 관계는 두 테이블의 대표키를 컬럼으로 갖는 또 다른 테이블(중간 테이블)을 생성해서 관리한다.


참고: [DATABASE] 기본키(PK), 외래키(FK)
참고: [DB] 1:1, 1:N, N:M 관계

profile
개발자로 거듭나기!

0개의 댓글