데이터베이스 식별, 비식별 관계
식별 관계는 각각의 관계 테이블의 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을 허용한다.