포스트

08. 식별 관계, 비식별 관계

식별 관계와 비식별 관계의 차이를 정리했다.

08. 식별 관계, 비식별 관계

이 글은 김영한님의 인프런 강의 실전 데이터베이스 설계 1편을 참고하여 정리한 글입니다.

1. 관계의 종류

두 관계를 가르는 기준은 하나다.

  • 부모 테이블의 기본키를 물려받아 자식 테이블의 기본키 일부로 사용하는가? → 식별 관계
  • 부모 테이블의 기본키를 단순히 일반 컬럼으로만 사용하는가? → 비식별 관계

2. 식별 관계

자식을 식별하는 데 부모가 사용되는 관계를 뜻한다. → 강한 관계, 약한 엔티티

  • 약한 엔티티는 스스로 존재할 수 없기 때문에, 부모의 식별자를 가져와야 완전해진다.
  • 부모 테이블의 기본키를 외래키로 받아, 자식 테이블의 기본키와 함께 복합키로 사용한다.

3. 비식별 관계

자식을 식별하는 데 부모가 사용되지 않고 자식만으로도 식별할 수 있는 관계를 뜻한다. → 약한 관계, 강한 엔티티

  • 부모와의 연결은 여러 관계 중 하나일 뿐, 자식의 존재를 정의하지 않는다.
  • 부모 테이블의 기본키를 외래키로 받아 일반 컬럼으로 사용한다. 자식의 기본키는 대리키로 별도 구성한다.

4. 식별 관계 - 일대다

1) 장점

  • 단순하고 명확하다. comment_id를 알면 댓글을 조회하고, 수정하고, 삭제할 수 있다. 기본키가 단순하여 관리가 쉽다.
  • 유연하다. 댓글을 다른 게시글로 옮길 때, board_id만 변경하면 끝이다. 관계가 느슨하기 때문에 변경에 유연하다.
  • ORM 친화적이다. 단순한 대리키 구조는 자연스럽고 효율적이다.

    3) 단점

  • 기본키만 봐서는 부모와의 관계를 직관적으로 알기 어렵다. (큰 단점은 아니다.)