데이터베이스 모델링 관계 정리

BlackHan·2024년 2월 2일
0
post-custom-banner

일기장에 기억하기 쉽게 간단히 정리

테이블 관계

1 : M 관계

한쪽이 관계를 맺은 쪽의 여러 객체를 갖는 것

부모와 자식 관계로 볼 수 있다. ➡ 부모의 PK는 자식의 FK가 된다.
자식은 없을 수 있으나, 부모는 존재해야 한다.
즉 부모 없는 자식은 없다 ➡ 오류 발생

1 : M 재귀적 관계

1:M 관계가 너무 많아서 복잡해질 때 자신을 참조하는 관계를 나타내서 표시하는 것
하나의 테이블에 PK와 FK가 있게 설계한다.
PK와 부모 ID를 FK로 두고 재귀적 관계를 설정한다.

셀프 조인이라고도 불림.
본인의 상위부서를 확인할 수 있게 한다.

최상위 부서는 상위부서가 존재하지 않기에 null을 허용한다.


M : N 관계

  1. 부모 관계가 아니어야 한다. ➡ 마스터 테이블이 서로 독립적으로 존재할 수 있어야 한다.
  2. 어느 쪽에서 봐도 다대다 관계가 성립한다.

헷갈리면, 테이블을 만들어 본다. !

예를 들어, 유저가 있고 유저가 팀에 가입하여 팀을 형성한다고 생각해 보자.

  1. 먼저 팀은 여러 유저를 가질 수 있다.
    이는 마치 부모 관계 인것 처럼 보인다.. 그렇다면 1 : M 관계로 설정할 수 있다. 그런데 만약에 유저는 여러팀에 가입할 수 있다면 어떻게 될까?위 테이블처럼 team테이블에서도, user테이블에서도 중복이 발생한다.
    이게 M:N 관계이고 관계 테이블을 만듦으로써 연결시켜 준다.
    join이라는 테이블을 만들어서 양쪽 마스터 테이블의 PK를 FK로 받는다.
    이로써 가입한 날짜를 속성으로 추가할 수도 있으며, 양쪽 테이블을 중복 없이 연결시킨다.

상속형 PK와 독립형 PK

위 관계 테이블에서 join_id가 없고 team_id와 user_id를 복합키로 사용하면 상속형 PK라고 한다. 이는 복합키의 장점을 살리며 join_id를 따로 만들 필요가 없게 한다.

독립형 PK는 위에 그림 그대로이다.

profile
Slow-starter
post-custom-banner

0개의 댓글