관계(Relationship)

본 게시글은 소프트웨어 마에스트로 과정에서 김태완 멘토님의 특강을 듣고 내용을 보충하여 작성한 내용입니다.


Relation vs Relationship

  • Relation : 서로 다른 속성으로 관계형 모델 기반의 데이터베이스의 테이블 혹은 Entity (테이블)
  • Relationship : 관계 모델 기반 데이터베이스에서 두 실체 사이의 연관성을 의미 (두 테이블이 연결되는 방식)

관계(Relationship)의 종류

image

  RDBMS의 테이블을 생성하고, 각 테이블마다 관계를 설정하기 위해 일반적으로 외래키를 사용한다. 외래키를 통해 다른 테이블과 같은 키를 공유하고 이를 이용하여 Join을 통해 관계를 이용하는 방식을 사용한다. 외래키를 사용하여 테이블 간 관계를 정립하기 위해서는 크게 식별 관계비식별 관계 전략이 있다. 아래에서 알아보자.

식별 관계

  • 부모 테이블의 기본키 혹은 유니크키를 자식 테이블이 자신의 기본키로 사용하는 관계
  • 부모 테이블의 키가 자신의 기본키에 포함되기 때문에 반드시 부모 테이블에 존재하는 데이터만 자식 테이블의 기본키로 입력할 수 있음
  • ERD 상에서는 실선으로 표시
  • 부모 테이블에 자식 테이블이 종속됨

비식별 관계

  • 부모 테이블의 기본키 혹은 유니크키를 자신의 기본키로 사용하지 않고, 외래키로 사용하는 관계
  • 자식 데이터는 부모 데이터가 없어도 독립적으로 생성될 수 있음
  • 부모와의 의존성을 줄일 수 있어 조금 더 자유로운 데이터 생성과 수정이 가능

각각의 전략으로 테이블을 구성할 때

  4륜 자동차를 생성하려고 하는 상황을 생각해보자. 우선 식별 관계에서는 다음과 같이 데이터를 넣을 수 있다.

자동차_아이디(PK)이름가격
123453륜차10000

  바퀴의 데이터는 다음과 같이 입력할 수 있다. 바퀴 데이터는 아래 4개의 키가 묶여 복합 기본키를 가진다.

자동차_아이디(PK, FK)바퀴_위치(PK)
12345“FRONT_LEFT”
12345“FRONT_RIGHT”
12345“BACK_LEFT”
12345“BACK_RIGHT”

  이어서 참고 : https://deveric.tistory.com/108

Reference