본문 바로가기
스프링

식별관계와 비식별관계 차이점

by 순원이 2024. 4. 25.

PK(기본키)

  • 테이블에서 각행을 구별하기 위한 키
  • 각행을 구별하기 위함이기 때문에 Null 이면 안되고 Unique해야 한다.
  • 노란키가 기본키이다.

 

FK(외래키)

  • 타테이블을 참조하기 위한 키
  • N:1 관계에서는 N이 FK를 갖는다.
  • 파란키가 외래키이다.

각 테이블마다 관계를 설정할 때 외래키를 사용합니다. 외래키를 사용하여 join할 수 잇습니다.외래 키를 사용하여 테이블 간 관계를 정립해 줄 때 사용하는 전략은 크게 식별 관계, 비식별 관계 전략이 있습니다.

 

식별관계

  • 주문상품 테이블에서 파란키인 주문Key, 상품Key가 외래키이자 기본키가 된다.
  • 외래키가 기본키도 되었으니, null이 되면 안된다. 
    • null이 되면 안된다는 소리는 상품과 주문이 있어야 주문 상품을 생성할 수 있다는 것이다.
    • 즉, 주문상품의 데이터정합성을 지킬 수 있다.

 

비식별관계

  • 외래키를 따로 갖고 자신만의 기본키를 갖는다.
  • 상품과 주문이 없어도 주문상품을 생성할 수 있다.
    • 즉, 주문상품의 데이터 정합성이 보장이 안되고 따로 검증해야 한다.
  • 요구사항에 따른 쉬운 변화 때문에 식별관계보다는 비식별관계를 추천한다

 

 

식별관계와 비식별관계의 장단점

식별 관계의 장점

  • 데이터의 정합성 유지를 DB에서 한번 더 할 수 있다
  • 자식 테이블에 데이터가 존재한다면 부모 데이터도 반드시 존재한다고 보장할 수 있다

식별 관계의 단점

  • 요구사항이 변경되었을 경우 구조 변경이 어렵다

비식별 관계의 장점

  • 변경되는 요구사항을 유동적으로 수용할 수 있다
  • 부모 데이터와 독립적인 자식 데이터를 생성할 수 있다

비식별 관계의 단점

  • 데이터 정합성을 지키기 위해서는 별도의 비즈니스 로직이 필요하다.
  • 자식 데이터가 존재해도 부모 데이터가 존재하지 않을 수 있다
  • 즉, 데이터 무결성을 보장하지 않는다