데이터베이스 식별, 비식별 관계

식별 관계는 각각의 관계 테이블의 FK를 PK로 지정하는 경우이고

비식별 관계는 FK로 지정해 조인을 하는 방식이다

식별관계에서는 FK의 변경에 따른 PK 업데이트가 번거로워질 수 있고,

비식별 관계에서는 기본적으로 데이터를 특정하기 위해선 join을 여러번 사용해야한다는 단점이있다

  • 실선(Identifying): 식별 관계

    부모테이블의 PK가 자식테이블의 FK/PK가 되는 경우

    부모가 있어야 자식이 생기는 경우

    ex) Issue 테이블과 IssueComment 테이블이 있을 경우, IssueComment는 Issue가 존재해야지만 있을 수 있음

  • 점선(Non-Identifying): 비식별 관계

    부모테이블의 PK가 자식테이블의 일반속성이 되는 경우

    부모가 없어도 자식이 생기는 경우

    ex) User 테이블과 Process가 있을 경우, User가 담당 프로세스가 있다고 하더라도, Process는 User없이도 존재할 수 있음

필수적 비식별 관계: 외래키에 NULL을 허용하지 않는다.

선택적 비식별 관계: 외래키에 NULL을 허용한다.