일기장에 기억하기 쉽게 간단히 정리
부모와 자식 관계로 볼 수 있다. ➡ 부모의 PK는 자식의 FK가 된다.
자식은 없을 수 있으나, 부모는 존재해야 한다.
즉 부모 없는 자식은 없다 ➡ 오류 발생

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

최상위 부서는 상위부서가 존재하지 않기에 null을 허용한다.
헷갈리면, 테이블을 만들어 본다. !
예를 들어, 유저가 있고 유저가 팀에 가입하여 팀을 형성한다고 생각해 보자.
이는 마치 부모 관계 인것 처럼 보인다.. 그렇다면 1 : M 관계로 설정할 수 있다. 그런데 만약에 유저는 여러팀에 가입할 수 있다면 어떻게 될까?
위 테이블처럼 team테이블에서도, user테이블에서도 중복이 발생한다.
join이라는 테이블을 만들어서 양쪽 마스터 테이블의 PK를 FK로 받는다.위 관계 테이블에서 join_id가 없고 team_id와 user_id를 복합키로 사용하면 상속형 PK라고 한다. 이는 복합키의 장점을 살리며 join_id를 따로 만들 필요가 없게 한다.
독립형 PK는 위에 그림 그대로이다.